diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 00000000000..3996d7a755b --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,5 @@ +# Run this command to always ignore formatting commits in `git blame` +# git config blame.ignoreRevsFile .git-blame-ignore-revs + +# Formatted all code using Prettier instead of tsfmt +ebcdf8ad0bb5bcb3efa679211709671716b892ba diff --git a/.gitattributes b/.gitattributes index 06763cfc8e4..3660b951595 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18,4 +18,11 @@ yarn.lock merge=binary # https://mirrors.edge.kernel.org/pub/software/scm/git/docs/gitattributes.html # suggests that this might interleave lines arbitrarily, but empirically # it keeps added chunks contiguous -CHANGELOG.md merge=union \ No newline at end of file +CHANGELOG.md merge=union + +# Mark some JSON files containing test data as generated so they are not included +# as part of diffs or language statistics. +extensions/ql-vscode/src/stories/variant-analysis/data/*.json linguist-generated + +# Always use LF line endings, also on Windows +* text=auto eol=lf diff --git a/.github/actions/create-pr/action.yml b/.github/actions/create-pr/action.yml new file mode 100644 index 00000000000..c4b9ca4d3d9 --- /dev/null +++ b/.github/actions/create-pr/action.yml @@ -0,0 +1,82 @@ +name: Create a PR if one doesn't exists +description: > + Creates a commit with the current changes to the repo, and opens a PR for that commit. If + any PR with the same title exists, then this action is marked as succeeded. +inputs: + commit-message: + description: > + The message for the commit to be created. + required: true + + title: + description: > + The title of the PR. If empty, the title and body will be determined from the commit message. + default: '' + required: false + + body: + description: > + The body (description) of the PR. The `title` input must be specified in order for this input to be used. + default: '' + required: false + + head-branch: + description: > + The name of the branch to hold the new commit. If an existing open PR with the same head + branch exists, the new branch will be force-pushed to that PR instead of creating a new PR. + required: true + + base-branch: + description: > + The base branch to target with the new PR. + required: true + + token: + description: | + The GitHub token to use. It must have enough privileges to + make API calls to create and close pull requests. + required: true + +runs: + using: composite + steps: + - name: Update git config + shell: bash + run: | + git config --global user.email "github-actions@github.com" + git config --global user.name "github-actions[bot]" + - name: Commit, Push and Open PR + shell: bash + env: + COMMIT_MESSAGE: ${{ inputs.commit-message }} + HEAD_BRANCH: ${{ inputs.head-branch }} + BASE_BRANCH: ${{ inputs.base-branch }} + GH_TOKEN: ${{ inputs.token }} + TITLE: ${{ inputs.title }} + BODY: ${{ inputs.body }} + run: | + set -exu + if ! [[ $(git diff --stat) != '' ]]; then + exit 0 # exit early + fi + # stage changes in the working tree + git add . + git commit -m "$COMMIT_MESSAGE" + git checkout -b "$HEAD_BRANCH" + # CAUTION: gits history changes with the following + git push --force origin "$HEAD_BRANCH" + PR_JSON=$(gh pr list --state open --json number --head "$HEAD_BRANCH") + if [[ $? -ne 0 ]]; then + echo "Failed to fetch existing PRs." + exit 1 + fi + PR_NUMBERS=$(echo $PR_JSON | jq '. | length') + if [[ $PR_NUMBERS -ne 0 ]]; then + echo "Found existing open PR: $PR_NUMBERS" + exit 0 + fi + gh pr create --head "$HEAD_BRANCH" --base "$BASE_BRANCH" --title "$TITLE" --body "$BODY" --assignee ${{ github.actor }} --draft + if [[ $? -ne 0 ]]; then + echo "Failed to create new PR." + exit 1 + fi diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index 670a1461ab4..d2a6507d76b 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -2,10 +2,14 @@ name: "CodeQL config" queries: - name: Run standard queries uses: security-and-quality + - name: Experimental queries + uses: security-experimental - name: Run custom javascript queries uses: ./.github/codeql/queries paths: - ./extensions/ql-vscode + - ./.github/workflows + - ./.github/actions paths-ignore: - '**/node_modules' - '**/build' diff --git a/.github/codeql/queries/ProgressBar.qll b/.github/codeql/queries/ProgressBar.qll new file mode 100644 index 00000000000..289140f6f6d --- /dev/null +++ b/.github/codeql/queries/ProgressBar.qll @@ -0,0 +1,16 @@ +import javascript + +class WithProgressCall extends CallExpr { + WithProgressCall() { this.getCalleeName() = "withProgress" } + + predicate usesToken() { exists(this.getTokenParameter()) } + + Parameter getTokenParameter() { result = this.getArgument(0).(Function).getParameter(1) } + + Property getCancellableProperty() { result = this.getArgument(1).(ObjectExpr).getPropertyByName("cancellable") } + + predicate isCancellable() { + this.getCancellableProperty().getInit().(BooleanLiteral).getBoolValue() = + true + } +} diff --git a/.github/codeql/queries/assert-no-vscode-dependency.ql b/.github/codeql/queries/assert-no-vscode-dependency.ql new file mode 100644 index 00000000000..578ee90d351 --- /dev/null +++ b/.github/codeql/queries/assert-no-vscode-dependency.ql @@ -0,0 +1,37 @@ +/** + * @name Unwanted dependency on vscode API + * @kind path-problem + * @problem.severity error + * @id vscode-codeql/assert-no-vscode-dependency + * @description The modules stored under `common` should not have dependencies on the VS Code API + */ + +import javascript + +class VSCodeImport extends ImportDeclaration { + VSCodeImport() { this.getImportedPath().getValue() = "vscode" } +} + +class CommonFile extends File { + CommonFile() { + this.getRelativePath().regexpMatch(".*/src/common/.*") and + not this.getRelativePath().regexpMatch(".*/vscode/.*") + } +} + +Import getANonTypeOnlyImport(Module m) { + result = m.getAnImport() and not result.(ImportDeclaration).isTypeOnly() +} + +query predicate edges(AstNode a, AstNode b) { + getANonTypeOnlyImport(a) = b or + a.(Import).getImportedModule() = b +} + +from Module m, VSCodeImport v +where + m.getFile() instanceof CommonFile and + edges+(m, v) +select m, m, v, + "This module is in the 'common' directory but has a transitive dependency on the vscode API imported $@", + v, "here" diff --git a/.github/codeql/queries/assert-pure.ql b/.github/codeql/queries/assert-pure.ql deleted file mode 100644 index cd840d50232..00000000000 --- a/.github/codeql/queries/assert-pure.ql +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @name Unwanted dependency on vscode API - * @kind problem - * @problem.severity error - * @id vscode-codeql/assert-pure - * @description The modules stored under `pure` and tested in the `pure-tests` - * are intended to be "pure". - */ -import javascript - -class VSCodeImport extends ASTNode { - VSCodeImport() { - this.(Import).getImportedPath().getValue() = "vscode" - } -} - -from Module m, VSCodeImport v -where - m.getFile().getRelativePath().regexpMatch(".*src/pure/.*") and - m.getAnImportedModule*().getAnImport() = v -select m, "This module is not pure: it has a transitive dependency on the vscode API imported $@", v, "here" diff --git a/.github/codeql/queries/progress-not-cancellable.ql b/.github/codeql/queries/progress-not-cancellable.ql new file mode 100644 index 00000000000..3ed2a2a1d92 --- /dev/null +++ b/.github/codeql/queries/progress-not-cancellable.ql @@ -0,0 +1,20 @@ +/** + * @name Using token for non-cancellable progress bar + * @kind problem + * @problem.severity warning + * @id vscode-codeql/progress-not-cancellable + * @description If we call `withProgress` without `cancellable: true` then the + * token that is given to us should be ignored because it won't ever be cancelled. + * This makes the code more confusing as it tries to account for cases that can't + * happen. The fix is to either not use the token or make the progress bar cancellable. + */ + +import javascript +import ProgressBar + +from WithProgressCall t +where not t.isCancellable() and t.usesToken() +select t, + "The $@ should not be used when the progress bar is not cancellable. Either stop using the $@ or mark the progress bar as cancellable.", + t.getTokenParameter(), t.getTokenParameter().getName(), t.getTokenParameter(), + t.getTokenParameter().getName() diff --git a/.github/codeql/queries/qlpack.yml b/.github/codeql/queries/qlpack.yml index cd19c0327bc..b6781dadb39 100644 --- a/.github/codeql/queries/qlpack.yml +++ b/.github/codeql/queries/qlpack.yml @@ -1,3 +1,4 @@ name: vscode-codeql-custom-queries-javascript version: 0.0.0 -libraryPathDependencies: codeql-javascript +dependencies: + codeql/javascript-queries: "*" diff --git a/.github/codeql/queries/token-not-used.ql b/.github/codeql/queries/token-not-used.ql new file mode 100644 index 00000000000..947138f00a9 --- /dev/null +++ b/.github/codeql/queries/token-not-used.ql @@ -0,0 +1,18 @@ +/** + * @name Don't ignore the token for a cancellable progress bar + * @kind problem + * @problem.severity warning + * @id vscode-codeql/token-not-used + * @description If we call `withProgress` with `cancellable: true` but then + * ignore the token that is given to us, it will lead to a poor user experience + * because the progress bar will appear to be canceled but it will not actually + * affect the background process. Either check the token and respect when it + * has been cancelled, or mark the progress bar as not cancellable. + */ + +import javascript +import ProgressBar + +from WithProgressCall t +where t.isCancellable() and not t.usesToken() +select t, "This progress bar is $@ but the token is not used. Either use the token or mark the progress bar as not cancellable.", t.getCancellableProperty(), "cancellable" diff --git a/.github/codeql/queries/unique-command-use.ql b/.github/codeql/queries/unique-command-use.ql new file mode 100644 index 00000000000..a882250e601 --- /dev/null +++ b/.github/codeql/queries/unique-command-use.ql @@ -0,0 +1,159 @@ +/** + * @name A VS Code command should not be used in multiple locations + * @kind problem + * @problem.severity warning + * @id vscode-codeql/unique-command-use + * @description Using each VS Code command from only one location makes + * our telemetry more useful, because we can differentiate more user + * interactions and know which features of the UI our users are using. + * To fix this alert, new commands will need to be made so that each one + * is only used from one location. The commands should share the same + * implementation so we do not introduce duplicate code. + * When fixing this alert, search the codebase for all other references + * to the command name. The location of the alert is an arbitrarily + * chosen usage of the command, and may not necessarily be the location + * that should be changed to fix the alert. + */ + +import javascript + +/** + * The name of a VS Code command. + */ +class CommandName extends string { + CommandName() { exists(CommandUsage e | e.getCommandName() = this) } + + /** + * In how many ways is this command used. Will always be at least 1. + */ + int getNumberOfUsages() { result = count(this.getAUse()) } + + /** + * Get a usage of this command. + */ + CommandUsage getAUse() { result.getCommandName() = this } + + /** + * Get the canonical first usage of this command, to use for the location + * of the alert. The implementation of this ordering of usages is arbitrary + * and the usage given may not be the one that should be changed when fixing + * the alert. + */ + CommandUsage getFirstUsage() { + result = + max(CommandUsage use | + use = this.getAUse() + | + use + order by + use.getFile().getRelativePath(), use.getLocation().getStartLine(), + use.getLocation().getStartColumn() + ) + } +} + +/** + * Matches one of the members of `BuiltInVsCodeCommands` from `extensions/ql-vscode/src/common/commands.ts`. + */ +class BuiltInVSCodeCommand extends string { + BuiltInVSCodeCommand() { + exists(TypeAliasDeclaration tad | + tad.getIdentifier().getName() = "BuiltInVsCodeCommands" and + tad.getDefinition().(InterfaceTypeExpr).getAMember().getName() = this + ) + } +} + +/** + * Represents a single usage of a command, either from within code or + * from the command's definition in package.json + */ +abstract class CommandUsage extends Locatable { + abstract string getCommandName(); +} + +/** + * A usage of a command from the typescript code, by calling `executeCommand`. + */ +class CommandUsageCallExpr extends CommandUsage, CallExpr { + CommandUsageCallExpr() { + this.getCalleeName() = "executeCommand" and + this.getArgument(0).(StringLiteral).getValue().matches("%codeQL%") and + not this.getFile().getRelativePath().matches("extensions/ql-vscode/test/%") + } + + override string getCommandName() { result = this.getArgument(0).(StringLiteral).getValue() } +} + +/** + * A usage of a command from the typescript code, by calling `CommandManager.execute`. + */ +class CommandUsageCommandManagerMethodCallExpr extends CommandUsage, MethodCallExpr { + CommandUsageCommandManagerMethodCallExpr() { + this.getCalleeName() = "execute" and + this.getReceiver().getType().unfold().(TypeReference).getTypeName().getName() = "CommandManager" and + this.getArgument(0).(StringLiteral).getValue().matches("%codeQL%") and + not this.getFile().getRelativePath().matches("extensions/ql-vscode/test/%") + } + + override string getCommandName() { result = this.getArgument(0).(StringLiteral).getValue() } +} + +/** + * A usage of a command from any menu that isn't the command palette. + * This means a user could invoke the command by clicking on a button in + * something like a menu or a dropdown. + */ +class CommandUsagePackageJsonMenuItem extends CommandUsage, JsonObject { + CommandUsagePackageJsonMenuItem() { + exists(this.getPropValue("command")) and + exists(PackageJson packageJson, string menuName | + packageJson + .getPropValue("contributes") + .getPropValue("menus") + .getPropValue(menuName) + .getElementValue(_) = this and + menuName != "commandPalette" + ) + } + + override string getCommandName() { result = this.getPropValue("command").getStringValue() } +} + +/** + * Is the given command disabled for use in the command palette by + * a block with a `"when": "false"` field. + */ +predicate isDisabledInCommandPalette(string commandName) { + exists(PackageJson packageJson, JsonObject commandPaletteObject | + packageJson + .getPropValue("contributes") + .getPropValue("menus") + .getPropValue("commandPalette") + .getElementValue(_) = commandPaletteObject and + commandPaletteObject.getPropValue("command").getStringValue() = commandName and + commandPaletteObject.getPropValue("when").getStringValue() = "false" + ) +} + +/** + * Represents a command being usable from the command palette. + * This means that a user could choose to manually invoke the command. + */ +class CommandUsagePackageJsonCommandPalette extends CommandUsage, JsonObject { + CommandUsagePackageJsonCommandPalette() { + this.getFile().getBaseName() = "package.json" and + exists(this.getPropValue("command")) and + exists(PackageJson packageJson | + packageJson.getPropValue("contributes").getPropValue("commands").getElementValue(_) = this + ) and + not isDisabledInCommandPalette(this.getPropValue("command").getStringValue()) + } + + override string getCommandName() { result = this.getPropValue("command").getStringValue() } +} + +from CommandName c +where c.getNumberOfUsages() > 1 and not c instanceof BuiltInVSCodeCommand +select c.getFirstUsage(), + "The " + c + " command is used from " + c.getNumberOfUsages() + " locations" diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 40995e963e1..901fb8ab76f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,15 +8,39 @@ updates: labels: - "Update dependencies" ignore: - - dependency-name: "*" - update-types: ["version-update:semver-minor", "version-update:semver-patch"] + # @types/node is related to the version of VS Code we're supporting and should + # not be updated to a newer version of Node automatically. However, patch versions + # are unrelated to the Node version, so we allow those. + - dependency-name: "@types/node" + update-types: ["version-update:semver-major", "version-update:semver-minor"] + groups: + octokit: + patterns: + - "@octokit/*" + update-types: + - "minor" + - "patch" + storybook: + patterns: + - "@storybook/*" + - "storybook" + testing-library: + patterns: + - "@testing-library/*" + typescript-eslint: + patterns: + - "@typescript-eslint/*" - package-ecosystem: "github-actions" - directory: ".github" + directory: "/" + schedule: + interval: "weekly" + day: "thursday" # Thursday is arbitrary + labels: + - "Update dependencies" + - package-ecosystem: docker + directory: "extensions/ql-vscode/test/e2e/docker" schedule: interval: "weekly" day: "thursday" # Thursday is arbitrary labels: - "Update dependencies" - ignore: - - dependency-name: "*" - update-types: ["version-update:semver-minor", "version-update:semver-patch"] diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 3a059d1dd3b..9450a9529a5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -5,8 +5,4 @@ Replace this with a description of the changes your pull request makes. -## Checklist - -- [ ] [CHANGELOG.md](https://github.com/github/vscode-codeql/blob/main/extensions/ql-vscode/CHANGELOG.md) has been updated to incorporate all user visible changes made by this pull request. -- [ ] Issues have been created for any UI or other user-facing changes made by this pull request. -- [ ] _[Maintainers only]_ If this pull request makes user-facing changes that require documentation changes, open a corresponding docs pull request in the [github/codeql](https://github.com/github/codeql/tree/main/docs/codeql/codeql-for-visual-studio-code) repo and add the `ready-for-doc-review` label there. +Remember to update the [changelog](https://github.com/github/vscode-codeql/blob/main/extensions/ql-vscode/CHANGELOG.md) if there have been user-facing changes! diff --git a/.github/workflows/build-storybook.yml b/.github/workflows/build-storybook.yml new file mode 100644 index 00000000000..7081110f34e --- /dev/null +++ b/.github/workflows/build-storybook.yml @@ -0,0 +1,57 @@ +name: Build Storybook + +on: + workflow_dispatch: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + push: + branches: + - main + +permissions: {} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + + - name: Install dependencies + run: | + cd extensions/ql-vscode + npm ci + shell: bash + + - name: Build Storybook + run: | + cd extensions/ql-vscode + npm run build-storybook + shell: bash + + - name: Upload to GitHub Pages + id: deployment + uses: actions/upload-pages-artifact@v4 + with: + path: extensions/ql-vscode/storybook-static + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + permissions: + id-token: write + pages: write + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/bump-cli.yml b/.github/workflows/bump-cli.yml new file mode 100644 index 00000000000..e4942083da3 --- /dev/null +++ b/.github/workflows/bump-cli.yml @@ -0,0 +1,51 @@ +name: Bump CLI version +on: + workflow_dispatch: + pull_request: + branches: [main] + paths: + - .github/actions/create-pr/action.yml + - .github/workflows/bump-cli.yml + - extensions/ql-vscode/scripts/bump-supported-cli-versions.ts + schedule: + - cron: 0 0 */14 * * # run every 14 days + +permissions: + contents: write + pull-requests: write + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json + - name: Install dependencies + working-directory: extensions/ql-vscode + run: | + npm ci + shell: bash + - name: Bump CLI + working-directory: extensions/ql-vscode + id: bump-cli + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + npx vite-node scripts/bump-supported-cli-versions.ts + shell: bash + - name: Commit, Push and Open a PR + uses: ./.github/actions/create-pr + with: + token: ${{ secrets.GITHUB_TOKEN }} + base-branch: main + head-branch: github-action/bump-cli + commit-message: Bump CLI version from ${{ steps.bump-cli.outputs.PREVIOUS_VERSION }} to ${{ steps.bump-cli.outputs.LATEST_VERSION }} for integration tests + title: Bump CLI Version to ${{ steps.bump-cli.outputs.LATEST_VERSION }} for integration tests + body: > + Bumps CLI version from ${{ steps.bump-cli.outputs.PREVIOUS_VERSION }} to ${{ steps.bump-cli.outputs.LATEST_VERSION }} diff --git a/.github/workflows/cli-test.yml b/.github/workflows/cli-test.yml new file mode 100644 index 00000000000..69ea995be7c --- /dev/null +++ b/.github/workflows/cli-test.yml @@ -0,0 +1,158 @@ +name: Run CLI tests +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * *' + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths: + - .github/workflows/cli-test.yml + - extensions/ql-vscode/src/codeql-cli/** + - extensions/ql-vscode/src/language-support/** + - extensions/ql-vscode/src/query-server/** + - extensions/ql-vscode/supported_cli_versions.json + - extensions/ql-vscode/src/variant-analysis/run-remote-query.ts + +jobs: + find-nightly: + name: Find Nightly Release + runs-on: ubuntu-latest + permissions: + contents: read + outputs: + url: ${{ steps.get-url.outputs.nightly-url }} + steps: + - name: Get Nightly Release URL + id: get-url + env: + GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' + shell: bash + # This workflow step gets an unstable testing version of the CodeQL CLI. It should not be used outside of these tests. + run: | + LATEST=`gh api repos/dsp-testing/codeql-cli-nightlies/releases --jq '.[].tag_name' --method GET --raw-field 'per_page=1'` + echo "nightly-url=https://github.com/dsp-testing/codeql-cli-nightlies/releases/download/$LATEST" >> "$GITHUB_OUTPUT" + + set-matrix: + name: Set Matrix for cli-test + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Set the variables + id: set-variables + run: echo "cli-versions=$(cat ./extensions/ql-vscode/supported_cli_versions.json | jq -rc)" >> $GITHUB_OUTPUT + outputs: + cli-versions: ${{ steps.set-variables.outputs.cli-versions }} + + cli-test: + name: CLI Test + runs-on: ${{ matrix.os }} + needs: [find-nightly, set-matrix] + timeout-minutes: 30 + permissions: + contents: read + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + version: ${{ fromJson(needs.set-matrix.outputs.cli-versions) }} + fail-fast: false + env: + CLI_VERSION: ${{ matrix.version }} + NIGHTLY_URL: ${{ needs.find-nightly.outputs.url }} + TEST_CODEQL_PATH: '${{ github.workspace }}/codeql' + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json + + - name: Install dependencies + working-directory: extensions/ql-vscode + run: | + npm ci + shell: bash + + - name: Build + working-directory: extensions/ql-vscode + run: | + npm run build + shell: bash + + - name: Decide on ref of CodeQL repo + id: choose-ref + shell: bash + run: | + if [[ "${{ matrix.version }}" == "nightly" ]] + then + REF="codeql-cli/latest" + else + REF="codeql-cli/${{ matrix.version }}" + fi + echo "ref=$REF" >> "$GITHUB_OUTPUT" + + - name: Checkout QL + uses: actions/checkout@v6 + with: + repository: github/codeql + ref: ${{ steps.choose-ref.outputs.ref }} + path: codeql + + - name: Run CLI tests (Linux) + working-directory: extensions/ql-vscode + if: matrix.os == 'ubuntu-latest' + run: | + unset DBUS_SESSION_BUS_ADDRESS + /usr/bin/xvfb-run npm run test:cli-integration + + - name: Run CLI tests (Windows) + working-directory: extensions/ql-vscode + if: matrix.os == 'windows-latest' + run: | + npm run test:cli-integration + + report-failure: + name: Report failure on the default branch + runs-on: ubuntu-latest + needs: [cli-test] + if: failure() && github.ref == 'refs/heads/main' + permissions: + contents: read + issues: write + env: + GH_TOKEN: ${{ github.token }} + steps: + - name: Create GitHub issue + run: | + # Set -eu so that we fail if the gh command fails. + set -eu + + # Try to find an existing open issue if there is one + ISSUE="$(gh issue list --repo "$GITHUB_REPOSITORY" --label "cli-test-failure" --state "open" --limit 1 --json number -q '.[0].number')" + + if [[ -n "$ISSUE" ]]; then + echo "Found open issue number $ISSUE ($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/issues/$ISSUE)" + else + echo "Did not find an open tracking issue. Creating one." + + ISSUE_BODY="issue-body.md" + printf "CLI tests have failed on the default branch.\n\n@github/codeql-vscode-reviewers" > "$ISSUE_BODY" + + ISSUE="$(gh issue create --repo "$GITHUB_REPOSITORY" --label "cli-test-failure" --title "CLI test failure" --body-file "$ISSUE_BODY")" + # `gh issue create` returns the full issue URL, not just the number. + echo "Created issue with URL $ISSUE" + fi + + COMMENT_FILE="comment.md" + RUN_URL=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID + printf 'CLI test [%s](%s) failed on ref `%s`' "$GITHUB_RUN_ID" "$RUN_URL" "$GITHUB_REF" > "$COMMENT_FILE" + + # `gh issue create` returns an issue URL, and `gh issue list | cut -f 1` returns an issue number. + # Both are accepted here. + gh issue comment "$ISSUE" --repo "$GITHUB_REPOSITORY" --body-file "$COMMENT_FILE" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 3869d7c8474..32d37b325dc 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -11,6 +11,12 @@ on: jobs: codeql: runs-on: ubuntu-latest + strategy: + matrix: + language: + - javascript + - actions + fail-fast: false permissions: contents: read @@ -19,14 +25,14 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Initialize CodeQL uses: github/codeql-action/init@main with: - languages: javascript + languages: ${{ matrix.language }} config-file: ./.github/codeql/codeql-config.yml - tools: latest + tools: nightly - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@main diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index aec00fb75e0..6a2b21edda3 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -11,6 +11,6 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: 'Dependency Review' - uses: actions/dependency-review-action@v1 + uses: actions/dependency-review-action@v4 diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml new file mode 100644 index 00000000000..53cb19e03eb --- /dev/null +++ b/.github/workflows/e2e-tests.yml @@ -0,0 +1,51 @@ +name: Run E2E Playwright tests +on: + workflow_dispatch: +# Temporarily disable running tests until they're fixed +# push: +# branches: [main] +# pull_request: +# branches: [main] + +permissions: + contents: read + +jobs: + e2e-test: + name: E2E Test + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - name: Checkout + uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json + + - name: Install dependencies + working-directory: extensions/ql-vscode + run: npm ci + + - name: Start containers + working-directory: extensions/ql-vscode/test/e2e + run: docker compose -f "docker-compose.yml" up -d --build + + - name: Install Playwright Browsers + working-directory: extensions/ql-vscode + run: npx playwright install --with-deps + - name: Run Playwright tests + working-directory: extensions/ql-vscode/test/e2e + run: npx playwright test + - uses: actions/upload-artifact@v7 + if: always() + with: + name: playwright-report + path: extensions/ql-vscode/playwright-report/ + retention-days: 30 + - name: Stop containers + working-directory: extensions/ql-vscode/test/e2e + if: always() + run: docker compose -f "docker-compose.yml" down -v diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index e4a51b71b13..ac7bbeb704c 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -3,6 +3,9 @@ on: issues: types: [opened] +permissions: + issues: write + jobs: label: name: Label issue diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 74e7f17ec85..9225dbb3b7c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,6 +7,9 @@ on: branches: - main +permissions: + contents: read + jobs: build: name: Build @@ -16,18 +19,20 @@ jobs: os: [ubuntu-latest, windows-latest] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 with: fetch-depth: 1 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v6 with: - node-version: '16.13.0' + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json - name: Install dependencies working-directory: extensions/ql-vscode run: | - npm install + npm ci shell: bash - name: Build @@ -45,75 +50,185 @@ jobs: cp dist/*.vsix artifacts - name: Upload artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v7 if: matrix.os == 'ubuntu-latest' with: name: vscode-codeql-extension path: artifacts - find-nightly: - name: Find Nightly Release + lint: + name: Lint runs-on: ubuntu-latest - outputs: - url: ${{ steps.get-url.outputs.nightly-url }} + permissions: + contents: read + security-events: write steps: - - name: Get Nightly Release URL - id: get-url + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 1 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json + + - name: Install dependencies + working-directory: extensions/ql-vscode + run: | + npm ci + shell: bash + + - name: Check types + working-directory: extensions/ql-vscode + run: | + npm run check-types + + - name: Lint Markdown + working-directory: extensions/ql-vscode + run: | + npm run lint:markdown + + - name: Lint scenarios + working-directory: extensions/ql-vscode + run: | + npm run lint:scenarios + + - name: Find deadcode + working-directory: extensions/ql-vscode + run: | + npm run find-deadcode + + - name: Lint + if: "${{ !cancelled() }}" + working-directory: extensions/ql-vscode env: - GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' + NODE_OPTIONS: '--max-old-space-size=4096' + run: | + npm run lint-ci + + - name: Upload ESLint results to Code Scanning + if: "${{ !cancelled() && !startsWith(github.head_ref, 'dependabot/')}}" + uses: github/codeql-action/upload-sarif@main + with: + sarif_file: extensions/ql-vscode/build/eslint.sarif + category: eslint + + generated: + name: Check generated code + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 1 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json + + - name: Install dependencies + working-directory: extensions/ql-vscode + run: | + npm ci shell: bash - # This workflow step gets an unstable testing version of the CodeQL CLI. It should not be used outside of these tests. + + - name: Check that repo is clean run: | - LATEST=`gh api repos/dsp-testing/codeql-cli-nightlies/releases --jq '.[].tag_name' --method GET --raw-field 'per_page=1'` - echo "::set-output name=nightly-url::https://github.com/dsp-testing/codeql-cli-nightlies/releases/download/$LATEST" + git diff --exit-code + git diff --exit-code --cached - test: - name: Test + - name: Generate code + working-directory: extensions/ql-vscode + run: | + npm run generate + + - name: Check for changes + run: | + git diff --exit-code + git diff --exit-code --cached + + unit-test: + name: Unit Test runs-on: ${{ matrix.os }} - needs: [find-nightly] strategy: matrix: os: [ubuntu-latest, windows-latest] steps: + # Enable 8.3 filename creation. This is not required to run the extension but it is required for the unit tests to pass. + # This feature is currently enabled by default in Windows 11 for the C: drive and therefore we must maintain support for it. + # This setting needs to be enabled before files are created, i.e. before we checkout the repository. + - name: Enable 8.3 filenames + shell: pwsh + if: ${{ matrix.os == 'windows-latest' }} + run: | + $shortNameEnableProcess = Start-Process -FilePath fsutil.exe -ArgumentList ('8dot3name', 'set', '0') -Wait -PassThru + $shortNameEnableExitCode = $shortNameEnableProcess.ExitCode + if ($shortNameEnableExitCode -ne 0) { + exit $shortNameEnableExitCode + } + - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 with: fetch-depth: 1 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v6 with: - node-version: '16.13.0' + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json - name: Install dependencies working-directory: extensions/ql-vscode run: | - npm install + npm ci shell: bash - - name: Build + - name: Run unit tests working-directory: extensions/ql-vscode - env: - APP_INSIGHTS_KEY: '${{ secrets.APP_INSIGHTS_KEY }}' run: | - npm run build - shell: bash + npm run test:unit - - name: Lint + - name: Run view tests working-directory: extensions/ql-vscode run: | - npm run lint + npm run test:view + + test: + name: Test + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 1 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json - - name: Run unit tests (Linux) + - name: Install dependencies working-directory: extensions/ql-vscode - if: matrix.os == 'ubuntu-latest' run: | - npm run test + npm ci + shell: bash - - name: Run unit tests (Windows) - if: matrix.os == 'windows-latest' + - name: Build working-directory: extensions/ql-vscode + env: + APP_INSIGHTS_KEY: '${{ secrets.APP_INSIGHTS_KEY }}' run: | - npm run test + npm run build + shell: bash - name: Run integration tests (Linux) if: matrix.os == 'ubuntu-latest' @@ -121,8 +236,8 @@ jobs: env: VSCODE_CODEQL_GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' run: | - sudo apt-get install xvfb - /usr/bin/xvfb-run npm run integration + unset DBUS_SESSION_BUS_ADDRESS + /usr/bin/xvfb-run npm run test:vscode-integration - name: Run integration tests (Windows) if: matrix.os == 'windows-latest' @@ -130,33 +245,49 @@ jobs: env: VSCODE_CODEQL_GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' run: | - npm run integration + npm run test:vscode-integration + + get-latest-cli-version: + name: Get latest CLI version + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Set the variable + id: set-variable + run: | + echo "cli-version=$(cat ./extensions/ql-vscode/supported_cli_versions.json | jq -rc '.[0]')" >> $GITHUB_OUTPUT + echo "$cli-version" + outputs: + cli-version: ${{ steps.set-variable.outputs.cli-version }} cli-test: name: CLI Test runs-on: ${{ matrix.os }} - needs: [find-nightly] + needs: [get-latest-cli-version] + timeout-minutes: 30 strategy: matrix: os: [ubuntu-latest, windows-latest] - version: ['v2.6.3', 'v2.7.6', 'v2.8.5', 'v2.9.4', 'v2.10.2', 'nightly'] + fail-fast: false env: - CLI_VERSION: ${{ matrix.version }} - NIGHTLY_URL: ${{ needs.find-nightly.outputs.url }} + CLI_VERSION: ${{ needs.get-latest-cli-version.outputs.cli-version }} TEST_CODEQL_PATH: '${{ github.workspace }}/codeql' steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v6 with: - node-version: '16.13.0' + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json - name: Install dependencies working-directory: extensions/ql-vscode run: | - npm install + npm ci shell: bash - name: Build @@ -165,33 +296,22 @@ jobs: npm run build shell: bash - - name: Decide on ref of CodeQL repo - id: choose-ref - shell: bash - run: | - if [[ "${{ matrix.version }}" == "nightly" ]] - then - REF="codeql-cli/latest" - else - REF="codeql-cli/${{ matrix.version }}" - fi - echo "::set-output name=ref::$REF" - - name: Checkout QL - uses: actions/checkout@v2 + uses: actions/checkout@v6 with: repository: github/codeql - ref: ${{ steps.choose-ref.outputs.ref }} + ref: 'codeql-cli/${{ needs.get-latest-cli-version.outputs.cli-version }}' path: codeql - name: Run CLI tests (Linux) working-directory: extensions/ql-vscode if: matrix.os == 'ubuntu-latest' run: | - /usr/bin/xvfb-run npm run cli-integration + unset DBUS_SESSION_BUS_ADDRESS + /usr/bin/xvfb-run npm run test:cli-integration - name: Run CLI tests (Windows) working-directory: extensions/ql-vscode if: matrix.os == 'windows-latest' run: | - npm run cli-integration + npm run test:cli-integration diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9b084159a4c..580b2b254bb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,17 +12,23 @@ on: tags: - 'v[0-9]+.[0-9]+.[0-9]+*' +permissions: + contents: read + jobs: build: name: Release runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v6 with: - node-version: '16.13.0' + node-version-file: extensions/ql-vscode/.nvmrc - name: Install dependencies run: | @@ -47,46 +53,39 @@ jobs: # Record the VSIX path as an output of this step. # This will be used later when uploading a release asset. VSIX_PATH="$(ls dist/*.vsix)" - echo "::set-output name=vsix_path::$VSIX_PATH" + echo "vsix_path=$VSIX_PATH" >> "$GITHUB_OUTPUT" # Transform the GitHub ref so it can be used in a filename. # The last sed invocation is used for testing branches that modify this workflow. REF_NAME="$(echo ${{ github.ref }} | sed -e 's:^refs/tags/::' | sed -e 's:/:-:g')" - echo "::set-output name=ref_name::$REF_NAME" + echo "ref_name=$REF_NAME" >> "$GITHUB_OUTPUT" - name: Upload artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v7 with: name: vscode-codeql-extension path: artifacts + - name: Upload source maps + uses: actions/upload-artifact@v7 + with: + name: vscode-codeql-sourcemaps + path: dist/vscode-codeql/out/*.map + # TODO Run tests, or check that a test run on the same branch succeeded. + - name: Create sourcemap ZIP file + run: | + cd dist/vscode-codeql/out + zip -r ../../vscode-codeql-sourcemaps.zip *.map + - name: Create release id: create-release - uses: actions/create-release@v1.0.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} - # This gives us a chance to manually review the created release before publishing it, - # as well as to test the release workflow by pushing temporary tags. - # Once we have set all required release metadata in this step, we can set this to `false`. - draft: true - prerelease: false - - - name: Upload release asset - uses: actions/upload-release-asset@v1.0.1 - if: success() + run: | + gh release create ${{ github.ref_name }} --draft --title "Release ${{ github.ref_name }}" \ + '${{ steps.prepare-artifacts.outputs.vsix_path }}#${{ format('vscode-codeql-{0}.vsix', steps.prepare-artifacts.outputs.ref_name) }}' \ + 'dist/vscode-codeql-sourcemaps.zip#${{ format('vscode-codeql-sourcemaps-{0}.zip', steps.prepare-artifacts.outputs.ref_name) }}' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - # Get the `upload_url` from the `create-release` step above. - upload_url: ${{ steps.create-release.outputs.upload_url }} - # Get the `vsix_path` and `ref_name` from the `prepare-artifacts` step above. - asset_path: ${{ steps.prepare-artifacts.outputs.vsix_path }} - asset_name: ${{ format('vscode-codeql-{0}.vsix', steps.prepare-artifacts.outputs.ref_name) }} - asset_content_type: application/zip ### # Do Post release work: version bump and changelog PR @@ -107,7 +106,7 @@ jobs: # Bump to the next patch version. Major or minor version bumps will have to be done manually. # Record the next version number as an output of this step. NEXT_VERSION="$(npm version patch)" - echo "::set-output name=next_version::$NEXT_VERSION" + echo "next_version=$NEXT_VERSION" >> "$GITHUB_OUTPUT" - name: Add changelog for next release if: success() @@ -116,47 +115,67 @@ jobs: perl -i -pe 's/^/## \[UNRELEASED\]\n\n/ if($.==3)' CHANGELOG.md - name: Create version bump PR - uses: peter-evans/create-pull-request@c7f493a8000b8aeb17a1332e326ba76b57cb83eb # v3.4.1 + uses: ./.github/actions/create-pr if: success() with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Bump version to ${{ steps.bump-patch-version.outputs.next_version }} title: Bump version to ${{ steps.bump-patch-version.outputs.next_version }} body: This PR was automatically generated by the GitHub Actions release workflow in this repository. - branch: ${{ format('version/bump-to-{0}', steps.bump-patch-version.outputs.next_version) }} - base: main - draft: true + head-branch: ${{ format('version/bump-to-{0}', steps.bump-patch-version.outputs.next_version) }} + base-branch: main vscode-publish: name: Publish to VS Code Marketplace needs: build environment: publish-vscode-marketplace runs-on: ubuntu-latest - env: - VSCE_TOKEN: ${{ secrets.VSCE_TOKEN }} + permissions: + contents: read + id-token: write steps: + - name: Checkout + uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + - name: Download artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v8 with: name: vscode-codeql-extension + - name: Azure User-assigned managed identity login + uses: azure/login@532459ea530d8321f2fb9bb10d1e0bcf23869a43 # v3.0.0 + with: + client-id: ${{ secrets.AZURE_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_TENANT_ID }} + allow-no-subscriptions: true + enable-AzPSSession: true + - name: Publish to Registry - run: | - npx vsce publish -p $VSCE_TOKEN --packagePath *.vsix || \ - echo "Failed to publish to VS Code Marketplace. \ - If this was an authentication problem, please make sure the \ - auth token hasn't expired." + run: npx @vscode/vsce publish --azure-credential --packagePath *.vsix open-vsx-publish: name: Publish to Open VSX Registry needs: build environment: publish-open-vsx runs-on: ubuntu-latest + permissions: + contents: read env: OPEN_VSX_TOKEN: ${{ secrets.OPEN_VSX_TOKEN }} steps: + - name: Checkout + uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + - name: Download artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v8 with: name: vscode-codeql-extension diff --git a/.github/workflows/update-node-version.yml b/.github/workflows/update-node-version.yml new file mode 100644 index 00000000000..c27c2f9747e --- /dev/null +++ b/.github/workflows/update-node-version.yml @@ -0,0 +1,58 @@ +name: Update Node version +on: + workflow_dispatch: + schedule: + - cron: '15 12 * * *' # At 12:15 PM UTC every day + +permissions: + contents: write + pull-requests: write + +jobs: + create-pr: + name: Create PR + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + - uses: actions/setup-node@v6 + with: + node-version-file: extensions/ql-vscode/.nvmrc + cache: 'npm' + cache-dependency-path: extensions/ql-vscode/package-lock.json + - name: Install dependencies + working-directory: extensions/ql-vscode + run: | + npm ci + shell: bash + - name: Get current Node version + working-directory: extensions/ql-vscode + id: get-current-node-version + run: | + echo "version=$(cat .nvmrc)" >> $GITHUB_OUTPUT + shell: bash + - name: Update Node version + working-directory: extensions/ql-vscode + run: | + npx vite-node scripts/update-node-version.ts + shell: bash + - name: Get current Node version + working-directory: extensions/ql-vscode + id: get-new-node-version + run: | + echo "version=$(cat .nvmrc)" >> $GITHUB_OUTPUT + shell: bash + - name: Commit, Push and Open a PR + uses: ./.github/actions/create-pr + with: + token: ${{ secrets.GITHUB_TOKEN }} + base-branch: main + head-branch: github-action/bump-node-version + commit-message: Bump Node version to ${{ steps.get-new-node-version.outputs.version }} + title: Bump Node version to ${{ steps.get-new-node-version.outputs.version }} + body: > + The Node version used in the latest version of VS Code has been updated. This PR updates the Node version + used for integration tests to match. + + The previous Node version was ${{ steps.get-current-node-version.outputs.version }}. This PR updates the + Node version to ${{ steps.get-new-node-version.outputs.version }}. diff --git a/.gitignore b/.gitignore index fe14849d64e..332b925b9fc 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,13 @@ artifacts/ # Visual Studio workspace state .vs/ -# Rush files -/common/temp/** -package-deps.json -**/.rush/temp +# CodeQL metadata +.cache/ +.codeql/ + +# E2E Reports +**/playwright-report/** +**/test-results/** + +# Storybook artifacts +**/storybook-static/** diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000000..abc5efe4456 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +cd extensions/ql-vscode && npm run format-staged diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100755 index 00000000000..f3f1a028d7e --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1 @@ +cd extensions/ql-vscode && ./scripts/forbid-test-only diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 00000000000..ad33d4afaa5 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,7 @@ +{ + "ul-style": { + "style": "dash" + }, + "MD013": false, + "MD041": false +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 82d93c84a5b..6ca7e5fd5a7 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,8 +4,11 @@ // List of extensions which should be recommended for users of this workspace. "recommendations": [ "amodio.tsl-problem-matcher", + "DavidAnson.vscode-markdownlint", "dbaeumer.vscode-eslint", - "eternalphane.tsfmt-vscode" + "esbenp.prettier-vscode", + "firsttris.vscode-jest-runner", + "Orta.vscode-jest", ], // List of extensions recommended by VS Code that should not be recommended for users of this workspace. "unwantedRecommendations": [] diff --git a/.vscode/launch.json b/.vscode/launch.json index d2cc7828171..25b4a058644 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,6 +11,7 @@ "--extensionDevelopmentPath=${workspaceRoot}/extensions/ql-vscode", // Add a reference to a workspace to open. Eg- // "${workspaceRoot}/../vscode-codeql-starter/vscode-codeql-starter.code-workspace" + // "${workspaceRoot}/../codespaces-codeql/tutorial.code-workspace" ], "sourceMaps": true, "outFiles": [ @@ -29,21 +30,40 @@ "name": "Launch Unit Tests (vscode-codeql)", "type": "node", "request": "launch", - "program": "${workspaceFolder}/extensions/ql-vscode/node_modules/mocha/bin/_mocha", + "program": "${workspaceFolder}/extensions/ql-vscode/node_modules/jest/bin/jest.js", "showAsyncStacks": true, "cwd": "${workspaceFolder}/extensions/ql-vscode", - "runtimeArgs": [ - "--inspect=9229" + "env": { + "LANG": "en-US", + "TZ": "UTC" + }, + "args": [ + "--projects", + "test/unit-tests" ], + "stopOnEntry": false, + "sourceMaps": true, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Launch Selected Unit Test (vscode-codeql)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/extensions/ql-vscode/node_modules/jest/bin/jest.js", + "showAsyncStacks": true, + "cwd": "${workspaceFolder}/extensions/ql-vscode", + "env": { + "LANG": "en-US", + "TZ": "UTC" + }, "args": [ - "--exit", - "-u", - "bdd", - "--colors", - "--diff", - "-r", - "ts-node/register", - "test/pure-tests/**/*.ts" + "--projects", + "test", + "-i", + "${relativeFile}", + "-t", + "${selectedText}" ], "stopOnEntry": false, "sourceMaps": true, @@ -51,61 +71,63 @@ "internalConsoleOptions": "neverOpen" }, { - "name": "Launch Integration Tests - No Workspace (vscode-codeql)", - "type": "extensionHost", + "name": "Launch Unit Tests - React (vscode-codeql)", + "type": "node", "request": "launch", - "runtimeExecutable": "${execPath}", + "program": "${workspaceFolder}/extensions/ql-vscode/node_modules/jest/bin/jest.js", + "showAsyncStacks": true, + "cwd": "${workspaceFolder}/extensions/ql-vscode", "args": [ - "--extensionDevelopmentPath=${workspaceRoot}/extensions/ql-vscode", - "--extensionTestsPath=${workspaceRoot}/extensions/ql-vscode/out/vscode-tests/no-workspace/index", - "--disable-workspace-trust", - "--disable-extensions", - "--disable-gpu" + "--projects", + "src/view" ], + "stopOnEntry": false, "sourceMaps": true, - "outFiles": [ - "${workspaceRoot}/extensions/ql-vscode/out/**/*.js", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Launch Integration Tests - No Workspace (vscode-codeql)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/extensions/ql-vscode/node_modules/jest/bin/jest.js", + "showAsyncStacks": true, + "cwd": "${workspaceFolder}/extensions/ql-vscode", + "args": [ + "--projects", + "test/vscode-tests/no-workspace" ], + "sourceMaps": true, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "attachSimplePort": 9223, }, { "name": "Launch Integration Tests - Minimal Workspace (vscode-codeql)", - "type": "extensionHost", + "type": "node", "request": "launch", - "runtimeExecutable": "${execPath}", + "program": "${workspaceFolder}/extensions/ql-vscode/node_modules/jest/bin/jest.js", + "showAsyncStacks": true, + "cwd": "${workspaceFolder}/extensions/ql-vscode", "args": [ - "--extensionDevelopmentPath=${workspaceRoot}/extensions/ql-vscode", - "--extensionTestsPath=${workspaceRoot}/extensions/ql-vscode/out/vscode-tests/minimal-workspace/index", - "--disable-workspace-trust", - "--disable-extensions", - "--disable-gpu", - "${workspaceRoot}/extensions/ql-vscode/test/data" + "--projects", + "test/vscode-tests/minimal-workspace" ], "sourceMaps": true, - "outFiles": [ - "${workspaceRoot}/extensions/ql-vscode/out/**/*.js", - ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "attachSimplePort": 9223, }, { "name": "Launch Integration Tests - With CLI", - "type": "extensionHost", + "type": "node", "request": "launch", - "runtimeExecutable": "${execPath}", + "program": "${workspaceFolder}/extensions/ql-vscode/node_modules/jest/bin/jest.js", + "showAsyncStacks": true, + "cwd": "${workspaceFolder}/extensions/ql-vscode", "args": [ - "--extensionDevelopmentPath=${workspaceRoot}/extensions/ql-vscode", - "--extensionTestsPath=${workspaceRoot}/extensions/ql-vscode/out/vscode-tests/cli-integration/index", - "--disable-workspace-trust", - "--disable-gpu", - "--disable-extension", - "eamodio.gitlens", - "--disable-extension", - "github.codespaces", - "--disable-extension", - "github.copilot", - "${workspaceRoot}/extensions/ql-vscode/src/vscode-tests/cli-integration/data", - // Uncomment the last line and modify the path to a checked out - // instance of the codeql repository so the libraries are - // available in the workspace for the tests. - // "${workspaceRoot}/../codeql" + "--projects", + "test/vscode-tests/cli-integration" ], "env": { // Optionally, set the version to use for the integration tests. @@ -119,11 +141,24 @@ // If not specified, one will be downloaded automatically. // This option overrides the CLI_VERSION option. // "CLI_PATH": "${workspaceRoot}/../semmle-code/target/intree/codeql/codeql", + + // Uncomment the last line and modify the path to a checked out + // instance of the codeql repository so the libraries are + // available in the workspace for the tests. + // "TEST_CODEQL_PATH": "${workspaceRoot}/../codeql", }, "sourceMaps": true, - "outFiles": [ - "${workspaceRoot}/extensions/ql-vscode/out/**/*.js", - ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "attachSimplePort": 9223, + }, + { + "name": "Launch Storybook", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}/extensions/ql-vscode", + "runtimeExecutable": "npm", + "runtimeArgs": ["run-script", "storybook"] } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 18c2acf371e..17ed8c1332d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -30,12 +30,87 @@ "typescript", "typescriptreact" ], - "eslint.options": { - // This is necessary so that eslint can properly resolve its plugins - "resolvePluginsRelativeTo": "./extensions/ql-vscode" - }, + // This is necessary to ensure that ESLint can find the correct configuration files and plugins. + "eslint.workingDirectories": ["./extensions/ql-vscode"], "editor.formatOnSave": false, "typescript.preferences.quoteStyle": "single", "javascript.preferences.quoteStyle": "single", - "editor.wordWrapColumn": 100 + "editor.wordWrapColumn": 100, + "jest.rootPath": "./extensions/ql-vscode", + "jest.autoRun": "off", + "jest.nodeEnv": { + "LANG": "en-US", + "TZ": "UTC", + "NODE_OPTIONS": "--no-experimental-strip-types" + }, + + // These custom rules are read in extensions/ql-vscode/.markdownlint-cli2.cjs + // but markdownlint only considers that config when linting files in + // extensions/ql-vscode/ or its subfolders. Therefore, we have to explicitly + // load the custom rules here too. + "markdownlint.customRules": [ + "./extensions/ql-vscode/node_modules/@github/markdownlint-github/src/rules/no-default-alt-text.js", + "./extensions/ql-vscode/node_modules/@github/markdownlint-github/src/rules/no-generic-link-text.js" + ], + + // This ensures that the accessibility rule enablement done by github-markdownlint is + // considered by the extension too. + // + // Unfortunately, we can only specify a single extends, so the config here isn't + // identical since it can't also consider @github/markdownlint-github/style/base.json + // That's not as bad as it could be since the full config is considered for anything + // in extensions/ql-vscode/ or its subfolders anyway. + // + // Additional nonfiguration of the default rules is done in .markdownlint.json, + // which is picked up by the extension automatically, and read explicitly in + // .markdownlint-cli2.cjs + "markdownlint.config": { + "extends": "./extensions/ql-vscode/node_modules/@github/markdownlint-github/style/accessibility.json" + }, + + // These options are used by the `jestrunner.debug` command. + // They are not used by the `jestrunner.run` command. + // After clicking "debug" over a test, continually invoke the + // "Debug: Attach to Node Process" command until you see a + // process named "Code Helper (Plugin)". Then click "attach". + // This will attach the debugger to the test process. + "jestrunner.debugOptions": { + // Uncomment to debug integration tests + "attachSimplePort": 9223, + "env": { + "LANG": "en-US", + "TZ": "UTC", + "NODE_OPTIONS": "--no-experimental-strip-types", + + // Uncomment to set a custom path to a CodeQL checkout. + // "TEST_CODEQL_PATH": "/absolute/path/to/checkout/of/codeql", + + // Uncomment to set a custom path to a CodeQL CLI executable. + // This is the CodeQL version that will be used in the tests. + // "CLI_PATH": "/absolute/path/to/custom/codeql", + + // Uncomment to debug integration tests + "VSCODE_WAIT_FOR_DEBUGGER": "true" + } + }, + "terminal.integrated.env.linux": { + "LANG": "en-US", + "TZ": "UTC" + }, + "terminal.integrated.env.osx": { + "LANG": "en-US", + "TZ": "UTC" + }, + "terminal.integrated.env.windows": { + "LANG": "en-US", + "TZ": "UTC" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true + } } diff --git a/CODEOWNERS b/CODEOWNERS index e7adb70451d..63f6b391433 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,6 @@ **/* @github/codeql-vscode-reviewers -/extensions/ql-vscode/src/remote-queries/ @github/code-scanning-secexp-reviewers +**/variant-analysis/ @github/code-scanning-secexp-reviewers +**/databases/ @github/code-scanning-secexp-reviewers +**/method-modeling/ @github/code-scanning-secexp-reviewers +**/model-editor/ @github/code-scanning-secexp-reviewers +**/queries-panel/ @github/code-scanning-secexp-reviewers diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 3a64696bc25..b39a72733ce 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,21 +14,21 @@ appearance, race, religion, or sexual identity and orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or +- The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities @@ -55,7 +55,7 @@ a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at opensource@github.com. All +reported by contacting the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. @@ -67,10 +67,7 @@ members of the project's leadership. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org +This Code of Conduct is adapted from the [Contributor Covenant, version 1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html). For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq +[the Contributor Covenant FAQ](https://www.contributor-covenant.org/faq). For more about Contributor Covenant, see [the Contributor Covenant website](https://www.contributor-covenant.org). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 59ee4faaa89..879b85bb9ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ [fork]: https://github.com/github/vscode-codeql/fork [pr]: https://github.com/github/vscode-codeql/compare -[style]: https://primer.style +[style]: https://github.com/microsoft/vscode-webview-ui-toolkit [code-of-conduct]: CODE_OF_CONDUCT.md Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. @@ -22,10 +22,13 @@ Please note that this project is released with a [Contributor Code of Conduct][c Here are a few things you can do that will increase the likelihood of your pull request being accepted: -* Follow the [style guide][style]. -* Write tests. Tests that don't require the VS Code API are located [here](extensions/ql-vscode/test). Integration tests that do require the VS Code API are located [here](extensions/ql-vscode/src/vscode-tests). -* Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. -* Write a [good commit message](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). +- Follow the [style guide][style]. +- Write tests: + - [Tests that don't require the VS Code API are located here](extensions/ql-vscode/test). + - [Integration tests that do require the VS Code API are located here](extensions/ql-vscode/src/vscode-tests). +- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. +- Write a [good commit message](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). +- Update the [changelog](https://github.com/github/vscode-codeql/blob/main/extensions/ql-vscode/CHANGELOG.md) if you are making user-facing changes. ## Setting up a local build @@ -54,7 +57,7 @@ Alternatively, you can build the extension within VS Code via `Terminal > Run Bu Before running any of the launch commands, be sure to have run the `build` command to ensure that the JavaScript is compiled and the resources are copied to the proper location. -We recommend that you keep `npm run watch` running in the backgound and you only need to re-run `npm run build` in the following situations: +We recommend that you keep `npm run watch` running in the background and you only need to re-run `npm run build` in the following situations: 1. on first checkout 2. whenever any of the non-TypeScript resources have changed @@ -75,104 +78,28 @@ $ vscode/scripts/code-cli.sh --install-extension dist/vscode-codeql-*.vsix # if ### Debugging -You can use VS Code to debug the extension without explicitly installing it. Just open this directory as a workspace in VS Code, and hit `F5` to start a debugging session. +You can use VS Code to debug the extension without explicitly installing it. Just open this repository's root directory as a workspace in VS Code, and hit `F5` to start a debugging session. -### Running the unit tests and integration tests that do not require a CLI instance +### Storybook -Unit tests and many integration tests do not require a copy of the CodeQL CLI. - -Outside of vscode, in the `extensions/ql-vscode` directory, run: +You can use [Storybook](https://storybook.js.org/) to preview React components outside VSCode. Inside the `extensions/ql-vscode` directory, run: ```shell -npm run test && npm run integration +npm run storybook ``` -Alternatively, you can run the tests inside of vscode. There are several vscode launch configurations defined that run the unit and integration tests. They can all be found in the debug view. - -Only the _With CLI_ tests require a CLI instance to run. See below on how to do that. - -Running from a terminal, you _must_ set the `TEST_CODEQL_PATH` variable to point to a checkout of the `github/codeql` repository. The appropriate CLI version will be downloaded as part of the test. - -### Running the integration tests - -You will need to run CLI tests using a task from inside of VS Code called _Launch Integration Tests - With CLI_. - -The CLI integration tests require the CodeQL standard libraries in order to run so you will need to clone a local copy of the `github/codeql` repository. - -From inside of VSCode, open the `launch.json` file and in the _Launch Integration Tests - With CLI_ task, uncomment the `"${workspaceRoot}/../codeql"` line. If necessary, replace value with a path to your checkout, and then run the task. - -## Releasing (write access required) - -1. Double-check the `CHANGELOG.md` contains all desired change comments and has the version to be released with date at the top. - * Go through all recent PRs and make sure they are properly accounted for. - * Make sure all changelog entries have links back to their PR(s) if appropriate. -1. Double-check that the node version we're using matches the one used for VS Code. If it doesn't, you will then need to update the node version in the following files: - * `.nvmrc` - this will enable `nvm` to automatically switch to the correct node version when you're in the project folder - * `.github/workflows/main.yml` - all the "node-version: " settings - * `.github/workflows/release.yml` - the "node-version: " setting -1. Double-check that the extension `package.json` and `package-lock.json` have the version you intend to release. If you are doing a patch release (as opposed to minor or major version) this should already be correct. -1. Create a PR for this release: - * This PR will contain any missing bits from steps 1 and 2. Most of the time, this will just be updating `CHANGELOG.md` with today's date. - * Create a new branch for the release named after the new version. For example: `v1.3.6` - * Create a new commit with a message the same as the branch name. - * Create a PR for this branch. - * Wait for the PR to be merged into `main` -1. Switch to `main` and add a new tag on the `main` branch with your new version (named after the release), e.g. - ```bash - git checkout main - git tag v1.3.6 - ``` - - If you've accidentally created a badly named tag, you can delete it via - ```bash - git tag -d badly-named-tag - ``` -1. Push the new tag up: - - a. If you're using a fork of the repo: - - ```bash - git push upstream refs/tags/v1.3.6 - ``` - - b. If you're working straight in this repo: - - ```bash - git push origin refs/tags/v1.3.6 - ``` - - This will trigger [a release build](https://github.com/github/vscode-codeql/releases) on Actions. - - * **IMPORTANT** Make sure you are on the `main` branch and your local checkout is fully updated when you add the tag. - * If you accidentally add the tag to the wrong ref, you can just force push it to the right one later. -1. Monitor the status of the release build in the `Release` workflow in the Actions tab. -1. Download the VSIX from the draft GitHub release at the top of [the releases page](https://github.com/github/vscode-codeql/releases) that is created when the release build finishes. -1. Unzip the `.vsix` and inspect its `package.json` to make sure the version is what you expect, - or look at the source if there's any doubt the right code is being shipped. -1. Install the `.vsix` file into your vscode IDE and ensure the extension can load properly. Run a single command (like run query, or add database). -1. Go to the actions tab of the vscode-codeql repository and select the [Release workflow](https://github.com/github/vscode-codeql/actions?query=workflow%3ARelease). - - If there is an authentication failure when publishing, be sure to check that the authentication keys haven't expired. See below. -1. Approve the deployments of the correct Release workflow. This will automatically publish to Open VSX and VS Code Marketplace. -1. Go to the draft GitHub release in [the releases tab of the repository](https://github.com/github/vscode-codeql/releases), click 'Edit', add some summary description, and publish it. -1. Confirm the new release is marked as the latest release at . -1. If documentation changes need to be published, notify documentation team that release has been made. -1. Review and merge the version bump PR that is automatically created by Actions. - -## Secrets and authentication for publishing - -Repository administrators, will need to manage the authentication keys for publishing to the VS Code marketplace and Open VSX. Each requires an authentication token. The VS Code marketplace token expires yearly. - -To regenerate the Open VSX token: - -1. Log in to the [user settings page on Open VSX](https://open-vsx.org/user-settings/namespaces). -1. Make sure you are a member of the GitHub namespace. -1. Go to the [Access Tokens](https://open-vsx.org/user-settings/tokens) page and generate a new token. -1. Update the secret in the `publish-open-vsx` environment in the project settings. - -To regenerate the VSCode Marketplace token, please see our internal documentation. Note that Azure DevOps PATs expire every 90 days and must be regenerated. +Your browser should automatically open to the Storybook UI. Stories live in the `src/stories` directory. + +Alternatively, you can start Storybook inside of VSCode. There is a VSCode launch configuration for starting Storybook. It can be found in the debug view. + +More information about Storybook can be found inside the **Overview** page once you have launched Storybook. + +### Testing + +[Information about testing can be found here](./docs/testing.md). ## Resources -* [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) -* [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) -* [GitHub Help](https://help.github.com) +- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) +- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) +- [GitHub Help](https://help.github.com) diff --git a/LICENSE.md b/LICENSE.md index df3369d4446..9a8bca8e80d 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 2fc0ba4f961..cf7c48dddf9 100644 --- a/README.md +++ b/README.md @@ -6,15 +6,16 @@ The extension is released. You can download it from the [Visual Studio Marketpla To see what has changed in the last few versions of the extension, see the [Changelog](https://github.com/github/vscode-codeql/blob/main/extensions/ql-vscode/CHANGELOG.md). -[![CI status badge](https://github.com/github/vscode-codeql/workflows/Build%20Extension/badge.svg)](https://github.com/github/vscode-codeql/actions?query=workflow%3A%22Build+Extension%22+branch%3Amaster) -[![VS Marketplace badge](https://vsmarketplacebadge.apphb.com/version/github.vscode-codeql.svg)](https://marketplace.visualstudio.com/items?itemName=github.vscode-codeql) +[![CI status badge](https://github.com/github/vscode-codeql/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/github/vscode-codeql/actions?query=workflow%3A%22Build+Extension%22+branch%3Amain) +[![VS Marketplace badge](https://vsmarketplacebadges.dev/version/github.vscode-codeql.svg)](https://marketplace.visualstudio.com/items?itemName=github.vscode-codeql) ## Features -* Enables you to use CodeQL to query databases and discover problems in codebases. -* Shows the flow of data through the results of path queries, which is essential for triaging security results. -* Provides an easy way to run queries from the large, open source repository of [CodeQL security queries](https://github.com/github/codeql). -* Adds IntelliSense to support you writing and editing your own CodeQL query and library files. +- Enables you to use CodeQL to query databases and discover problems in codebases. +- Shows the flow of data through the results of path queries, which is essential for triaging security results. +- Provides an easy way to run queries from the large, open source repository of [CodeQL security queries](https://github.com/github/codeql). +- Adds IntelliSense to support you writing and editing your own CodeQL query and library files. +- Supports you running CodeQL queries against thousands of repositories on GitHub using multi-repository variant analysis. ## Project goals and scope diff --git a/docs/images/about-vscode-chromium.png b/docs/images/about-vscode-chromium.png new file mode 100644 index 00000000000..46289e23719 Binary files /dev/null and b/docs/images/about-vscode-chromium.png differ diff --git a/docs/images/about-vscode.png b/docs/images/about-vscode.png new file mode 100644 index 00000000000..87e03234d05 Binary files /dev/null and b/docs/images/about-vscode.png differ diff --git a/docs/images/electron-chromium-version.png b/docs/images/electron-chromium-version.png new file mode 100644 index 00000000000..de71ea26b21 Binary files /dev/null and b/docs/images/electron-chromium-version.png differ diff --git a/docs/images/electron-version.png b/docs/images/electron-version.png new file mode 100644 index 00000000000..e8faa97b632 Binary files /dev/null and b/docs/images/electron-version.png differ diff --git a/docs/images/github-database-download-prompt.png b/docs/images/github-database-download-prompt.png new file mode 100644 index 00000000000..8a76cad742e Binary files /dev/null and b/docs/images/github-database-download-prompt.png differ diff --git a/docs/images/highlighted-code-snippet.png b/docs/images/highlighted-code-snippet.png new file mode 100644 index 00000000000..76638b6f855 Binary files /dev/null and b/docs/images/highlighted-code-snippet.png differ diff --git a/docs/images/model-pack-results-table.png b/docs/images/model-pack-results-table.png new file mode 100644 index 00000000000..d2e48102fd7 Binary files /dev/null and b/docs/images/model-pack-results-table.png differ diff --git a/docs/images/results-table.png b/docs/images/results-table.png new file mode 100644 index 00000000000..d22f390c66a Binary files /dev/null and b/docs/images/results-table.png differ diff --git a/docs/node-version.md b/docs/node-version.md new file mode 100644 index 00000000000..306170f5aae --- /dev/null +++ b/docs/node-version.md @@ -0,0 +1,29 @@ +# Node version + +> [!NOTE] +> It should not be necessary to update the Node.js version manually. The [update-node-version.yml](https://github.com/github/vscode-codeql/blob/main/.github/workflows/update-node-version.yml) workflow runs daily and will open a pull request if the Node.js version needs to be updated. + +The CodeQL for VS Code extension defines the version of Node.js that it is intended to run with. This Node.js version is used when running most CI and unit tests. + +When running in production (i.e. as an extension for a VS Code application) it will use the Node.js version provided by VS Code. This can mean a different Node.js version is used by different users with different versions of VS Code. +We should make sure the CodeQL for VS Code extension works with the Node.js version supplied by all versions of VS Code that we support. + +## Checking the version of Node.js supplied by VS Code + +You can find this info by selecting "About Visual Studio Code" from the top menu. + +![about-vscode](images/about-vscode.png) + +## Updating the Node.js version + +To update the Node.js version, run: + +```bash +npx ts-node scripts/update-node-version.ts +``` + +## Node.js version used in tests + +Unit tests will use whatever version of Node.js is installed locally. In CI this will be the version specified in the workflow. + +Integration tests download a copy of VS Code and then will use whatever version of Node.js is provided by VS Code. See [VS Code version used in tests](./vscode-version.md#vs-code-version-used-in-tests) for more information. diff --git a/docs/releasing.md b/docs/releasing.md new file mode 100644 index 00000000000..a8696cacdf7 --- /dev/null +++ b/docs/releasing.md @@ -0,0 +1,74 @@ +# Releasing (write access required) + +1. Determine the new version number. We default to increasing the patch version number, but make our own judgement about whether a change is big enough to warrant a minor version bump. Common reasons for a minor bump could include: + - Making substantial new features available to all users. This can include lifting a feature flag. + - Breakage in compatibility with recent versions of the CLI. + - Minimum required version of VS Code is increased. + - New telemetry events are added. + - Deprecation or removal of commands. + - Accumulation of many changes, none of which are individually big enough to warrant a minor bump, but which together are. This does not include changes which are purely internal to the extension, such as refactoring, or which are only available behind a feature flag. +1. Create a release branch named after the new version (e.g. `v1.3.6`): + - For a regular scheduled release this branch will be based on latest `main`. + - Make sure your local copy of `main` is up to date so you are including all changes. + - To do a minimal bug-fix release, base the release branch on the tag from the most recent release and then add only the changes you want to release. + - Choose this option if you want to release a specific set of changes (e.g. a bug fix) and don't want to incur extra risk by including other changes that have been merged to the `main` branch. + + ```bash + git checkout -b + ``` + +1. Run the ["Run CLI tests" workflow](https://github.com/github/vscode-codeql/actions/workflows/cli-test.yml) and make sure the tests are green. + - You can skip this step if you are releasing from `main` and there were no merges since the most recent daily scheduled run of this workflow. +1. Double-check the `CHANGELOG.md` contains all desired change comments and has the version to be released with date at the top. + - Go through PRs that have been merged since the previous release and make sure they are properly accounted for. + - Make sure all changelog entries have links back to their PR(s) if appropriate. +1. Double-check that the extension `package.json` and `package-lock.json` have the version you intend to release. If you are doing a patch release (as opposed to minor or major version) this should already be correct. +1. Commit any changes made during steps 4 and 5 with a commit message the same as the branch name (e.g. `v1.3.6`). +1. Open a PR for this release. + - The PR diff should contain: + - Any missing bits from steps 4 and 5. Most of the time, this will just be updating `CHANGELOG.md` with today's date. + - If releasing from a branch other than `main`, this PR will also contain the extension changes being released. +1. Build the extension using `npm run build` and install it on your VS Code using "Install from VSIX". +1. Go through [our test plan](./test-plan.md) to ensure that the extension is working as expected. +1. Create a new tag on the release branch with your new version (named after the release), e.g. + + ```bash + git tag v1.3.6 + ``` + +1. Merge the release PR into `main`. + - If there are conflicts in the changelog, make sure to place any new changelog entries at the top, above the section for the current release, as these new entries are not part of the current release and should be placed in the "unreleased" section. + - The release PR must be merged before pushing the tag to ensure that we always release a commit that is present on the `main` branch. It's not required that the commit is the head of the `main` branch, but there should be no chance of a future release accidentally not including changes from this release. +1. Push the new tag up: + + ```bash + git push origin refs/tags/v1.3.6 + ``` + +1. Find the [Release](https://github.com/github/vscode-codeql/actions?query=workflow%3ARelease) workflow run that was just triggered by pushing the tag, and monitor the status of the release build. + - DO NOT approve the "publish" stages of the workflow yet. +1. Download the VSIX from the draft GitHub release at the top of [the releases page](https://github.com/github/vscode-codeql/releases) that is created when the release build finishes. +1. Unzip the `.vsix` and inspect its `package.json` to make sure the version is what you expect, + or look at the source if there's any doubt the right code is being shipped. +1. Install the `.vsix` file into your vscode IDE and ensure the extension can load properly. Run a single command (like run query, or add database). +1. Approve the deployments of the [Release](https://github.com/github/vscode-codeql/actions?query=workflow%3ARelease) workflow run. This will automatically publish to Open VSX and VS Code Marketplace. + - Note that in order to approve publishing to the extension marketplaces, you need to be part of *codeql-vscode-reviewers*. + - If there is an authentication failure when publishing, be sure to check that the authentication keys haven't expired. See below. +1. Go to the draft GitHub release in [the releases page](https://github.com/github/vscode-codeql/releases), click 'Edit', add some summary description, and publish it. +1. Confirm the new release is marked as the latest release. +1. Confirm that the new release is available on the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) and on the [Open VSX Registry](https://open-vsx.org/extension/GitHub/vscode-codeql). +1. If documentation changes need to be published, notify documentation team that release has been made. +1. Review and merge the version bump PR that is automatically created by the Release workflow. + +## Secrets and authentication for publishing + +Repository administrators will need to manage the authentication keys for publishing to the VS Code marketplace and Open VSX. Each requires an authentication token. + +To regenerate the Open VSX token: + +1. Log in to the [user settings page on Open VSX](https://open-vsx.org/user-settings/namespaces). +1. Make sure you are a member of the GitHub namespace. +1. Go to the [Access Tokens](https://open-vsx.org/user-settings/tokens) page and generate a new token. +1. Update the secret in the `publish-open-vsx` environment in the project settings. + +Publishing to the VS Code Marketplace is done using a user-assigned managed identity and should not require the token to be manually updated. diff --git a/docs/test-plan.md b/docs/test-plan.md new file mode 100644 index 00000000000..37206801ddf --- /dev/null +++ b/docs/test-plan.md @@ -0,0 +1,515 @@ +# Test Plan + +This document describes the manual test plan for the QL extension for Visual Studio Code. + +The plan will be executed manually to start with but the goal is to eventually automate parts of the process (based on +effort vs value basis). + +## What this doesn't cover + +We don't need to test features (and permutations of features) that are covered by automated tests. + +## Before releasing the VS Code extension + +- Run at least one local query and MRVA using the existing version of the extension (to generate "old" query history items). +- Go through the required test cases listed below. +- Check major PRs since the previous release for specific one-off things to test. Based on that, you might want to +choose to go through some of the Optional Test Cases. + +## Required Test Cases + +### Local databases + +#### Test case 1: Download a database from GitHub + +1. Click "Download Database from GitHub" and enter `angular-cn/ng-nice` and select the javascript language if prompted + +#### Test case 2: Import a database from an archive + +1. Obtain a javascript database for `babel/babel` + - You can do `gh api "/repos/babel/babel/code-scanning/codeql/databases/javascript" -H "Accept: application/zip" > babel.zip` to fetch a database from GitHub. +2. Click "Choose Database from Archive" and select the file you just downloaded above. + +### Local queries + +#### Test case 1: Running a path problem query and viewing results + +1. Open the [javascript UnsafeJQueryPlugin query](https://github.com/github/codeql/blob/main/javascript/ql/src/Security/CWE-079/UnsafeJQueryPlugin.ql). +2. Select the `angular-cn/ng-nice` database (or download it if you don't have one already) +3. Run a local query. +4. Once the query completes: + - Check that the result messages are rendered + - Check that the paths can be opened and paths are rendered correctly + - Check that alert locations can be clicked on + +#### Test case 2: Running a problem query and viewing results + +1. Open the [javascript ReDoS query](https://github.com/github/codeql/blob/main/javascript/ql/src/Performance/ReDoS.ql). +2. Select the `angular-cn/ng-nice` database (or download it if you don't have one already) +3. Run a local query. +4. Once the query completes: + - Check that the result messages are rendered + - Check that alert locations can be clicked on + +#### Test case 3: Running a non-problem query and viewing results + +1. Open the [cpp HubClasses query](https://github.com/github/codeql/blob/main/cpp/ql/src/Architecture/General%20Class-Level%20Information/HubClasses.ql). +2. Select the `google/brotli` database (or download it if you don't have one already) +3. Run a local query. +4. Once the query completes: + - Check that the `#select` result set is shown + - Check that the results table is rendered + - Check that result locations can be clicked on + +#### Test case 4: Can use AST viewer + +1. Click on any code location from a previous query to open a source file from a database +2. Select the highlighted code in the source file +3. Open the AST viewing panel and click "View AST" +4. Once the AST is computed: + - Check that it can be navigated + +### MRVA + +#### Test Case 1: Running a path problem query and viewing results + +1. Open the [javascript UnsafeJQueryPlugin query](https://github.com/github/codeql/blob/main/javascript/ql/src/Security/CWE-079/UnsafeJQueryPlugin.ql). +2. Run a MRVA against the following repo list: + + ```json + { + "name": "test-repo-list", + "repositories": [ + "angular-cn/ng-nice", + "apache/hadoop", + "apache/hive" + ] + } + ``` + + More concretely, in the Variant Analysis Repositories pane of the CodeQL extension, click the "Open database configuration" (`{}`) button, and insert the JSON snippet above into the `.databases.variantAnalysis.repositoryLists[]` array. Alternatively, use the folder icon to create a new list, and add the abovementioned repos into the list using the "Add new database" (`+`) button. + +3. Check that a notification message pops up and the results view is opened. +4. Check the query history. It should: + - Show that an item has been added to the query history + - The item should be marked as "in progress". +5. Once the query starts: + - Check the results view + - Check the code paths view, including the code paths drop down menu. + - Check that the repository filter box works + - Click links to files/locations on GitHub + - Check that the query history item is updated to show the number of results +6. Once the query completes: + - Check that the query history item is updated to show the query status as "complete" + +#### Test Case 2: Running a problem query and viewing results + +1. Open the [javascript ReDoS query](https://github.com/github/codeql/blob/main/javascript/ql/src/Performance/ReDoS.ql). +2. Run a MRVA against the "Top 10" repositories. +3. Check that a notification message pops up and the results view is opened. +4. Check the query history. It should: + - Show that an item has been added to the query history + - The item should be marked as "in progress". +5. Once the query completes: + - Check that the results are rendered with an alert message and a highlighted code snippet: + + ![highlighted-code-snippet](images/highlighted-code-snippet.png) + +#### Test Case 3: Running a non-problem query and viewing results + +1. Open the [cpp FunLinesOfCode query](https://github.com/github/codeql/blob/main/cpp/ql/src/Metrics/Functions/FunLinesOfCode.ql). +2. Run a MRVA against a single repository (e.g. `google/brotli`). +3. Check that a notification message pops up and the results view is opened. +4. Check the query history. It should: + - Show that an item has been added to the query history + - The item should be marked as "in progress". +5. Once the query completes: + - Check that the results show up in a table: + + ![results-table](images/results-table.png) + +#### Test Case 4: Interacting with query history + +1. Click a history item (for MRVA): + - Check that exporting results works + - Check that sorting results works + - Check that copying repo lists works +2. Click "Open Results Directory": + - Check that the correct directory is opened and there are results in it +3. Click "View Logs": + - Check that the correct workflow is opened + +#### Test Case 5: Canceling a variant analysis run + +Run one of the above MRVAs, but cancel it from within VS Code: + +- Check that the query is canceled and the query history item is updated. +- Check that the workflow run is also canceled. +- Check that any available results are visible in VS Code. + +#### Test Case 6: Using model packs in MRVA + +1. Create a model pack with mock data + 1. Make sure you have `"codeQL.runningQueries.useExtensionPacks": "all"` enabled in the VSCode settings. + 1. Create a new directory `test-model-pack` anywhere in the CodeQL Workspace. (If you have a `github/codeql` checkout open in VS Code, you can create the directory under the `shared` directory, which is already included in the `codeql-workspace.yml` file.) + 1. Create a `qlpack.yml` file in that directory with the following contents: + + ```yaml + name: github/test-model-pack + version: 0.0.0 + library: true + extensionTargets: + codeql/python-all: '*' + dataExtensions: + - extension.yml + ``` + + 1. Create an `extension.yml` in the same directory with the following contents: + + ```yaml + extensions: + - addsTo: + pack: codeql/python-all + extensible: sinkModel + data: + - ["vscode-codeql","Member[initialize].Argument[0]","code-injection"] + ``` + +1. In a Python query pack, create the following query (e.g. `sinks.ql`): + + ```ql + import python + import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions + + from string path, string kind + where sinkModel("vscode-codeql", path, kind, _) + select path, kind + ``` + +1. Run a MRVA against a Python repository (e.g. `psf/requests`) with this query. +1. Check that the results view contains 1 result with the values corresponding to the `extension.yml` file: + ![Model packs results table for `psf/requests`](images/model-pack-results-table.png) + +### CodeQL Model Editor + +#### Test Case 1: Opening the model editor + +1. Download the `sofastack/sofa-jraft` java database from GitHub. +1. Select the database in the CodeQL extension. +1. Select "Add Database Source to Workspace" from the context menu of the database. This step is needed for the Model Editor to display the "Open source" link. +1. Open the Model Editor with the "CodeQL: Open CodeQL Model Editor" command from the command palette. + - Check that the editor loads and shows methods to model. + - Check that methods are grouped per library (e.g. `rocksdbjni@7.7.3` or `asm@6.0`) + - Check that the "Open source" link works (if you have the database source). + - Check that the 'View' button works and the Method Usage panel highlight the correct method and usage + - Check that the Method Modeling panel shows the correct method and modeling state + +#### Test Case 2: Model methods + +1. Expand one of the libraries. + - Change the model type and check that the other dropdowns change. + - Check that the method modeling panel updates accordingly +2. Save the modeled methods. +3. Click "Open extension pack" + - Check that the file explorer opens a directory with a "models" directory +4. Open the ".model.yml" file corresponding to the library that was changed. + - Check that the file contains entries for the methods that were modeled. + +#### Test Case 3: Model as dependency + +Note that this test requires the feature flag: `codeQL.model.flowGeneration` + +1. Click "Model as dependency" + - Check that grouping are now per package (e.g. `com.alipay.sofa.rraft.option` or `com.google.protobuf`) +2. Click "Generate". + - Check that rows are filled out. + +### GitHub database download + +#### Test case 1: Download a database + +Open a clone of the [`github/codeql`](https://github.com/github/codeql) repository as a folder. + +1. Wait a few seconds until the CodeQL extension is fully initialized. + - Check that the following prompt appears: + + ![database-download-prompt](images/github-database-download-prompt.png) + + - If the prompt does not appear, ensure that the `codeQL.githubDatabase.download` setting is not set in workspace or user settings. + +2. Click "Download". +3. Select the "C#" and "JavaScript" databases. + - Check that there are separate notifications for both downloads. + - Check that both databases are added when the downloads are complete. + - Note: if only one of the databases appears in the list, this is a known regression for which a fix has not been prioritized at the time of writing. + +### General + +#### Test case 1: Change to a different colour theme + +Open at least one of the above MRVAs and at least one local query, then try changing to a different colour theme and check that everything looks sensible. +Are there any components that are not showing up? + +## Optional Test Cases + +### Modeling Flow + +1. Check that a method can have multiple models: + - Add a couple of new models for one method in the model editor + - Save and check that the modeling file (use the 'open extension pack' button to open it) shows multiple methods + - Check that the Method Modeling Panel shows the correct multiple models + - Check that you can browse through different models in the Method Modeling Panel + - Check that a 'duplicated classification' error appears in both model editor and modeling panel when a duplicate modeling occurs + - Check that a 'conflicting classification' error appears when a neutral model type is paired with a model of the same kind + - Check that clicking on the error highlights the correct modeling in both the editor and the modeling panel +2. Check the Method Usage Panel + - Check that the Method Usage Panel opens and jumps to the correct usage when clicking on 'View' in the model editor + - Check that the first and following usages are opening when clicking on a usage + - Check that the usage icon color turns green when saving a newly modeled method + - Check that the usage icon color turns red when saving a newly unmodeld method +3. Check the Method Modeling Panel + - Check that the 'Start modeling' button opens a new model editor + - Check that it refreshes the blank state when a model editor is opened/closed + - Check that when modeling in the editor the modeling panel updates accordingly + - Check that when modeling in the modeling panel the model editor updates accordingly + +### Selecting MRVA repositories to run on + +#### Test case 1: Running a query on a single repository + +1. When the repository exists and is public + 1. Has a CodeQL database for the correct language + 2. Has a CodeQL database for another language + 3. Does not have any CodeQL databases +2. When the repository exists and is private + 1. Is accessible and has a CodeQL database + 2. Is not accessible +3. When the repository does not exist + +#### Test case 2: Running a query on a custom repository list + +1. The repository list is non-empty + 1. All repositories in the list have a CodeQL database + 2. Some but not all repositories in the list have a CodeQL database + 3. No repositories in the list have a CodeQL database +2. The repository list is empty + +#### Test case 3: Running a query on all repositories in an organization + +1. The org exists + 1. The org contains repositories that have CodeQL databases + 2. The org contains repositories of the right language but without CodeQL databases + 3. The org contains repositories not of the right language + 4. The org contains private repositories that are inaccessible +2. The org does not exist + +### Using different types of controller repos for MRVA + +#### Test case 1: Running a query when the controller repository is public + +1. Can run queries on public repositories +2. Can not run queries on private repositories + +#### Test case 2: Running a query when the controller repository is private + +1. Can run queries on public repositories +2. Can run queries on private repositories + +#### Test case 3: Running a query when the controller repo exists but you do not have write access + +1. Cannot run queries + +#### Test case 4: Running a query when the controller repo doesn’t exist + +1. Cannot run queries + +#### Test case 5: Running a query when the "config field" for the controller repo is not set + +1. Cannot run queries + +### Query History + +This requires running a MRVA query and viewing the query history. + +The first test case specifies actions that you can do when the query is first run and is in "pending" state. We start +with this since it has quite a limited number of actions you can do. + +#### Test case 1: When variant analysis state is "pending" + +1. Starts monitoring variant analysis +2. Cannot open query history item +3. Can delete a query history item + 1. Item is removed from list in UI + 2. Files on dist are deleted (can get to files using "open query directory") +4. Can sort query history items + 1. By name + 2. By query date + 3. By result count +5. Cannot open query directory +6. Can open query that produced these results + 1. When the file still exists and has not moved + 2. When the file does not exist +7. Cannot view logs +8. Cannot copy repository list +9. Cannot export results +10. Cannot select to create a gist +11. Cannot select to save as markdown +12. Cannot cancel analysis + +#### Test case 2: When the variant analysis state is not "pending" + +1. Query history is loaded when VSCode starts +2. Handles when action workflow was canceled while VSCode was closed +3. Can open query history item + 1. Manually by clicking on them + 2. Automatically when VSCode starts (if they were open when VSCode was last used) +4. Can delete a query history item + 1. Item is removed from list in UI + 2. Files on dist are deleted (can get to files using "open query directory") +5. Can sort query history items + 1. By name + 2. By query date + 3. By result count +6. Can open query directory +7. Can open query that produced these results + 1. When the file still exists and has not moved + 2. When the file does not exist +8. Can view logs +9. Can copy repository list + 1. Text is copied to clipboard + 2. Text is a valid repository list +10. Can export results +11. Can select to create gist + 1. A gist is created + 2. The first thing in the gist is a summary + 3. Contains a file for each repository with results + 4. A popup links you to the gist +12. Can select to save as markdown + 1. A directory is created on disk + 2. Contains a summary file + 3. Contains a file for each repository with results + 4. A popup allows you to open the directory + +#### Test case 3: When variant analysis state is "in_progress" + +1. Starts monitoring variant analysis + 1. Ready results are downloaded +2. Can cancel analysis + 1. Causes the actions run to be canceled + +#### Test case 4: When variant analysis state is in final state ("succeeded"/"failed"/"canceled") + +1. Stops monitoring variant analysis + 1. All results are downloaded if state is succeeded + 2. Otherwise, ready results are downloaded, if any are available +2. Cannot cancel analysis + +### MRVA results view + +This requires running a MRVA query and seeing the results view. + + +#### Test case 1: When variant analysis state is "pending" + +1. Can open a results view +2. Results view opens automatically + - When starting variant analysis run + - When VSCode opens (if view was open when VSCode was closed) +3. Results view is empty + +#### Test case 2: When variant analysis state is not "pending" + +1. Can open a results view +2. Results view opens automatically + 1. When starting variant analysis run + 2. When VSCode opens (if view was open when VSCode was closed) +3. Can copy repository list + 1. Text is copied to clipboard + 2. Text is a valid repository list +4. Can export results + 1. Only includes repos that you have selected (also see section from query history) +5. Can cancel analysis +6. Can open query file + 1. When the file still exists and has not moved + 2. When the file does not exist +7. Can open query text +8. Can sort repos + 1. Alphabetically + 2. By number of results + 3. By popularity +9. Can filter repos +10. Shows correct statistics + 1. Total number of results + 2. Total number of repositories + 3. Duration +11. Can see live results + 1. Results appear in extension as soon as each query is completed +12. Can view interpreted results (i.e. for a "problem" query) + 1. Can view non-path results + 2. Can view code paths for "path-problem" queries +13. Can view raw results (i.e. for a non "problem" query) + 1. Renders a table +14. Can see skipped repositories + 1. Can see repos with no db in a tab + 1. Shown warning that explains the tab + 2. Can see repos with no access in a tab + 1. Shown warning that explains the tab + 3. Only shows tab when there are skipped repos +15. Result downloads + 1. All results are downloaded automatically + 2. Download status is indicated by a spinner (Not currently any indication of progress beyond "downloading" and "not downloading") + 3. Only 3 items are downloaded at a time + 4. Results for completed queries are still downloaded when + 1. Some but not all queries failed + 2. The variant analysis was canceled after some queries completed + +#### Test case 3: When variant analysis state is in "succeeded" state + +1. Can view logs +2. All results are downloaded + +#### Test case 4: When variant analysis is in "failed" or "canceled" state + +1. Can view logs +1. Results for finished queries are still downloaded. + +### MRVA repositories panel + +1. Add a list +1. Add a database at the top level +1. Add a database to a list +1. Add a the same database at a top-level and in a list +1. Delete a list +1. Delete a database from the top level +1. Delete a database from a list +1. Add an owner +1. Remove an owner +1. Rename a list +1. Open on GitHub +1. Select a list (via "Select" button and via context menu action) +1. Run MRVA against a user-defined list +1. Run MRVA against a top-N list +1. Run MRVA against an owner +1. Run MRVA against a database +1. Copy repo list +1. Open config file +1. Make changes via config file (ensure JSON schema is helping out) +1. Close and re-open VS Code (ensure lists are there) +1. Collapse/expand tree nodes +1. Create a new list, right click and select "Add repositories with GitHub Code Search". Enter the language 'python' and the query "UserMixin". This might result in an HttpError when it is run for the first time. If so, try again. When run for the second time it might show a rate limiting notification after a while or directly populate the list with roughly 900 repositories. + +Error cases that trigger an error notification: + +1. Try to add a list with a name that already exists +1. Try to add a top-level database that already exists +1. Try to add a database in a list that already exists in the list + +Error cases that show an error in the panel (and only the edit button should be visible): + +1. Edit the db config file directly and save invalid JSON +1. Edit the db config file directly and save valid JSON but invalid config (e.g. add an unknown property) +1. Edit the db config file directly and save two lists with the same name + +Cases where there the welcome view is shown: + +1. No controller repo is set in the user's settings JSON. diff --git a/docs/testing.md b/docs/testing.md new file mode 100644 index 00000000000..3c2007dbe7b --- /dev/null +++ b/docs/testing.md @@ -0,0 +1,136 @@ +# Testing + +We have several types of tests: + +- Unit tests: these live in the `tests/unit-tests/` directory +- View tests: these live in `src/view/variant-analysis/__tests__/` +- VSCode integration tests: + - `test/vscode-tests/activated-extension` tests: These are intended to cover functionality that require the full extension to be activated but don't require the CLI. This suite is not run against multiple versions of the CLI in CI. + - `test/vscode-tests/no-workspace` tests: These are intended to cover functionality around not having a workspace. The extension is not activated in these tests. + - `test/vscode-tests/minimal-workspace` tests: These are intended to cover functionality that need a workspace but don't require the full extension to be activated. +- CLI integration tests: these live in `test/vscode-tests/cli-integration` + - These tests are intended to cover functionality that is related to the integration between the CodeQL CLI and the extension. These tests are run against each supported versions of the CLI in CI. + +The CLI integration tests require an instance of the CodeQL CLI to run so they will require some extra setup steps. When adding new tests to our test suite, please be mindful of whether they need to be in the cli-integration folder. If the tests don't depend on the CLI, they are better suited to being a VSCode integration test. + +Any test data you're using (sample projects, config files, etc.) must go in a `test/vscode-tests/*/data` directory. When you run the tests, the test runner will copy the data directory to `out/vscode-tests/*/data`. + +## Running the tests + +Pre-requisites: + +1. Run `npm run build`. +2. You will need to have `npm run watch` running in the background. + +### 1. From the terminal + +Then, from the `extensions/ql-vscode` directory, use the appropriate command to run the tests: + +- Unit tests: `npm run test:unit` +- View Tests: `npm run test:view` +- VSCode integration tests: `npm run test:vscode-integration` + +#### Running CLI integration tests from the terminal + +The CLI integration tests require the CodeQL standard libraries in order to run so you will need to clone a local copy of the `github/codeql` repository. + +1. Set the `TEST_CODEQL_PATH` environment variable: running from a terminal, you _must_ set the `TEST_CODEQL_PATH` variable to point to a checkout of the `github/codeql` repository. The appropriate CLI version will be downloaded as part of the test. + +2. Run your test command: + +```shell +cd extensions/ql-vscode && npm run test:cli-integration +``` + +### 2. From VSCode + +Alternatively, you can run the tests inside of VSCode. There are several VSCode launch configurations defined that run the unit and integration tests. + +You will need to run tests using a task from inside of VS Code, under the "Run and Debug" view: + +- Unit tests: run the _Launch Unit Tests_ task +- View Tests: run the _Launch Unit Tests - React_ task +- VSCode integration tests: run the _Launch Unit Tests - No Workspace_ and _Launch Unit Tests - Minimal Workspace_ tasks + +#### Running CLI integration tests from VSCode + +The CLI integration tests require the CodeQL standard libraries in order to run so you will need to clone a local copy of the `github/codeql` repository. + +1. Set the `TEST_CODEQL_PATH` environment variable: running from a terminal, you _must_ set the `TEST_CODEQL_PATH` variable to point to a checkout of the `github/codeql` repository. The appropriate CLI version will be downloaded as part of the test. + +2. Set the codeql path in VSCode's launch configuration: open `launch.json` and under the _Launch Integration Tests - With CLI_ section, uncomment the `"${workspaceRoot}/../codeql"` line. If you've cloned the `github/codeql` repo to a different path, replace the value with the correct path. + +3. Run the VSCode task from the "Run and Debug" view called _Launch Integration Tests - With CLI_. + +## Running a single test + +### 1. Running a single test from the terminal + +The easiest way to run a single test is to change the `it` of the test to `it.only` and then run the test command with some additional options +to only run tests for this specific file. For example, to run the test `test/vscode-tests/cli-integration/run-queries.test.ts`: + +```shell +npm run test:cli-integration -- --runTestsByPath test/vscode-tests/cli-integration/run-queries.test.ts +``` + +You can also use the `--testNamePattern` option to run a specific test within a file. For example, to run the test `test/vscode-tests/cli-integration/run-queries.test.ts`: + +```shell +npm run test:cli-integration -- --runTestsByPath test/vscode-tests/cli-integration/run-queries.test.ts --testNamePattern "should create a QueryEvaluationInfo" +``` + +### 2. Running a single test from VSCode + +Alternatively, you can run a single test inside VSCode. To do so, install the [Jest Runner](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner) extension. Then, +you will have quicklinks to run a single test from within test files. To run a single unit or integration test, click the "Run" button. Debugging a single test is currently only supported +for unit tests by default. To debug integration tests, open the `.vscode/settings.json` file and uncomment the `jestrunner.debugOptions` lines. This will allow you to debug integration tests. +Please make sure to revert this change before committing; with this setting enabled, it is not possible to debug unit tests. + +Without the Jest Runner extension, you can also use the "Launch Selected Unit Test (vscode-codeql)" launch configuration to run a single unit test. + +## Using a mock GitHub API server + +Multi-Repo Variant Analyses (MRVA) rely on the GitHub API. In order to make development and testing easy, we have functionality that allows us to intercept requests to the GitHub API and provide mock responses. + +### Using a pre-recorded test scenario + +To run a mock MRVA scenario, follow these steps: + +1. Enable the mock GitHub API server by adding the following in your VS Code user settings (which can be found by running the `Preferences: Open User Settings (JSON)` VS Code command): + +```json +"codeQL.mockGitHubApiServer": { + "enabled": true +} +``` + +1. Run the `CodeQL: Mock GitHub API Server: Load Scenario` command from the command pallet, and choose one of the scenarios to load. +1. Execute a normal MRVA. At this point you should see the scenario being played out, rather than an actual MRVA running. +1. Once you're done, you can stop using the mock scenario with `CodeQL: Mock GitHub API Server: Unload Scenario` + +If you want to replay the same scenario you should unload and reload it so requests are replayed from the start. + +### Recording a new test scenario + +To record a new mock MRVA scenario, follow these steps: + +1. Enable the mock GitHub API server by adding the following in your VS Code user settings (which can be found by running the `Preferences: Open User Settings (JSON)` VS Code command): + +```json +"codeQL.mockGitHubApiServer": { + "enabled": true +} +``` + +1. Run the `CodeQL: Mock GitHub API Server: Start Scenario Recording` VS Code command from the command pallet. +1. Execute a normal MRVA. +1. Once what you wanted to record is done (e.g. the MRVA has finished), then run the `CodeQL: Mock GitHub API Server: Save Scenario` command from the command pallet. +1. The scenario should then be available for replaying. + +If you want to cancel recording, run the `CodeQL: Mock GitHub API Server: Cancel Scenario Recording` command. + +Once the scenario has been recorded, it's often useful to remove some of the requests to speed up the replay, particularly ones that fetch the variant analysis status. Once some of the request files have manually been removed, the [fix-scenario-file-numbering script](../extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts) can be used to update the number of the files. See the script file for details on how to use. + +### Scenario data location + +Pre-recorded scenarios are stored in `./src/common/mock-gh-api/scenarios`. However, it's possible to configure the location, by setting the `codeQL.mockGitHubApiServer.scenariosPath` configuration property in the VS Code user settings. diff --git a/docs/vscode-version.md b/docs/vscode-version.md new file mode 100644 index 00000000000..2cb14557c6b --- /dev/null +++ b/docs/vscode-version.md @@ -0,0 +1,41 @@ +# VS Code version + +The CodeQL for VS Code extension specifies the versions of VS Code that it is compatible with. VS Code will only offer to install and upgrade the extension when this version range is satisfied. + +## Where is the VS Code version specified + +1. Hard limit in [`package.json`](https://github.com/github/vscode-codeql/blob/606bfd7f877d9fffe4ff83b78015ab15f8840b12/extensions/ql-vscode/package.json#L16) + + This is the value that VS Code understands and respects. If a user does not meet this version requirement then VS Code will not offer to install the CodeQL for VS Code extension, and if the extension is already installed then it will silently refuse to upgrade the extension. + +1. Soft limit in [`extension.ts`](https://github.com/github/vscode-codeql/blob/606bfd7f877d9fffe4ff83b78015ab15f8840b12/extensions/ql-vscode/src/extension.ts#L307) + + This value is used internally by the CodeQL for VS Code extension and is used to provide a warning to users without blocking them from installing or upgrading. If the extension detects that this version range is not met it will output a warning message to the user prompting them to upgrade their VS Code version to ge the latest features of CodeQL. + +## When to update the VS Code version + +Generally we should aim to support as wide a range of VS Code versions as we can, so unless there is a reason to do so we do not update the minimum VS Code version requirement. +Reasons for updating the minimum VS Code version include: + +- A new feature is included in VS Code. We may want to ensure that it is available to use so we do not have to provide an alternative code path. +- A breaking change has happened in VS Code, and it is not possible to support both new and old versions. + +Also consider what percentage of our users are using each VS Code version. This information is available in our telemetry. + +## How to update the VS Code version + +To provide a good experience to users, it is recommented to update the `MIN_VERSION` in `extension.ts` first and release, and then update the `vscode` version in `package.json` and release again. +By staggering this update across two releases it gives users on older VS Code versions a chance to upgrade before it silently refuses to upgrade them. + +After updating the minimum version in `package.json`, make sure to also run the following command to update any generated +files dependent on this version: + +```bash +npm run generate +``` + +## VS Code version used in tests + +The integration tests use the latest stable version of VS Code. This is specified in +the [`test/vscode-tests/jest-runner-vscode.config.base.js`](https://github.com/github/vscode-codeql/blob/main/extensions/ql-vscode/test/vscode-tests/jest-runner-vscode.config.base.js#L15) +file. This shouldn't need to be updated unless there is a breaking change in VS Code that prevents the tests from running. diff --git a/extensions/ql-vscode/.eslintrc.js b/extensions/ql-vscode/.eslintrc.js deleted file mode 100644 index 163205ec2ec..00000000000 --- a/extensions/ql-vscode/.eslintrc.js +++ /dev/null @@ -1,37 +0,0 @@ -module.exports = { - parser: "@typescript-eslint/parser", - parserOptions: { - ecmaVersion: 2018, - sourceType: "module", - project: ["tsconfig.json", "./src/**/tsconfig.json", "./gulpfile.ts/tsconfig.json"], - }, - plugins: ["@typescript-eslint"], - env: { - node: true, - es6: true, - }, - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - rules: { - "@typescript-eslint/no-use-before-define": 0, - "@typescript-eslint/no-unused-vars": [ - "warn", - { - vars: "all", - args: "none", - ignoreRestSiblings: false, - }, - ], - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-floating-promises": [ "error", { ignoreVoid: true } ], - "prefer-const": ["warn", { destructuring: "all" }], - indent: "off", - "@typescript-eslint/indent": "off", - "@typescript-eslint/no-throw-literal": "error", - "no-useless-escape": 0, - semi: 2, - quotes: ["warn", "single"] - }, -}; diff --git a/extensions/ql-vscode/.markdownlint-cli2.cjs b/extensions/ql-vscode/.markdownlint-cli2.cjs new file mode 100644 index 00000000000..9367d98f75d --- /dev/null +++ b/extensions/ql-vscode/.markdownlint-cli2.cjs @@ -0,0 +1,16 @@ +// Having the base options in a top-level config file means +// that the VS Code markdownlint extension can pick them up +// too, since that only considers _this_ file when looking +// at files in this directory or below. +base_options = require('../../.markdownlint.json') + +const options = require('@github/markdownlint-github').init( + base_options +) +module.exports = { + config: options, + customRules: ["@github/markdownlint-github"], + outputFormatters: [ + [ "markdownlint-cli2-formatter-pretty", { "appendLink": true } ] // ensures the error message includes a link to the rule documentation + ] +} diff --git a/extensions/ql-vscode/.npmrc b/extensions/ql-vscode/.npmrc new file mode 100644 index 00000000000..d9d4852eeb1 --- /dev/null +++ b/extensions/ql-vscode/.npmrc @@ -0,0 +1,2 @@ +# Storybook requires this option to be set. See https://github.com/storybookjs/storybook/issues/18298 +legacy-peer-deps=true diff --git a/extensions/ql-vscode/.nvmrc b/extensions/ql-vscode/.nvmrc index ff650592a1e..c6a66a6e6a6 100644 --- a/extensions/ql-vscode/.nvmrc +++ b/extensions/ql-vscode/.nvmrc @@ -1 +1 @@ -v16.13.0 +v22.21.1 diff --git a/extensions/ql-vscode/.prettierignore b/extensions/ql-vscode/.prettierignore new file mode 100644 index 00000000000..b463ca69e2a --- /dev/null +++ b/extensions/ql-vscode/.prettierignore @@ -0,0 +1,10 @@ +.vscode-test/ +node_modules/ +out/ + +# This file gets written by an actions workflow. +# Don't try to format it. +supported_cli_versions.json + +# Include the Storybook config +!.storybook diff --git a/extensions/ql-vscode/.prettierrc b/extensions/ql-vscode/.prettierrc new file mode 100644 index 00000000000..bf357fbbc08 --- /dev/null +++ b/extensions/ql-vscode/.prettierrc @@ -0,0 +1,3 @@ +{ + "trailingComma": "all" +} diff --git a/extensions/ql-vscode/.storybook/main.ts b/extensions/ql-vscode/.storybook/main.ts new file mode 100644 index 00000000000..b3c76eaf6a8 --- /dev/null +++ b/extensions/ql-vscode/.storybook/main.ts @@ -0,0 +1,17 @@ +import type { StorybookConfig } from "@storybook/react-vite"; + +const config: StorybookConfig = { + stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"], + addons: [ + "@storybook/addon-docs", + "@storybook/addon-links", + "@storybook/addon-a11y", + "./vscode-theme-addon/preset.ts", + ], + framework: { + name: "@storybook/react-vite", + options: {}, + }, +}; + +export default config; diff --git a/extensions/ql-vscode/.storybook/manager.ts b/extensions/ql-vscode/.storybook/manager.ts new file mode 100644 index 00000000000..363a3ee8c10 --- /dev/null +++ b/extensions/ql-vscode/.storybook/manager.ts @@ -0,0 +1,7 @@ +import { addons } from "storybook/manager-api"; +import { themes } from "storybook/theming"; + +addons.setConfig({ + theme: themes.dark, + enableShortcuts: false, +}); diff --git a/extensions/ql-vscode/.storybook/preview.ts b/extensions/ql-vscode/.storybook/preview.ts new file mode 100644 index 00000000000..062c97c9c30 --- /dev/null +++ b/extensions/ql-vscode/.storybook/preview.ts @@ -0,0 +1,44 @@ +import type { Preview } from "@storybook/react"; +import { themes } from "storybook/theming"; +import { action } from "storybook/actions"; + +// Allow all stories/components to use Codicons +import "@vscode/codicons/dist/codicon.css"; + +import type { VsCodeApi } from "../src/view/vscode-api"; + +declare global { + interface Window { + acquireVsCodeApi: () => VsCodeApi; + } +} + +window.acquireVsCodeApi = () => ({ + postMessage: action("post-vscode-message"), + setState: action("set-vscode-state"), +}); + +// https://storybook.js.org/docs/react/configure/overview#configure-story-rendering +const preview: Preview = { + parameters: { + // All props starting with `on` will automatically receive an action as a prop + actions: { argTypesRegex: "^on[A-Z].*" }, + // All props matching these names will automatically get the correct control + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + // Use a dark theme to be aligned with VSCode + docs: { + theme: themes.dark, + }, + backgrounds: { + // The background is injected by our theme CSS files + disable: true, + }, + }, +}; + +export default preview; diff --git a/extensions/ql-vscode/.storybook/tsconfig.json b/extensions/ql-vscode/.storybook/tsconfig.json new file mode 100644 index 00000000000..6d40b4bf367 --- /dev/null +++ b/extensions/ql-vscode/.storybook/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "module": "esnext", + "moduleResolution": "bundler", + "target": "es2021", + "outDir": "out", + "lib": ["ES2021", "dom"], + "jsx": "react", + "sourceMap": true, + "rootDir": "..", + "strict": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "experimentalDecorators": true, + "skipLibCheck": true, + "allowImportingTsExtensions": true, + "noEmit": true + }, + "exclude": ["node_modules"] +} diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/ThemeSelector.tsx b/extensions/ql-vscode/.storybook/vscode-theme-addon/ThemeSelector.tsx new file mode 100644 index 00000000000..2fa1dd5af6e --- /dev/null +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/ThemeSelector.tsx @@ -0,0 +1,60 @@ +import * as React from "react"; +import type { FunctionComponent } from "react"; +import { useCallback } from "react"; + +import { useGlobals } from "storybook/manager-api"; +import { + IconButton, + TooltipLinkList, + WithTooltip, +} from "storybook/internal/components"; +import { DashboardIcon } from "@storybook/icons"; + +import { themeNames, VSCodeTheme } from "./theme"; + +export const ThemeSelector: FunctionComponent = () => { + const [{ vscodeTheme }, updateGlobals] = useGlobals(); + + const changeTheme = useCallback( + (theme: VSCodeTheme) => { + updateGlobals({ + vscodeTheme: theme, + }); + }, + [updateGlobals], + ); + + const createLinks = useCallback( + (onHide: () => void) => + Object.values(VSCodeTheme).map((theme) => ({ + id: theme, + onClick() { + changeTheme(theme); + onHide(); + }, + title: themeNames[theme], + value: theme, + active: vscodeTheme === theme, + })), + [vscodeTheme, changeTheme], + ); + + return ( + void }) => ( + + )} + > + + + + + ); +}; diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/manager.tsx b/extensions/ql-vscode/.storybook/vscode-theme-addon/manager.tsx new file mode 100644 index 00000000000..d4964958f71 --- /dev/null +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/manager.tsx @@ -0,0 +1,15 @@ +import * as React from "react"; +import { addons } from "storybook/manager-api"; +import { Addon_TypesEnum } from "storybook/internal/types"; +import { ThemeSelector } from "./ThemeSelector"; + +const ADDON_ID = "vscode-theme-addon"; + +addons.register(ADDON_ID, () => { + addons.add(ADDON_ID, { + title: "VSCode Themes", + type: Addon_TypesEnum.TOOL, + match: ({ viewMode }) => !!(viewMode && viewMode.match(/^(story|docs)$/)), + render: () => , + }); +}); diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/preset.ts b/extensions/ql-vscode/.storybook/vscode-theme-addon/preset.ts new file mode 100644 index 00000000000..95687b00c96 --- /dev/null +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/preset.ts @@ -0,0 +1,11 @@ +import { fileURLToPath } from "node:url"; + +const previewPath = fileURLToPath(new URL("./preview.ts", import.meta.url)); +const managerPath = fileURLToPath(new URL("./manager.tsx", import.meta.url)); +export function previewAnnotations(entry: string[] = []) { + return [...entry, previewPath]; +} + +export function managerEntries(entry: string[] = []) { + return [...entry, managerPath]; +} diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/preview.ts b/extensions/ql-vscode/.storybook/vscode-theme-addon/preview.ts new file mode 100644 index 00000000000..be37142a492 --- /dev/null +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/preview.ts @@ -0,0 +1,8 @@ +import { withTheme } from "./withTheme"; +import { VSCodeTheme } from "./theme"; + +export const decorators = [withTheme]; + +export const globals = { + vscodeTheme: VSCodeTheme.Dark, +}; diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/theme.ts b/extensions/ql-vscode/.storybook/vscode-theme-addon/theme.ts new file mode 100644 index 00000000000..2631b92e5c5 --- /dev/null +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/theme.ts @@ -0,0 +1,17 @@ +export enum VSCodeTheme { + Dark = "dark", + Light = "light", + LightHighContrast = "light-high-contrast", + DarkHighContrast = "dark-high-contrast", + GitHubLightDefault = "github-light-default", + GitHubDarkDefault = "github-dark-default", +} + +export const themeNames: { [key in VSCodeTheme]: string } = { + [VSCodeTheme.Dark]: "Dark+", + [VSCodeTheme.Light]: "Light+", + [VSCodeTheme.LightHighContrast]: "Light High Contrast", + [VSCodeTheme.DarkHighContrast]: "Dark High Contrast", + [VSCodeTheme.GitHubLightDefault]: "GitHub Light Default", + [VSCodeTheme.GitHubDarkDefault]: "GitHub Dark Default", +}; diff --git a/extensions/ql-vscode/.storybook/vscode-theme-addon/withTheme.ts b/extensions/ql-vscode/.storybook/vscode-theme-addon/withTheme.ts new file mode 100644 index 00000000000..3091c532e65 --- /dev/null +++ b/extensions/ql-vscode/.storybook/vscode-theme-addon/withTheme.ts @@ -0,0 +1,51 @@ +/// + +import { useEffect } from "react"; +import type { + PartialStoryFn as StoryFunction, + StoryContext, +} from "@storybook/csf"; + +import { VSCodeTheme } from "./theme"; + +import darkThemeStyle from "../../src/stories/vscode-theme-dark.css?url"; +import lightThemeStyle from "../../src/stories/vscode-theme-light.css?url"; +import lightHighContrastThemeStyle from "../../src/stories/vscode-theme-light-high-contrast.css?url"; +import darkHighContrastThemeStyle from "../../src/stories/vscode-theme-dark-high-contrast.css?url"; +import githubLightDefaultThemeStyle from "../../src/stories/vscode-theme-github-light-default.css?url"; +import githubDarkDefaultThemeStyle from "../../src/stories/vscode-theme-github-dark-default.css?url"; + +const themeFiles: { [key in VSCodeTheme]: string } = { + [VSCodeTheme.Dark]: darkThemeStyle, + [VSCodeTheme.Light]: lightThemeStyle, + [VSCodeTheme.LightHighContrast]: lightHighContrastThemeStyle, + [VSCodeTheme.DarkHighContrast]: darkHighContrastThemeStyle, + [VSCodeTheme.GitHubLightDefault]: githubLightDefaultThemeStyle, + [VSCodeTheme.GitHubDarkDefault]: githubDarkDefaultThemeStyle, +}; + +export const withTheme = (StoryFn: StoryFunction, context: StoryContext) => { + const { vscodeTheme } = context.globals; + + useEffect(() => { + const styleSelectorId = + context.viewMode === "docs" + ? `addon-vscode-theme-docs-${context.id}` + : "addon-vscode-theme-theme"; + + const theme = Object.values(VSCodeTheme).includes(vscodeTheme) + ? (vscodeTheme as VSCodeTheme) + : VSCodeTheme.Dark; + + document.getElementById(styleSelectorId)?.remove(); + + const link = document.createElement("link"); + link.id = styleSelectorId; + link.href = themeFiles[theme]; + link.rel = "stylesheet"; + + document.head.appendChild(link); + }, [vscodeTheme]); + + return StoryFn(); +}; diff --git a/extensions/ql-vscode/.vscodeignore b/extensions/ql-vscode/.vscodeignore index d81d08e76f5..4e9f0d9300a 100644 --- a/extensions/ql-vscode/.vscodeignore +++ b/extensions/ql-vscode/.vscodeignore @@ -1,16 +1 @@ -.vs/** -.vscode/** -.vscode-test/** -typings/** -out/test/** -out/vscode-tests/** -**/@types/** -**/*.ts -test/** -src/** **/*.map -.gitignore -gulpfile.js/** -tsconfig.json -tsfmt.json -vsc-extension-quickstart.md diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index 3cbce5bed74..8801a7e2cf6 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -2,11 +2,328 @@ ## [UNRELEASED] +- Remove support for CodeQL CLI versions older than 2.22.4. [#4344](https://github.com/github/vscode-codeql/pull/4344) +- Added support for selection-based result filtering via a checkbox in the result viewer. When enabled, only results from the currently-viewed file are shown. Additionally, if the editor selection is non-empty, only results within the selection range are shown. [#4362](https://github.com/github/vscode-codeql/pull/4362) + +## 1.17.7 - 5 December 2025 + +- Rename command "CodeQL: Trim Overlay Base Cache" to "CodeQL: Trim Cache to Overlay-Base" for consistency with "CodeQL: Warm Overlay-Base Cache for [...]" commands. [#4204](https://github.com/github/vscode-codeql/pull/4204) +- Deprecate the setting (`codeQL.runningQueries.saveCache`) that aggressively saved intermediate results to the disk cache. [#4210](https://github.com/github/vscode-codeql/pull/4210) +- The CodeQL CLI's `bqrs diff` command is now used in the "Compare Results" view. This makes the view faster, more accurate, and fixes a bug where it would error when comparing a large amount of results. [#4194](https://github.com/github/vscode-codeql/pull/4194) & [#4211](https://github.com/github/vscode-codeql/pull/4211) + +## 1.17.6 - 24 October 2025 + +- Remove support for CodeQL CLI versions older than 2.20.7. [#4159](https://github.com/github/vscode-codeql/pull/4159) + +## 1.17.5 - 02 October 2025 + +- Add new command "CodeQL: Trim Overlay Base Cache" that returns a database to the state prior to overlay evaluation, leaving only base predicates and types that may later be referenced during overlay evaluation. [#4082](https://github.com/github/vscode-codeql/pull/4082) +- Remove support for CodeQL CLI versions older than 2.19.4. [#4108](https://github.com/github/vscode-codeql/pull/4108) +- Fix a bug where quick evaluation within a `.ql` file could cause spurious errors about processing query metadata. [#4141](https://github.com/github/vscode-codeql/pull/4141) + +## 1.17.4 - 10 July 2025 + +- Fix variant analysis pack creation on some Windows systems [#4068](https://github.com/github/vscode-codeql/pull/4068) + +## 1.17.3 - 3 June 2025 + +- Fix reporting of bad join orders in recursive predicates. [#4019](https://github.com/github/vscode-codeql/pull/4019) + +## 1.17.2 - 27 March 2025 + +- Always authenticate when downloading databases from GitHub, instead of only when in canary mode. [#3941](https://github.com/github/vscode-codeql/pull/3941) + +## 1.17.1 - 23 January 2025 + +- Remove support for CodeQL CLI versions older than 2.18.4. [#3895](https://github.com/github/vscode-codeql/pull/3895) +- Fix regex in CodeQL TextMate grammar that was silently failing. [#3903](https://github.com/github/vscode-codeql/pull/3903) + +## 1.17.0 - 20 December 2024 + +- Add a palette command that allows importing all databases directly inside of a parent folder. [#3797](https://github.com/github/vscode-codeql/pull/3797) +- Only use VS Code telemetry settings instead of using `codeQL.telemetry.enableTelemetry` [#3853](https://github.com/github/vscode-codeql/pull/3853) +- Improve the performance of the results view with large numbers of results. [#3862](https://github.com/github/vscode-codeql/pull/3862) + +## 1.16.1 - 6 November 2024 + +- Support result columns of type `QlBuiltins::BigInt` in quick evaluations. [#3647](https://github.com/github/vscode-codeql/pull/3647) +- Fix a bug where the CodeQL CLI would be re-downloaded if you switched to a different filesystem (for example Codespaces or a remote SSH host). [#3762](https://github.com/github/vscode-codeql/pull/3762) +- Clean up old extension-managed CodeQL CLI distributions. [#3763](https://github.com/github/vscode-codeql/pull/3763) +- Only compare the source and sink of a path when comparing alerts of local queries. [#3772](https://github.com/github/vscode-codeql/pull/3772) + +## 1.16.0 - 10 October 2024 + +- Increase the required version of VS Code to 1.90.0. [#3737](https://github.com/github/vscode-codeql/pull/3737) +- Fix a bug where some variant analysis results failed to download. [#3750](https://github.com/github/vscode-codeql/pull/3750) + +## 1.15.0 - 26 September 2024 + +- Update results view to display the length of the shortest path for path queries. [#3687](https://github.com/github/vscode-codeql/pull/3687) +- Remove support for CodeQL CLI versions older than 2.16.6. [#3728](https://github.com/github/vscode-codeql/pull/3728) + +## 1.14.0 - 7 August 2024 + +- Add Python support to the CodeQL Model Editor. [#3676](https://github.com/github/vscode-codeql/pull/3676) +- Update variant analysis view to display the length of the shortest path for path queries. [#3671](https://github.com/github/vscode-codeql/pull/3671) +- Remove support for CodeQL CLI versions older than 2.15.5. [#3681](https://github.com/github/vscode-codeql/pull/3681) + +## 1.13.1 - 29 May 2024 + +- Fix a bug when re-importing test databases that erroneously showed old source code. [#3616](https://github.com/github/vscode-codeql/pull/3616) +- Update the progress window with details on potentially long-running post-processing steps after running a query. [#3622](https://github.com/github/vscode-codeql/pull/3622) + +## 1.13.0 - 1 May 2024 + +- Add Ruby support to the CodeQL Model Editor. [#3584](https://github.com/github/vscode-codeql/pull/3584) +- Remove support for CodeQL CLI versions older than 2.14.6. [#3562](https://github.com/github/vscode-codeql/pull/3562) + +## 1.12.5 - 9 April 2024 + +- Add new supported source and sink kinds in the CodeQL Model Editor [#3511](https://github.com/github/vscode-codeql/pull/3511) +- Fix a bug where the test explorer wouldn't display certain tests. [#3527](https://github.com/github/vscode-codeql/pull/3527) +- The "model dependency" operation in the model editor can now be cancelled. [#3517](https://github.com/github/vscode-codeql/pull/3517) + +## 1.12.4 - 20 March 2024 + +- Don't show notification after local query cancellation. [#3489](https://github.com/github/vscode-codeql/pull/3489) +- Databases created from [CodeQL test cases](https://docs.github.com/en/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/testing-custom-queries) are now copied into a shared VS Code storage location. This avoids a bug where re-running test cases would fail if the test's database is already imported into the workspace. [#3433](https://github.com/github/vscode-codeql/pull/3433) + +## 1.12.3 - 29 February 2024 + +- Update variant analysis view to show when cancelation is in progress. [#3405](https://github.com/github/vscode-codeql/pull/3405) +- Remove support for CodeQL CLI versions older than 2.13.5. [#3371](https://github.com/github/vscode-codeql/pull/3371) +- Add a timeout to downloading databases and the CodeQL CLI. These can be changed using the `codeQL.addingDatabases.downloadTimeout` and `codeQL.cli.downloadTimeout` settings respectively. [#3373](https://github.com/github/vscode-codeql/pull/3373) +- When downloading a CodeQL database through the model editor, only use credentials when in canary mode. [#3440](https://github.com/github/vscode-codeql/pull/3440) + +## 1.12.2 - 14 February 2024 + +- Stop allowing running variant analyses with a query outside of the workspace. [#3302](https://github.com/github/vscode-codeql/pull/3302) + +## 1.12.1 - 31 January 2024 + +- Enable collection of telemetry for the `codeQL.addingDatabases.addDatabaseSourceToWorkspace` setting. [#3238](https://github.com/github/vscode-codeql/pull/3238) +- In the CodeQL model editor, you can now select individual method rows and save changes to only the selected rows, instead of having to save the entire library model. [#3156](https://github.com/github/vscode-codeql/pull/3156) +- If you run a query without having selected a database, we show a more intuitive prompt to help you select a database. [#3214](https://github.com/github/vscode-codeql/pull/3214) +- Error messages returned from the CodeQL CLI are now less verbose and more user-friendly. [#3259](https://github.com/github/vscode-codeql/pull/3259) +- The UI for browsing and running CodeQL tests has moved to use VS Code's built-in test UI. This makes the CodeQL test UI more consistent with the test UIs for other languages. + This change means that this extension no longer depends on the "Test Explorer UI" and "Test Adapter Converter" extensions. You can uninstall those two extensions if they are + not being used by any other extensions you may have installed. [#3232](https://github.com/github/vscode-codeql/pull/3232) + +## 1.12.0 - 11 January 2024 + +- Add a prompt for downloading a GitHub database when opening a GitHub repository. [#3138](https://github.com/github/vscode-codeql/pull/3138) +- Avoid showing a popup when hovering over source elements in database source files. [#3125](https://github.com/github/vscode-codeql/pull/3125) +- Add comparison of alerts when comparing query results. This allows viewing path explanations for differences in alerts. [#3113](https://github.com/github/vscode-codeql/pull/3113) +- Fix a bug where the CodeQL CLI and variant analysis results were corrupted after extraction in VS Code Insiders. [#3151](https://github.com/github/vscode-codeql/pull/3151) & [#3152](https://github.com/github/vscode-codeql/pull/3152) +- Show progress when extracting the CodeQL CLI distribution during installation. [#3157](https://github.com/github/vscode-codeql/pull/3157) +- Add option to cancel opening the model editor. [#3189](https://github.com/github/vscode-codeql/pull/3189) + +## 1.11.0 - 13 December 2023 + +- Add a new method modeling panel to classify methods as sources/sinks/summaries while in the context of the source code. [#3128](https://github.com/github/vscode-codeql/pull/3128) +- Adds the ability to add multiple classifications per method in the CodeQL Model Editor. [#3128](https://github.com/github/vscode-codeql/pull/3128) +- Switch add and delete button positions in the CodeQL Model Editor. [#3123](https://github.com/github/vscode-codeql/pull/3123) +- Add a prompt to the "Quick query" command to encourage users in single-folder workspaces to use "Create query" instead. [#3082](https://github.com/github/vscode-codeql/pull/3082) +- Remove support for CodeQL CLI versions older than 2.11.6. [#3087](https://github.com/github/vscode-codeql/pull/3087) +- Preserve focus on results viewer when showing a location in a file. [#3088](https://github.com/github/vscode-codeql/pull/3088) +- The `dataflowtracking` and `tainttracking` snippets expand to the new module-based interface. [#3091](https://github.com/github/vscode-codeql/pull/3091) +- The compare view will now show a loading message while the results are loading. [#3107](https://github.com/github/vscode-codeql/pull/3107) +- Make top-banner of the model editor sticky [#3120](https://github.com/github/vscode-codeql/pull/3120) + +## 1.10.0 - 16 November 2023 + +- Add new CodeQL views for managing databases and queries: + 1. A queries panel that shows all queries in your workspace. It allows you to view, create, and run queries in one place. + 2. A language selector, which allows you to quickly filter databases and queries by language. + + For more information, see the [documentation](https://codeql.github.com/docs/codeql-for-visual-studio-code/analyzing-your-projects/#filtering-databases-and-queries-by-language). + +- When adding a CodeQL database, we no longer add the database source folder to the workspace by default (since this caused bugs in single-folder workspaces). [#3047](https://github.com/github/vscode-codeql/pull/3047) + - You can manually add individual database source folders to the workspace with the "Add Database Source to Workspace" right-click command in the databases view. + - To restore the old behavior of adding all database source folders by default, set the `codeQL.addingDatabases.addDatabaseSourceToWorkspace` setting to `true`. +- Rename the `codeQL.databaseDownload.allowHttp` setting to `codeQL.addingDatabases.allowHttp`, so that database-related settings are grouped together in the Settings UI. [#3047](https://github.com/github/vscode-codeql/pull/3047) & [#3069](https://github.com/github/vscode-codeql/pull/3069) +- The "Sort by Language" action in the databases view now sorts by name within each language. [#3055](https://github.com/github/vscode-codeql/pull/3055) + +## 1.9.4 - 6 November 2023 + +No user facing changes. + +## 1.9.3 - 26 October 2023 + +- Sorted result set filenames now include a hash of the result set name instead of the full name. [#2955](https://github.com/github/vscode-codeql/pull/2955) +- The "Install Pack Dependencies" will now only list CodeQL packs located in the workspace. [#2960](https://github.com/github/vscode-codeql/pull/2960) +- Fix a bug where the "View Query Log" action for a query history item was not working. [#2984](https://github.com/github/vscode-codeql/pull/2984) +- Add a command to sort items in the databases view by language. [#2993](https://github.com/github/vscode-codeql/pull/2993) +- Fix not being able to open the results directory or evaluator log for a cancelled local query run. [#2996](https://github.com/github/vscode-codeql/pull/2996) +- Fix empty row in alert path when the SARIF location was empty. [#3018](https://github.com/github/vscode-codeql/pull/3018) + +## 1.9.2 - 12 October 2023 + +- Fix a bug where the query to Find Definitions in database source files would not be cancelled appropriately. [#2885](https://github.com/github/vscode-codeql/pull/2885) +- It is now possible to show the language of query history items using the `%l` specifier in the `codeQL.queryHistory.format` setting. Note that this only works for queries run after this upgrade, and older items will show `unknown` as a language. [#2892](https://github.com/github/vscode-codeql/pull/2892) +- Increase the required version of VS Code to 1.82.0. [#2877](https://github.com/github/vscode-codeql/pull/2877) +- Fix a bug where the query server was restarted twice after configuration changes. [#2884](https://github.com/github/vscode-codeql/pull/2884). +- Add support for the `telemetry.telemetryLevel` setting. For more information, see the [telemetry documentation](https://codeql.github.com/docs/codeql-for-visual-studio-code/about-telemetry-in-codeql-for-visual-studio-code). [#2824](https://github.com/github/vscode-codeql/pull/2824). +- Add a "CodeQL: Trim Cache" command that clears the evaluation cache of a database except for predicates annotated with the `cached` keyword. Its purpose is to get accurate performance measurements when tuning the final stage of a query, like a data-flow configuration. This is equivalent to the `codeql database cleanup --mode=normal` CLI command. In contrast, the existing "CodeQL: Clear Cache" command clears the entire cache. CodeQL CLI v2.15.1 or later is required. [#2928](https://github.com/github/vscode-codeql/pull/2928) +- Fix syntax highlighting directly after import statements with instantiation arguments. [#2792](https://github.com/github/vscode-codeql/pull/2792) +- The `debug.saveBeforeStart` setting is now respected when running variant analyses. [#2950](https://github.com/github/vscode-codeql/pull/2950) +- The 'open database' button of the model editor was renamed to 'open source'. Also, it's now only available if the source archive is available as a workspace folder. [#2945](https://github.com/github/vscode-codeql/pull/2945) + +## 1.9.1 - 29 September 2023 + +- Add warning when using a VS Code version older than 1.82.0. [#2854](https://github.com/github/vscode-codeql/pull/2854) +- Fix a bug when parsing large evaluation log summaries. [#2858](https://github.com/github/vscode-codeql/pull/2858) +- Right-align and format numbers in raw result tables. [#2864](https://github.com/github/vscode-codeql/pull/2864) +- Remove rate limit warning notifications when using Code Search to add repositories to a variant analysis list. [#2812](https://github.com/github/vscode-codeql/pull/2812) + +## 1.9.0 - 19 September 2023 + +- Release the [CodeQL model editor](https://codeql.github.com/docs/codeql-for-visual-studio-code/using-the-codeql-model-editor/) to create CodeQL model packs for Java frameworks. Open the editor using the "CodeQL: Open CodeQL Model Editor (Beta)" command. [#2823](https://github.com/github/vscode-codeql/pull/2823) + +## 1.8.12 - 11 September 2023 + +- Fix a bug where variant analysis queries would fail for queries in the `codeql/java-queries` query pack. [#2786](https://github.com/github/vscode-codeql/pull/2786) + +## 1.8.11 - 7 September 2023 + +- Update how variant analysis results are displayed. For queries with ["path-problem" or "problem" `@kind`](https://codeql.github.com/docs/writing-codeql-queries/metadata-for-codeql-queries/#metadata-properties), you can choose to display the results as rendered alerts or as a table of raw results. For queries with any other `@kind`, the results are displayed as a table. [#2745](https://github.com/github/vscode-codeql/pull/2745) & [#2749](https://github.com/github/vscode-codeql/pull/2749) +- When running variant analyses, don't download artifacts for repositories with no results. [#2736](https://github.com/github/vscode-codeql/pull/2736) +- Group the extension settings, so that they're easier to find in the Settings UI. [#2706](https://github.com/github/vscode-codeql/pull/2706) + +## 1.8.10 - 15 August 2023 + +- Add a code lens to make the `CodeQL: Open Referenced File` command more discoverable. Click the "Open referenced file" prompt in a `.qlref` file to jump to the referenced `.ql` file. [#2704](https://github.com/github/vscode-codeql/pull/2704) + +## 1.8.9 - 3 August 2023 + +- Remove "last updated" information and sorting from variant analysis results view. [#2637](https://github.com/github/vscode-codeql/pull/2637) +- Links to code on GitHub now include column numbers as well as line numbers. [#2406](https://github.com/github/vscode-codeql/pull/2406) +- No longer highlight trailing commas for jump to definition. [#2615](https://github.com/github/vscode-codeql/pull/2615) +- Fix a bug where the QHelp preview page was not being refreshed after changes to the underlying `.qhelp` file. [#2660](https://github.com/github/vscode-codeql/pull/2660) + +## 1.8.8 - 17 July 2023 + +- Remove support for CodeQL CLI versions older than 2.9.4. [#2610](https://github.com/github/vscode-codeql/pull/2610) +- Implement syntax highlighting for the `additional` and `default` keywords. [#2609](https://github.com/github/vscode-codeql/pull/2609) + +## 1.8.7 - 29 June 2023 + +- Show a run button on the file tab for query files, that will start a local query. This button will only show when a local database is selected in the extension. [#2544](https://github.com/github/vscode-codeql/pull/2544) +- Add a `CodeQL: Quick Evaluation Count` command to generate the count summary statistics of the results set + without spending the time to compute locations and strings. [#2475](https://github.com/github/vscode-codeql/pull/2475) + +## 1.8.6 - 14 June 2023 + +- Add repositories to a variant analysis list with GitHub Code Search. [#2439](https://github.com/github/vscode-codeql/pull/2439) and [#2476](https://github.com/github/vscode-codeql/pull/2476) + +## 1.8.5 - 6 June 2023 + +- Add settings `codeQL.variantAnalysis.defaultResultsFilter` and `codeQL.variantAnalysis.defaultResultsSort` for configuring how variant analysis results are filtered and sorted in the results view. The default is to show all repositories, and to sort by the number of results. [#2392](https://github.com/github/vscode-codeql/pull/2392) +- Fix bug to ensure error messages have complete stack trace in message logs. [#2425](https://github.com/github/vscode-codeql/pull/2425) +- Fix bug where the `CodeQL: Compare Query` command did not work for comparing quick-eval queries. [#2422](https://github.com/github/vscode-codeql/pull/2422) +- Update text of copy and export buttons in variant analysis results view to clarify that they only copy/export the selected/filtered results. [#2427](https://github.com/github/vscode-codeql/pull/2427) +- Add warning when using unsupported CodeQL CLI version. [#2428](https://github.com/github/vscode-codeql/pull/2428) +- Retry variant analysis results download if connection times out. [#2440](https://github.com/github/vscode-codeql/pull/2440) + +## 1.8.4 - 3 May 2023 + +- Avoid repeated error messages when unable to monitor a variant analysis. [#2396](https://github.com/github/vscode-codeql/pull/2396) +- Fix bug where a variant analysis didn't display the `#select` results set correctly when the [query metadata](https://codeql.github.com/docs/writing-codeql-queries/about-codeql-queries/#query-metadata) didn't exactly match the query results. [#2395](https://github.com/github/vscode-codeql/pull/2395) +- On the variant analysis results page, show the count of successful analyses instead of completed analyses, and indicate the reason why analyses were not successful. [#2349](https://github.com/github/vscode-codeql/pull/2349) +- Fix bug where the "CodeQL: Set Current Database" command didn't always select the database. [#2384](https://github.com/github/vscode-codeql/pull/2384) + +## 1.8.3 - 26 April 2023 + +- Added ability to filter repositories for a variant analysis to only those that have results [#2343](https://github.com/github/vscode-codeql/pull/2343) +- Add new configuration option to allow downloading databases from http, non-secure servers. [#2332](https://github.com/github/vscode-codeql/pull/2332) +- Remove title actions from the query history panel that depended on history items being selected. [#2350](https://github.com/github/vscode-codeql/pull/2350) + +## 1.8.2 - 12 April 2023 + +- Fix bug where users could end up with the managed CodeQL CLI getting uninstalled during upgrades and not reinstalled. [#2294](https://github.com/github/vscode-codeql/pull/2294) +- Fix bug that was causing code flows to not get updated when switching between results. [#2288](https://github.com/github/vscode-codeql/pull/2288) +- Restart the CodeQL language server whenever the _CodeQL: Restart Query Server_ command is invoked. This avoids bugs where the CLI version changes to support new language features, but the language server is not updated. [#2238](https://github.com/github/vscode-codeql/pull/2238) +- Avoid requiring a manual restart of the query server when the [external CLI config file](https://docs.github.com/en/code-security/codeql-cli/using-the-codeql-cli/specifying-command-options-in-a-codeql-configuration-file#using-a-codeql-configuration-file) changes. [#2289](https://github.com/github/vscode-codeql/pull/2289) + +## 1.8.1 - 23 March 2023 + +- Show data flow paths of a variant analysis in a new tab. [#2172](https://github.com/github/vscode-codeql/pull/2172) & [#2182](https://github.com/github/vscode-codeql/pull/2182) +- Show labels of entities in exported CSV results. [#2170](https://github.com/github/vscode-codeql/pull/2170) + +## 1.8.0 - 9 March 2023 + +- Send telemetry about unhandled errors happening within the extension. [#2125](https://github.com/github/vscode-codeql/pull/2125) +- Enable multi-repository variant analysis. [#2144](https://github.com/github/vscode-codeql/pull/2144) + +## 1.7.11 - 1 March 2023 + +- Enable collection of telemetry concerning interactions with UI elements, including buttons, links, and other inputs. [#2114](https://github.com/github/vscode-codeql/pull/2114) +- Prevent the automatic installation of CodeQL CLI version 2.12.3 to avoid a bug in the language server. CodeQL CLI 2.12.2 will be used instead. [#2126](https://github.com/github/vscode-codeql/pull/2126) + +## 1.7.10 - 23 February 2023 + +- Fix bug that was causing unwanted error notifications. + +## 1.7.9 - 20 February 2023 + +No user facing changes. + +## 1.7.8 - 2 February 2023 + +- Renamed command "CodeQL: Run Query" to "CodeQL: Run Query on Selected Database". [#1962](https://github.com/github/vscode-codeql/pull/1962) +- Remove support for CodeQL CLI versions older than 2.7.6. [#1788](https://github.com/github/vscode-codeql/pull/1788) + +## 1.7.7 - 13 December 2022 + +- Increase the required version of VS Code to 1.67.0. [#1662](https://github.com/github/vscode-codeql/pull/1662) + +## 1.7.6 - 21 November 2022 + +- Warn users when their VS Code version is too old to support all features in the vscode-codeql extension. [#1674](https://github.com/github/vscode-codeql/pull/1674) + +## 1.7.5 - 8 November 2022 + +- Fix a bug where the AST Viewer was not working unless the associated CodeQL library pack is in the workspace. [#1735](https://github.com/github/vscode-codeql/pull/1735) + +## 1.7.4 - 29 October 2022 + +No user facing changes. + +## 1.7.3 - 28 October 2022 + +- Fix a bug where databases may be lost if VS Code is restarted while the extension is being started up. [#1638](https://github.com/github/vscode-codeql/pull/1638) +- Add commands for navigating up, down, left, or right in the result viewer. Previously there were only commands for moving up and down the currently-selected path. We suggest binding keyboard shortcuts to these commands, for navigating the result viewer using the keyboard. [#1568](https://github.com/github/vscode-codeql/pull/1568) + +## 1.7.2 - 14 October 2022 + +- Fix a bug where results created in older versions were thought to be unsuccessful. [#1605](https://github.com/github/vscode-codeql/pull/1605) + +## 1.7.1 - 12 October 2022 + +- Fix a bug where it was not possible to add a database folder if the folder name starts with `db-`. [#1565](https://github.com/github/vscode-codeql/pull/1565) +- Ensure the results view opens in an editor column beside the currently active editor. [#1557](https://github.com/github/vscode-codeql/pull/1557) + +## 1.7.0 - 20 September 2022 + +- Remove ability to download databases from LGTM. [#1467](https://github.com/github/vscode-codeql/pull/1467) +- Remove the ability to manually upgrade databases from the context menu on databases. Databases are non-destructively upgraded automatically so for most users this was not needed. For advanced users this is still available in the Command Palette. [#1501](https://github.com/github/vscode-codeql/pull/1501) +- Always restart the query server after a manual database upgrade. This avoids a bug in the query server where an invalid dbscheme was being retained in memory after an upgrade. [#1519](https://github.com/github/vscode-codeql/pull/1519) + +## 1.6.12 - 1 September 2022 + +- Add ability for users to download databases directly from GitHub. [#1485](https://github.com/github/vscode-codeql/pull/1485) +- Fix a race condition that could cause a failure to open the evaluator log when running a query. [#1490](https://github.com/github/vscode-codeql/pull/1490) +- Fix an error when running a query with an older version of the CodeQL CLI. [#1490](https://github.com/github/vscode-codeql/pull/1490) + +## 1.6.11 - 25 August 2022 + +No user facing changes. + ## 1.6.10 - 9 August 2022 No user facing changes. -## 1.6.9 - 20 July 2022 +## 1.6.9 - 20 July 2022 No user facing changes. @@ -253,7 +570,7 @@ No user facing changes. - Allow setting `codeQL.runningQueries.numberOfThreads` and `codeQL.runningTests.numberOfThreads` to 0, (which is interpreted as 'use one thread per core on the machine'). - Clear the problems view of all CodeQL query results when a database is removed. - Add a `View DIL` command on query history items. This opens a text editor containing the Datalog Intermediary Language representation of the compiled query. -- Remove feature flag for the AST Viewer. For more information on how to use the AST Viewer, [see the documentation](https://help.semmle.com/codeql/codeql-for-vscode/procedures/exploring-the-structure-of-your-source-code.html). +- Remove feature flag for the AST Viewer. For more information on how to use the AST Viewer, [see the documentation](https://codeql.github.com/docs/codeql-for-visual-studio-code/exploring-the-structure-of-your-source-code/). - The `codeQL.runningTests.numberOfThreads` setting is now used correctly when running tests. - Alter structure of the _Test Explorer_ tree. It now follows the structure of the filesystem instead of the qlpacks. - Ensure output of CodeQL test runs includes compilation error messages and test failure messages. diff --git a/extensions/ql-vscode/README.md b/extensions/ql-vscode/README.md index b59ad5cf0d1..0deb4320e04 100644 --- a/extensions/ql-vscode/README.md +++ b/extensions/ql-vscode/README.md @@ -9,24 +9,26 @@ This project is an extension for Visual Studio Code that adds rich language supp To see what has changed in the last few versions of the extension, see the [Changelog](https://github.com/github/vscode-codeql/blob/main/extensions/ql-vscode/CHANGELOG.md). +You can also read full documentation for the extension on the [GitHub documentation website](https://docs.github.com/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension). + ## Quick start overview The information in this `README` file describes the quickest way to start using CodeQL. -For information about other configurations, see the separate [CodeQL help](https://codeql.github.com/docs/codeql-for-visual-studio-code/). +For information about other configurations, see "[Using the advanced functionality of the CodeQL for VS Code extension](https://docs.github.com/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension)" in the GitHub documentation. ### Quick start: Installing and configuring the extension -1. [Install the extension](#installing-the-extension). +1. [Install the extension](#installing-the-extension). 1. [Check access to the CodeQL CLI](#checking-access-to-the-codeql-cli). 1. [Clone the CodeQL starter workspace](#cloning-the-codeql-starter-workspace). ### Quick start: Using CodeQL -1. [Import a database from LGTM](#importing-a-database-from-lgtm). +1. [Import a database from GitHub](#importing-a-database-from-github). 1. [Run a query](#running-a-query). --- - + ## Quick start: Installing and configuring the extension ### Installing the extension @@ -42,7 +44,7 @@ The CodeQL extension requires a minimum of Visual Studio Code 1.39. Older versio The extension uses the [CodeQL CLI](https://codeql.github.com/docs/codeql-cli/) to compile and run queries. The extension automatically manages access to the CLI for you by default (recommended). To check for updates to the CodeQL CLI, you can use the **CodeQL: Check for CLI Updates** command. -If you want to override the default behavior and use a CodeQL CLI that's already on your machine, see [Configuring access to the CodeQL CLI](https://codeql.github.com/docs/codeql-for-visual-studio-code/setting-up-codeql-in-visual-studio-code/#configuring-access-to-the-codeql-cli). +If you want to override the default behavior and use a CodeQL CLI that's already on your machine, see "[Configuring access to the CodeQL CLI](https://docs.github.com/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/configuring-access-to-the-codeql-cli)" in the GitHub documentation. If you have any difficulty with CodeQL CLI access, see the **CodeQL Extension Log** in the **Output** view for any error messages. @@ -52,7 +54,7 @@ When you're working with CodeQL, you need access to the standard CodeQL librarie Initially, we recommend that you clone and use the ready-to-use [starter workspace](https://github.com/github/vscode-codeql-starter/). This includes libraries and queries for the main supported languages, with folders set up ready for your custom queries. After cloning the workspace (use `git clone --recursive`), you can use it in the same way as any other VS Code workspace—with the added advantage that you can easily update the CodeQL libraries. -For information about configuring an existing workspace for CodeQL, [see the documentation](https://codeql.github.com/docs/codeql-for-visual-studio-code/setting-up-codeql-in-visual-studio-code/#updating-an-existing-workspace-for-codeql). +For information about configuring an existing workspace for CodeQL, see "[Setting up a CodeQL workspace](https://docs.github.com/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/setting-up-a-codeql-workspace#option-2-updating-an-existing-workspace-for-codeql-advanced)" in the GitHub documentation. ## Upgrading CodeQL standard libraries @@ -69,43 +71,49 @@ in the starter workspace directory. If you're using your own clone of the CodeQL standard libraries, you can do a `git pull` from where you have the libraries checked out. + ## Quick start: Using CodeQL You can find all the commands contributed by the extension in the Command Palette (**Ctrl+Shift+P** or **Cmd+Shift+P**) by typing `CodeQL`, many of them are also accessible through the interface, and via keyboard shortcuts. -### Importing a database from LGTM +### Importing a database from GitHub -While you can use the [CodeQL CLI to create your own databases](https://codeql.github.com/docs/codeql-cli/creating-codeql-databases/), the simplest way to start is by downloading a database from LGTM.com. +While you can use the [CodeQL CLI to create your own databases](https://codeql.github.com/docs/codeql-cli/creating-codeql-databases/), the simplest way to start is by downloading a database from GitHub.com. -1. Open [LGTM.com](https://lgtm.com/#explore) in your browser. -1. Search for a project you're interested in, for example [Apache Kafka](https://lgtm.com/projects/g/apache/kafka). -1. Copy the link to that project, for example `https://lgtm.com/projects/g/apache/kafka`. -1. In VS Code, open the Command Palette and choose the **CodeQL: Download Database from LGTM** command. +1. Find a project that you're interested in on GitHub.com, for example [Apache Kafka](https://github.com/apache/kafka). +1. Copy the link to that project, for example `https://github.com/apache/kafka`. +1. In VS Code, open the Command Palette and choose the **CodeQL: Download Database from GitHub** command. 1. Paste the link you copied earlier. 1. Select the language for the database you want to download (only required if the project has databases for multiple languages). 1. Once the CodeQL database has been imported, it is displayed in the Databases view. +For more information, see "[Managing CodeQL databases](https://docs.github.com/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/managing-codeql-databases#choosing-a-database-to-analyze)" in the GitHub documentation. + ### Running a query The instructions below assume that you're using the CodeQL starter workspace, or that you've added the CodeQL libraries and queries repository to your workspace. 1. Expand the `ql` folder and locate a query to run. The standard queries are grouped by target language and then type, for example: `ql/java/ql/src/Likely Bugs`. 1. Open a query (`.ql`) file. -1. Right-click in the query window and select **CodeQL: Run Query**. Alternatively, open the Command Palette (**Ctrl+Shift+P** or **Cmd+Shift+P**), type `Run Query`, then select **CodeQL: Run Query**. +1. Right-click in the query window and select **CodeQL: Run Query on Selected Database**. Alternatively, open the Command Palette (**Ctrl+Shift+P** or **Cmd+Shift+P**), type `Run Query`, then select **CodeQL: Run Query on Selected Database**. The CodeQL extension runs the query on the current database using the CLI and reports progress in the bottom right corner of the application. When the results are ready, they're displayed in the CodeQL Query Results view. Use the dropdown menu to choose between different forms of result output. If there are any problems running a query, a notification is displayed in the bottom right corner of the application. In addition to the error message, the notification includes details of how to fix the problem. +### Keyboard navigation + +If you wish to navigate the query results from your keyboard, you can bind shortcuts to the **CodeQL: Navigate Up/Down/Left/Right in Result Viewer** commands. + ## What next? -For more information about the CodeQL extension, [see the documentation](https://codeql.github.com/docs/codeql-for-visual-studio-code/). Otherwise, you could: +We recommend reading the [full documentation for the extension](https://docs.github.com/code-security/codeql-for-vs-code/) on the GitHub documentation website. You may also find the following resources useful: - [Create a database for a different codebase](https://codeql.github.com/docs/codeql-cli/creating-codeql-databases/). -- [Try out variant analysis](https://help.semmle.com/QL/learn-ql/ql-training.html). +- [Try out variant analysis](https://docs.github.com/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries-at-scale-with-multi-repository-variant-analysis). - [Learn more about CodeQL](https://codeql.github.com/docs/). -- [Read how security researchers use CodeQL to find CVEs](https://securitylab.github.com/research). +- [Read how security researchers use CodeQL to find CVEs](https://github.blog/tag/github-security-lab/). ## License @@ -113,4 +121,4 @@ The CodeQL extension for Visual Studio Code is [licensed](LICENSE.md) under the ## Data and Telemetry -If you specifically opt-in to permit GitHub to do so, GitHub will collect usage data and metrics for the purposes of helping the core developers to improve the CodeQL extension for VS Code. This data will not be shared with any parties outside of GitHub. IP addresses and installation IDs will be retained for a maximum of 30 days. Anonymous data will be retained for a maximum of 180 days. For more information about telemetry, [see the documentation](https://codeql.github.com/docs/codeql-for-visual-studio-code/about-telemetry-in-codeql-for-visual-studio-code). +If you specifically opt-in to permit GitHub to do so, GitHub will collect usage data and metrics for the purposes of helping the core developers to improve the CodeQL extension for VS Code. This data will not be shared with any parties outside of GitHub. IP addresses and installation IDs will be retained for a maximum of 30 days. Anonymous data will be retained for a maximum of 180 days. For more information, see "[Telemetry in CodeQL for Visual Studio Code](https://docs.github.com/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/telemetry-in-codeql-for-visual-studio-code)" in the GitHub documentation. diff --git a/extensions/ql-vscode/databases-schema.json b/extensions/ql-vscode/databases-schema.json new file mode 100644 index 00000000000..f4fa37b55dc --- /dev/null +++ b/extensions/ql-vscode/databases-schema.json @@ -0,0 +1,127 @@ +{ + "type": "object", + "properties": { + "$schema": { + "type": "string" + }, + "version": { + "type": "integer" + }, + "databases": { + "type": "object", + "properties": { + "variantAnalysis": { + "type": "object", + "properties": { + "repositoryLists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "repositories": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z0-9-_\\.]+/[a-zA-Z0-9-_\\.]+$" + } + } + }, + "required": ["name", "repositories"], + "additionalProperties": false + } + }, + "owners": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z0-9-_\\.]+$" + } + }, + "repositories": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-zA-Z0-9-_\\.]+/[a-zA-Z0-9-_\\.]+$" + } + } + }, + "required": ["repositoryLists", "owners", "repositories"], + "additionalProperties": false + } + }, + "required": ["variantAnalysis"], + "additionalProperties": false + }, + "selected": { + "type": "object", + "oneOf": [ + { + "properties": { + "kind": { + "type": "string", + "enum": ["variantAnalysisSystemDefinedList"] + }, + "listName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["kind", "listName"], + "additionalProperties": false + }, + { + "properties": { + "kind": { + "type": "string", + "enum": ["variantAnalysisUserDefinedList"] + }, + "listName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["kind", "listName"], + "additionalProperties": false + }, + { + "properties": { + "kind": { + "type": "string", + "enum": ["variantAnalysisOwner"] + }, + "ownerName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["kind", "ownerName"], + "additionalProperties": false + }, + { + "properties": { + "kind": { + "type": "string", + "enum": ["variantAnalysisRepository"] + }, + "repositoryName": { + "type": "string", + "minLength": 1 + }, + "listName": { + "type": "string", + "minLength": 1 + } + }, + "required": ["kind", "repositoryName"], + "additionalProperties": false + } + ] + } + }, + "required": ["databases", "version"], + "additionalProperties": false +} diff --git a/extensions/ql-vscode/eslint.config.mjs b/extensions/ql-vscode/eslint.config.mjs new file mode 100644 index 00000000000..da96a4d7e9e --- /dev/null +++ b/extensions/ql-vscode/eslint.config.mjs @@ -0,0 +1,202 @@ +import { resolve, dirname } from "path"; +import { fileURLToPath } from "url"; +import eslint from "@eslint/js"; +import { globalIgnores } from "eslint/config"; +import github from "eslint-plugin-github"; +import tseslint from "typescript-eslint"; +import eslintPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import * as jestDom from "eslint-plugin-jest-dom"; +import * as typescriptESLintParser from "@typescript-eslint/parser"; +import react from "eslint-plugin-react"; +import reactHooks from "eslint-plugin-react-hooks"; +import storybook from "eslint-plugin-storybook"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default tseslint.config( + globalIgnores([ + ".vscode-test/", + "node_modules/", + "out/", + "build/", + "scripts/", + "**/jest.config.ts", + "**/jest.config.js", + "**/jest-runner-vscode.config.js", + "**/jest-runner-vscode.config.base.js", + ".markdownlint-cli2.cjs", + "eslint.config.mjs", + "!.storybook", + ]), + github.getFlatConfigs().recommended, + ...github.getFlatConfigs().typescript, + tseslint.configs.recommendedTypeChecked, + eslint.configs.recommended, + tseslint.configs.recommended, + jestDom.configs["flat/recommended"], + { + rules: { + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-unused-vars": [ + "warn", + { + vars: "all", + args: "none", + ignoreRestSiblings: false, + }, + ], + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-floating-promises": ["error", { ignoreVoid: true }], + "@typescript-eslint/no-invalid-this": "off", + "@typescript-eslint/no-shadow": "off", + "prefer-const": ["warn", { destructuring: "all" }], + "@typescript-eslint/only-throw-error": "error", + "@typescript-eslint/consistent-type-imports": "error", + "import/consistent-type-specifier-style": ["error", "prefer-top-level"], + curly: ["error", "all"], + "escompat/no-regexp-lookbehind": "off", + "filenames/match-regex": "off", + "i18n-text/no-en": "off", + "no-invalid-this": "off", + "no-console": "off", + "no-shadow": "off", + "github/array-foreach": "off", + "github/no-then": "off", + // "react/jsx-key": ["error", { checkFragmentShorthand: true }], + "import/no-cycle": "error", + // Never allow extensions in import paths, except for JSON files where they are required. + "import/extensions": ["error", "never", { json: "always" }], + + // Rules disabled during eslint 9 migration + "github/filenames-match-regex": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/restrict-plus-operands": "off", + "@typescript-eslint/unbound-method": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/no-base-to-string": "off", + "@typescript-eslint/no-array-delete": "off", + }, + settings: { + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"] + }, + "import/resolver": { + typescript: true, + node: true, + }, + "import/extensions": [".js", ".jsx", ".ts", ".tsx", ".json"], + // vscode and sarif don't exist on-disk, but only provide types. + "import/core-modules": ["vscode", "sarif"], + }, + languageOptions: { + parser: typescriptESLintParser, + parserOptions: { + ecmaVersion: 2018, + sourceType: "module", + projectService: { + allowDefaultProject: ['jest.config.js'], + }, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + files: ["src/stories/**/*"], + extends: [ + react.configs.flat.recommended, + react.configs.flat['jsx-runtime'], + reactHooks.configs.flat['recommended-latest'], + storybook.configs['flat/recommended'], + github.getFlatConfigs().react, + ], + settings: { + react: { + version: "detect", + }, + }, + rules: { + // Disable new strict rules from eslint-plugin-react-hooks 7.0.1 that fail with current codebase + "react-hooks/set-state-in-effect": "off", + }, + }, + { + files: ["src/view/**/*"], + extends: [ + react.configs.flat.recommended, + react.configs.flat['jsx-runtime'], + reactHooks.configs.flat['recommended-latest'], + github.getFlatConfigs().react, + ], + settings: { + react: { + version: "detect", + }, + }, + rules: { + // Disable new strict rules from eslint-plugin-react-hooks 7.0.1 that fail with current codebase + "react-hooks/set-state-in-effect": "off", + "react-hooks/refs": "off", + "react-hooks/purity": "off", + "react-hooks/error-boundaries": "off", + }, + }, + { + // Special case for files using custom useEffectEvent implementation + files: [ + "src/view/common/SuggestBox/useOpenKey.ts", + "src/view/common/SuggestBox/__tests__/useEffectEvent.test.ts", + ], + rules: { + "react-hooks/rules-of-hooks": "off", + "react-hooks/exhaustive-deps": "off", + }, + }, + { + files: ["test/vscode-tests/**/*"], + languageOptions: { + globals: { + jest: true, + }, + }, + rules: { + // We want to allow mocking of functions in modules, so we need to allow namespace imports. + "import/no-namespace": "off", + "@typescript-eslint/no-unsafe-function-type": "off", + }, + }, + { + files: ["test/**/*"], + languageOptions: { + globals: { + jest: true, + }, + }, + rules: { + "@typescript-eslint/no-explicit-any": "off", + + // Rules disabled during eslint 9 migration + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/unbound-method": "off", + }, + }, + { + files: [".storybook/**/*", "src/stories/**/*"], + rules: { + // Storybook doesn't use the automatic JSX runtime in the addon yet, so we need to allow + // `React` to be imported. + "import/no-namespace": ["error", { ignore: ["react"] }], + + // Rules disabled during eslint 9 migration + "@typescript-eslint/no-unsafe-argument": "off", + "storybook/no-renderer-packages": "off", + "storybook/story-exports": "off", + }, + }, + eslintPrettierRecommended, +); diff --git a/extensions/ql-vscode/gulpfile.ts/appInsights.ts b/extensions/ql-vscode/gulpfile.ts/appInsights.ts index e2ba2c71300..86d36aae4fe 100644 --- a/extensions/ql-vscode/gulpfile.ts/appInsights.ts +++ b/extensions/ql-vscode/gulpfile.ts/appInsights.ts @@ -1,17 +1,18 @@ -import * as gulp from 'gulp'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const replace = require('gulp-replace'); +import { src, dest } from "gulp"; +import replace from "gulp-replace"; /** Inject the application insights key into the telemetry file */ export function injectAppInsightsKey() { if (!process.env.APP_INSIGHTS_KEY) { // noop - console.log('APP_INSIGHTS_KEY environment variable is not set. So, cannot inject it into the application.'); + console.log( + "APP_INSIGHTS_KEY environment variable is not set. So, cannot inject it into the application.", + ); return Promise.resolve(); } // replace the key - return gulp.src(['out/telemetry.js']) + return src(["out/extension.js"]) .pipe(replace(/REPLACE-APP-INSIGHTS-KEY/, process.env.APP_INSIGHTS_KEY)) - .pipe(gulp.dest('out/')); + .pipe(dest("out/")); } diff --git a/extensions/ql-vscode/gulpfile.ts/chromium-version.json b/extensions/ql-vscode/gulpfile.ts/chromium-version.json new file mode 100644 index 00000000000..e2433ceb1f9 --- /dev/null +++ b/extensions/ql-vscode/gulpfile.ts/chromium-version.json @@ -0,0 +1,4 @@ +{ + "chromiumVersion": "122", + "electronVersion": "29.4.0" +} diff --git a/extensions/ql-vscode/gulpfile.ts/deploy.ts b/extensions/ql-vscode/gulpfile.ts/deploy.ts index 97491eb9309..7b98600815b 100644 --- a/extensions/ql-vscode/gulpfile.ts/deploy.ts +++ b/extensions/ql-vscode/gulpfile.ts/deploy.ts @@ -1,5 +1,16 @@ -import * as fs from 'fs-extra'; -import * as path from 'path'; +import { + copy, + readFile, + mkdirs, + readdir, + unlinkSync, + rename, + remove, + writeFile, +} from "fs-extra"; +import { resolve, join } from "path"; +import { isDevBuild } from "./dev"; +import type packageJsonType from "../package.json"; export interface DeployedPackage { distPath: string; @@ -8,64 +19,90 @@ export interface DeployedPackage { } const packageFiles = [ - '.vscodeignore', - 'CHANGELOG.md', - 'README.md', - 'language-configuration.json', - 'snippets.json', - 'media', - 'node_modules', - 'out' + ".vscodeignore", + "CHANGELOG.md", + "README.md", + "language-configuration.json", + "snippets.json", + "media", + "out", + "databases-schema.json", ]; -async function copyPackage(sourcePath: string, destPath: string): Promise { - for (const file of packageFiles) { - console.log(`copying ${path.resolve(sourcePath, file)} to ${path.resolve(destPath, file)}`); - await fs.copy(path.resolve(sourcePath, file), path.resolve(destPath, file)); - } +async function copyDirectory( + sourcePath: string, + destPath: string, +): Promise { + console.log(`copying ${sourcePath} to ${destPath}`); + await copy(sourcePath, destPath); } -export async function deployPackage(packageJsonPath: string): Promise { +async function copyPackage( + sourcePath: string, + destPath: string, +): Promise { + await Promise.all( + packageFiles.map((file) => + copyDirectory(resolve(sourcePath, file), resolve(destPath, file)), + ), + ); + + // The koffi directory needs to be located at the root of the package to ensure + // that the koffi package can find its native modules. + await rename(resolve(destPath, "out", "koffi"), resolve(destPath, "koffi")); +} + +export async function deployPackage(): Promise { try { - const packageJson: any = JSON.parse(await fs.readFile(packageJsonPath, 'utf8')); + const packageJson: typeof packageJsonType = JSON.parse( + await readFile(resolve(__dirname, "../package.json"), "utf8"), + ); - // Default to development build; use flag --release to indicate release build. - const isDevBuild = !process.argv.includes('--release'); - const distDir = path.join(__dirname, '../../../dist'); - await fs.mkdirs(distDir); + const distDir = join(__dirname, "../../../dist"); + await mkdirs(distDir); if (isDevBuild) { // NOTE: rootPackage.name had better not have any regex metacharacters - const oldDevBuildPattern = new RegExp('^' + packageJson.name + '[^/]+-dev[0-9.]+\\.vsix$'); + const oldDevBuildPattern = new RegExp( + `^${packageJson.name}[^/]+-dev[0-9.]+\\.vsix$`, + ); // Dev package filenames are of the form // vscode-codeql-0.0.1-dev.2019.9.27.19.55.20.vsix - (await fs.readdir(distDir)).filter(name => name.match(oldDevBuildPattern)).map(build => { - console.log(`Deleting old dev build ${build}...`); - fs.unlinkSync(path.join(distDir, build)); - }); + (await readdir(distDir)) + .filter((name) => name.match(oldDevBuildPattern)) + .map((build) => { + console.log(`Deleting old dev build ${build}...`); + unlinkSync(join(distDir, build)); + }); const now = new Date(); - packageJson.version = packageJson.version + - `-dev.${now.getUTCFullYear()}.${now.getUTCMonth() + 1}.${now.getUTCDate()}` + + packageJson.version = + `${packageJson.version}-dev.${now.getUTCFullYear()}.${ + now.getUTCMonth() + 1 + }.${now.getUTCDate()}` + `.${now.getUTCHours()}.${now.getUTCMinutes()}.${now.getUTCSeconds()}`; } - const distPath = path.join(distDir, packageJson.name); - await fs.remove(distPath); - await fs.mkdirs(distPath); + const distPath = join(distDir, packageJson.name); + await remove(distPath); + await mkdirs(distPath); - await fs.writeFile(path.join(distPath, 'package.json'), JSON.stringify(packageJson, null, 2)); + await writeFile( + join(distPath, "package.json"), + JSON.stringify(packageJson, null, 2), + ); - const sourcePath = path.join(__dirname, '..'); - console.log(`Copying package '${packageJson.name}' and its dependencies to '${distPath}'...`); + const sourcePath = join(__dirname, ".."); + console.log( + `Copying package '${packageJson.name}' and its dependencies to '${distPath}'...`, + ); await copyPackage(sourcePath, distPath); return { - distPath: distPath, + distPath, name: packageJson.name, - version: packageJson.version + version: packageJson.version, }; - } - catch (e) { + } catch (e) { console.error(e); throw e; } diff --git a/extensions/ql-vscode/gulpfile.ts/dev.ts b/extensions/ql-vscode/gulpfile.ts/dev.ts new file mode 100644 index 00000000000..661e562b616 --- /dev/null +++ b/extensions/ql-vscode/gulpfile.ts/dev.ts @@ -0,0 +1,2 @@ +// Default to development build; use flag --release to indicate release build. +export const isDevBuild = !process.argv.includes("--release"); diff --git a/extensions/ql-vscode/gulpfile.ts/index.ts b/extensions/ql-vscode/gulpfile.ts/index.ts index b76732c10e3..3c20b838c09 100644 --- a/extensions/ql-vscode/gulpfile.ts/index.ts +++ b/extensions/ql-vscode/gulpfile.ts/index.ts @@ -1,28 +1,59 @@ -import * as gulp from 'gulp'; -import { compileTypeScript, watchTypeScript, copyViewCss, cleanOutput, watchCss } from './typescript'; -import { compileTextMateGrammar } from './textmate'; -import { copyTestData } from './tests'; -import { compileView, watchView } from './webpack'; -import { packageExtension } from './package'; -import { injectAppInsightsKey } from './appInsights'; +import { parallel, series } from "gulp"; +import { + compileEsbuild, + watchEsbuild, + checkTypeScript, + watchCheckTypeScript, + cleanOutput, + copyModules, +} from "./typescript"; +import { compileTextMateGrammar } from "./textmate"; +import { packageExtension } from "./package"; +import { injectAppInsightsKey } from "./appInsights"; +import { + checkViewTypeScript, + compileViewEsbuild, + watchViewCheckTypeScript, + watchViewEsbuild, +} from "./view"; + +export const buildWithoutPackage = series( + cleanOutput, + parallel( + compileEsbuild, + copyModules, + checkTypeScript, + compileTextMateGrammar, + compileViewEsbuild, + checkViewTypeScript, + ), +); -export const buildWithoutPackage = - gulp.series( - cleanOutput, - gulp.parallel( - compileTypeScript, compileTextMateGrammar, compileView, copyTestData, copyViewCss - ) - ); +export const watch = parallel( + // Always build first, so that we don't have to run build manually + compileEsbuild, + compileViewEsbuild, + watchEsbuild, + watchCheckTypeScript, + watchViewEsbuild, + watchViewCheckTypeScript, +); export { cleanOutput, compileTextMateGrammar, - watchTypeScript, - watchView, - compileTypeScript, - copyTestData, + watchEsbuild, + watchCheckTypeScript, + watchViewEsbuild, + compileEsbuild, + copyModules, + checkTypeScript, injectAppInsightsKey, - compileView, - watchCss + compileViewEsbuild, + checkViewTypeScript, }; -export default gulp.series(buildWithoutPackage, injectAppInsightsKey, packageExtension); +export default series( + buildWithoutPackage, + injectAppInsightsKey, + packageExtension, +); diff --git a/extensions/ql-vscode/gulpfile.ts/package.ts b/extensions/ql-vscode/gulpfile.ts/package.ts index 0e307d01e08..9f33938195e 100644 --- a/extensions/ql-vscode/gulpfile.ts/package.ts +++ b/extensions/ql-vscode/gulpfile.ts/package.ts @@ -1,23 +1,37 @@ -import * as path from 'path'; -import { deployPackage } from './deploy'; -import * as childProcess from 'child-process-promise'; +import { resolve } from "path"; +import { deployPackage } from "./deploy"; +import { spawn } from "cross-spawn"; export async function packageExtension(): Promise { - const deployedPackage = await deployPackage(path.resolve('package.json')); - console.log(`Packaging extension '${deployedPackage.name}@${deployedPackage.version}'...`); + const deployedPackage = await deployPackage(); + console.log( + `Packaging extension '${deployedPackage.name}@${deployedPackage.version}'...`, + ); const args = [ - 'package', - '--out', path.resolve(deployedPackage.distPath, '..', `${deployedPackage.name}-${deployedPackage.version}.vsix`) + "package", + "--out", + resolve( + deployedPackage.distPath, + "..", + `${deployedPackage.name}-${deployedPackage.version}.vsix`, + ), + "--no-dependencies", + "--skip-license", ]; - const proc = childProcess.spawn('./node_modules/.bin/vsce', args, { - cwd: deployedPackage.distPath - }); - proc.childProcess.stdout!.on('data', (data) => { - console.log(data.toString()); - }); - proc.childProcess.stderr!.on('data', (data) => { - console.error(data.toString()); + const proc = spawn(resolve(__dirname, "../node_modules/.bin/vsce"), args, { + cwd: deployedPackage.distPath, + stdio: ["ignore", "inherit", "inherit"], }); - await proc; + await new Promise((resolve, reject) => { + proc.on("error", reject); + + proc.on("close", (code) => { + if (code === 0) { + resolve(undefined); + } else { + reject(new Error(`Failed to package extension with code ${code}`)); + } + }); + }); } diff --git a/extensions/ql-vscode/gulpfile.ts/tests.ts b/extensions/ql-vscode/gulpfile.ts/tests.ts deleted file mode 100644 index 13d081c6a18..00000000000 --- a/extensions/ql-vscode/gulpfile.ts/tests.ts +++ /dev/null @@ -1,17 +0,0 @@ -import * as gulp from 'gulp'; - -export function copyTestData() { - copyNoWorkspaceData(); - copyCliIntegrationData(); - return Promise.resolve(); -} - -function copyNoWorkspaceData() { - return gulp.src('src/vscode-tests/no-workspace/data/**/*') - .pipe(gulp.dest('out/vscode-tests/no-workspace/data')); -} - -function copyCliIntegrationData() { - return gulp.src('src/vscode-tests/cli-integration/data/**/*') - .pipe(gulp.dest('out/vscode-tests/cli-integration/data')); -} diff --git a/extensions/ql-vscode/gulpfile.ts/textmate-grammar.ts b/extensions/ql-vscode/gulpfile.ts/textmate-grammar.ts new file mode 100644 index 00000000000..ab61bec513d --- /dev/null +++ b/extensions/ql-vscode/gulpfile.ts/textmate-grammar.ts @@ -0,0 +1,91 @@ +/** + * A subset of the standard TextMate grammar that is used by our transformation + * step. For a full JSON schema, see: + * https://github.com/martinring/tmlanguage/blob/478ad124a21933cd4b0b65f1ee7ee18ee1f87473/tmlanguage.json + */ +export interface TextmateGrammar { + patterns: Pattern[]; + repository?: Record; +} + +/** + * The extended TextMate grammar as used by our transformation step. This is a superset of the + * standard TextMate grammar, and includes additional fields that are used by our transformation + * step. + * + * Any comment of the form `(?#ref-id)` in a `match`, `begin`, or `end` property will be replaced + * with the match text of the rule named "ref-id". If the rule named "ref-id" consists of just a + * `patterns` property with a list of `include` directives, the replacement pattern is the + * disjunction of the match patterns of all of the included rules. + */ +export interface ExtendedTextmateGrammar { + /** + * This represents the set of regular expression options to apply to all regular + * expressions throughout the file. + */ + regexOptions?: string; + /** + * This element defines a map of macro names to replacement text. When a `match`, `begin`, or + * `end` property has a value that is a single-key map, the value is replaced with the value of the + * macro named by the key, with any use of `(?#)` in the macro text replaced with the text of the + * value of the key, surrounded by a non-capturing group (`(?:)`). For example: + * + * The `beginPattern` and `endPattern` Properties + * A rule can have a `beginPattern` or `endPattern` property whose value is a reference to another + * rule (e.g. `#other-rule`). The `beginPattern` property is replaced as follows: + * + * my-rule: + * beginPattern: '#other-rule' + * + * would be transformed to + * + * my-rule: + * begin: '(?#other-rule)' + * beginCaptures: + * '0': + * patterns: + * - include: '#other-rule' + * + * An `endPattern` property is transformed similary. + * + * macros: + * repeat: '(?#)*' + * repository: + * multi-letter: + * match: + * repeat: '[A-Za-z]' + * name: scope.multi-letter + * + * would be transformed to + * + * repository: + * multi-letter: + * match: '(?:[A-Za-z])*' + * name: scope.multi-letter + */ + macros?: Record; + + patterns: Array>; + repository?: Record>; +} + +export interface Pattern { + include?: string; + match?: MatchType; + begin?: MatchType; + end?: MatchType; + while?: MatchType; + captures?: Record; + beginCaptures?: Record; + endCaptures?: Record; + patterns?: Array>; + beginPattern?: string; + endPattern?: string; +} + +export interface PatternCapture { + name?: string; + patterns?: Pattern[]; +} + +export type ExtendedMatchType = string | Record; diff --git a/extensions/ql-vscode/gulpfile.ts/textmate.ts b/extensions/ql-vscode/gulpfile.ts/textmate.ts index d8aa7319751..a2ed4db083b 100644 --- a/extensions/ql-vscode/gulpfile.ts/textmate.ts +++ b/extensions/ql-vscode/gulpfile.ts/textmate.ts @@ -1,8 +1,15 @@ -import * as gulp from 'gulp'; -import * as jsYaml from 'js-yaml'; -import * as through from 'through2'; -import * as PluginError from 'plugin-error'; -import * as Vinyl from 'vinyl'; +import { dest, src } from "gulp"; +import { load } from "js-yaml"; +import { obj } from "through2"; +import PluginError from "plugin-error"; +import type Vinyl from "vinyl"; +import type { + ExtendedMatchType, + ExtendedTextmateGrammar, + Pattern, + TextmateGrammar, +} from "./textmate-grammar"; +import { pipeline } from "stream/promises"; /** * Replaces all rule references with the match pattern of the referenced rule. @@ -11,9 +18,11 @@ import * as Vinyl from 'vinyl'; * @param replacements Map from rule name to match text. * @returns The new regex after replacement. */ -function replaceReferencesWithStrings(value: string, replacements: Map): string { +function replaceReferencesWithStrings( + value: string, + replacements: Map, +): string { let result = value; - // eslint-disable-next-line no-constant-condition while (true) { const original = result; for (const key of Array.from(replacements.keys())) { @@ -31,7 +40,9 @@ function replaceReferencesWithStrings(value: string, replacements: Map { +function gatherMacros( + yaml: ExtendedTextmateGrammar, +): Map { const macros = new Map(); for (const key in yaml.macros) { macros.set(key, yaml.macros[key]); @@ -48,25 +59,22 @@ function gatherMacros(yaml: any): Map { * @returns The match text for the rule. This is either the value of the rule's `match` property, * or the disjunction of the match text of all of the other rules `include`d by this rule. */ -function getNodeMatchText(rule: any): string { +function getNodeMatchText(rule: Pattern): string { if (rule.match !== undefined) { // For a match string, just use that string as the replacement. return rule.match; - } - else if (rule.patterns !== undefined) { + } else if (rule.patterns !== undefined) { const patterns: string[] = []; // For a list of patterns, use the disjunction of those patterns. - for (const patternIndex in rule.patterns) { - const pattern = rule.patterns[patternIndex]; + for (const pattern of rule.patterns) { if (pattern.include !== null) { - patterns.push('(?' + pattern.include + ')'); + patterns.push(`(?${pattern.include})`); } } - return '(?:' + patterns.join('|') + ')'; - } - else { - return ''; + return `(?:${patterns.join("|")})`; + } else { + return ""; } } @@ -77,7 +85,7 @@ function getNodeMatchText(rule: any): string { * @returns A map whose keys are the names of rules, and whose values are the corresponding match * text of each rule. */ -function gatherMatchTextForRules(yaml: any): Map { +function gatherMatchTextForRules(yaml: TextmateGrammar): Map { const replacements = new Map(); for (const key in yaml.repository) { const node = yaml.repository[key]; @@ -93,9 +101,14 @@ function gatherMatchTextForRules(yaml: any): Map { * @param yaml The root of the YAML document. * @param action Callback to invoke on each rule. */ -function visitAllRulesInFile(yaml: any, action: (rule: any) => void) { +function visitAllRulesInFile( + yaml: ExtendedTextmateGrammar, + action: (rule: Pattern) => void, +) { visitAllRulesInRuleMap(yaml.patterns, action); - visitAllRulesInRuleMap(yaml.repository, action); + if (yaml.repository) { + visitAllRulesInRuleMap(Object.values(yaml.repository), action); + } } /** @@ -106,10 +119,12 @@ function visitAllRulesInFile(yaml: any, action: (rule: any) => void) { * @param ruleMap The map or array of rules to visit. * @param action Callback to invoke on each rule. */ -function visitAllRulesInRuleMap(ruleMap: any, action: (rule: any) => void) { - for (const key in ruleMap) { - const rule = ruleMap[key]; - if ((typeof rule) === 'object') { +function visitAllRulesInRuleMap( + ruleMap: Array>, + action: (rule: Pattern) => void, +) { + for (const rule of ruleMap) { + if (typeof rule === "object") { action(rule); if (rule.patterns !== undefined) { visitAllRulesInRuleMap(rule.patterns, action); @@ -124,16 +139,22 @@ function visitAllRulesInRuleMap(ruleMap: any, action: (rule: any) => void) { * @param rule The rule whose matches are to be transformed. * @param action The transformation to make on each match pattern. */ -function visitAllMatchesInRule(rule: any, action: (match: any) => any) { +function visitAllMatchesInRule(rule: Pattern, action: (match: T) => T) { for (const key in rule) { switch (key) { - case 'begin': - case 'end': - case 'match': - case 'while': - rule[key] = action(rule[key]); - break; + case "begin": + case "end": + case "match": + case "while": { + const ruleElement = rule[key]; + if (!ruleElement) { + continue; + } + + rule[key] = action(ruleElement); + break; + } default: break; } @@ -147,21 +168,24 @@ function visitAllMatchesInRule(rule: any, action: (match: any) => any) { * @param rule Rule to be transformed. * @param key Base key of the property to be transformed. */ -function expandPatternMatchProperties(rule: any, key: 'begin' | 'end') { - const patternKey = key + 'Pattern'; - const capturesKey = key + 'Captures'; +function expandPatternMatchProperties( + rule: Pattern, + key: "begin" | "end", +) { + const patternKey = `${key}Pattern` as const; + const capturesKey = `${key}Captures` as const; const pattern = rule[patternKey]; if (pattern !== undefined) { const patterns: string[] = Array.isArray(pattern) ? pattern : [pattern]; - rule[key] = patterns.map(p => `((?${p}))`).join('|'); - const captures: { [index: string]: any } = {}; - for (const patternIndex in patterns) { - captures[(Number(patternIndex) + 1).toString()] = { + rule[key] = patterns.map((p) => `((?${p}))`).join("|") as T; + const captures: Pattern["captures"] = {}; + for (const [captureIndex, capture] of patterns.entries()) { + captures[(Number(captureIndex) + 1).toString()] = { patterns: [ { - include: patterns[patternIndex] - } - ] + include: capture, + }, + ], }; } rule[capturesKey] = captures; @@ -174,23 +198,22 @@ function expandPatternMatchProperties(rule: any, key: 'begin' | 'end') { * * @param yaml The root of the YAML document. */ -function transformFile(yaml: any) { +function transformFile(yaml: ExtendedTextmateGrammar) { const macros = gatherMacros(yaml); visitAllRulesInFile(yaml, (rule) => { - expandPatternMatchProperties(rule, 'begin'); - expandPatternMatchProperties(rule, 'end'); + expandPatternMatchProperties(rule, "begin"); + expandPatternMatchProperties(rule, "end"); }); // Expand macros in matches. visitAllRulesInFile(yaml, (rule) => { visitAllMatchesInRule(rule, (match) => { - if ((typeof match) === 'object') { + if (typeof match === "object") { for (const key in match) { - return macros.get(key)!.replace('(?#)', `(?:${match[key]})`); + return macros.get(key)!.replace("(?#)", `(?:${match[key]})`); } - throw new Error('No key in macro map.'); - } - else { + throw new Error("No key in macro map."); + } else { return match; } }); @@ -198,49 +221,63 @@ function transformFile(yaml: any) { yaml.macros = undefined; - const replacements = gatherMatchTextForRules(yaml); + // We have removed all object match properties, so we don't have an extended match type anymore. + const macrolessYaml = yaml as ExtendedTextmateGrammar; + + const replacements = gatherMatchTextForRules(macrolessYaml); // Expand references in matches. - visitAllRulesInFile(yaml, (rule) => { + visitAllRulesInFile(macrolessYaml, (rule) => { visitAllMatchesInRule(rule, (match) => { return replaceReferencesWithStrings(match, replacements); }); }); - if (yaml.regexOptions !== undefined) { - const regexOptions = '(?' + yaml.regexOptions + ')'; - visitAllRulesInFile(yaml, (rule) => { + if (macrolessYaml.regexOptions !== undefined) { + const regexOptions = `(?${macrolessYaml.regexOptions})`; + visitAllRulesInFile(macrolessYaml, (rule) => { visitAllMatchesInRule(rule, (match) => { return regexOptions + match; }); }); - yaml.regexOptions = undefined; + macrolessYaml.regexOptions = undefined; } + + return macrolessYaml; } export function transpileTextMateGrammar() { - return through.obj((file: Vinyl, _encoding: string, callback: (err: string | null, file: Vinyl | PluginError) => void): void => { - if (file.isNull()) { - callback(null, file); - } - else if (file.isBuffer()) { - const buf: Buffer = file.contents; - const yamlText: string = buf.toString('utf8'); - const jsonData: any = jsYaml.load(yamlText); - transformFile(jsonData); - - file.contents = Buffer.from(JSON.stringify(jsonData, null, 2), 'utf8'); - file.extname = '.json'; - callback(null, file); - } - else { - callback('error', new PluginError('transpileTextMateGrammar', 'Format not supported.')); - } - }); + return obj( + ( + file: Vinyl, + _encoding: string, + callback: (err: string | null, file: Vinyl | PluginError) => void, + ): void => { + if (file.isNull()) { + callback(null, file); + } else if (file.isBuffer()) { + const buf: Buffer = file.contents; + const yamlText: string = buf.toString("utf8"); + const yamlData = load(yamlText) as TextmateGrammar; + const jsonData = transformFile(yamlData); + + file.contents = Buffer.from(JSON.stringify(jsonData, null, 2), "utf8"); + file.extname = ".json"; + callback(null, file); + } else { + callback( + "error", + new PluginError("transpileTextMateGrammar", "Format not supported."), + ); + } + }, + ); } export function compileTextMateGrammar() { - return gulp.src('syntaxes/*.tmLanguage.yml') - .pipe(transpileTextMateGrammar()) - .pipe(gulp.dest('out/syntaxes')); + return pipeline( + src("syntaxes/*.tmLanguage.yml"), + transpileTextMateGrammar(), + dest("out/syntaxes"), + ); } diff --git a/extensions/ql-vscode/gulpfile.ts/tsconfig.json b/extensions/ql-vscode/gulpfile.ts/tsconfig.json index 482a6b127d7..a5b17fd52d7 100644 --- a/extensions/ql-vscode/gulpfile.ts/tsconfig.json +++ b/extensions/ql-vscode/gulpfile.ts/tsconfig.json @@ -1,23 +1,8 @@ { "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", "compilerOptions": { - "declaration": true, - "strict": true, - "module": "commonjs", - "target": "es2017", - "lib": ["ES2021"], - "moduleResolution": "node", - "sourceMap": true, - "rootDir": ".", - "strictNullChecks": true, - "noFallthroughCasesInSwitch": true, - "preserveWatchOutput": true, - "newLine": "lf", - "noImplicitReturns": true, - "experimentalDecorators": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "esModuleInterop": true + "rootDir": ".." }, "include": ["*.ts"] } diff --git a/extensions/ql-vscode/gulpfile.ts/typescript.ts b/extensions/ql-vscode/gulpfile.ts/typescript.ts index 84a6a347a5d..9d49b56821e 100644 --- a/extensions/ql-vscode/gulpfile.ts/typescript.ts +++ b/extensions/ql-vscode/gulpfile.ts/typescript.ts @@ -1,51 +1,100 @@ -import * as colors from 'ansi-colors'; -import * as gulp from 'gulp'; -import * as sourcemaps from 'gulp-sourcemaps'; -import * as ts from 'gulp-typescript'; -import * as del from 'del'; +import { gray, red } from "ansi-colors"; +import { dest, parallel, src, watch } from "gulp"; +import esbuild from "gulp-esbuild"; +import type { reporter } from "gulp-typescript"; +import { createProject } from "gulp-typescript"; +import del from "del"; +import { pipeline } from "stream/promises"; -function goodReporter(): ts.reporter.Reporter { +export function goodReporter(): reporter.Reporter { return { error: (error, typescript) => { if (error.tsFile) { - console.log('[' + colors.gray('gulp-typescript') + '] ' + colors.red(error.fullFilename - + '(' + (error.startPosition!.line + 1) + ',' + error.startPosition!.character + '): ') - + 'error TS' + error.diagnostic.code + ': ' + typescript.flattenDiagnosticMessageText(error.diagnostic.messageText, '\n')); - } - else { + console.log( + `[${gray("gulp-typescript")}] ${red( + `${error.fullFilename}(${error.startPosition!.line + 1},${ + error.startPosition!.character + }): `, + )}error TS${ + error.diagnostic.code + }: ${typescript.flattenDiagnosticMessageText( + error.diagnostic.messageText, + "\n", + )}`, + ); + } else { console.log(error.message); } }, }; } -const tsProject = ts.createProject('tsconfig.json'); +const tsProject = createProject("tsconfig.json"); export function cleanOutput() { - return tsProject.projectDirectory ? del(tsProject.projectDirectory + '/out/*') : Promise.resolve(); + return tsProject.projectDirectory + ? del(`${tsProject.projectDirectory}/out/*`) + : Promise.resolve(); +} + +export function compileEsbuild() { + return pipeline( + src("./src/extension.ts"), + esbuild({ + outfile: "extension.js", + bundle: true, + external: ["vscode", "fsevents"], + format: "cjs", + platform: "node", + target: "es2020", + sourcemap: "linked", + sourceRoot: "..", + loader: { + ".node": "copy", + }, + }), + dest("out"), + ); } -export function compileTypeScript() { - return tsProject.src() - .pipe(sourcemaps.init()) - .pipe(tsProject(goodReporter())) - .pipe(sourcemaps.write('.', { - includeContent: false, - sourceRoot: '.', - })) - .pipe(gulp.dest('out')); +export function watchEsbuild() { + watch(["src/**/*.ts", "!src/view/**/*.ts"], compileEsbuild); } -export function watchTypeScript() { - gulp.watch('src/**/*.ts', compileTypeScript); +export function checkTypeScript() { + // This doesn't actually output the TypeScript files, it just + // runs the TypeScript compiler and reports any errors. + return tsProject.src().pipe(tsProject(goodReporter())); } -export function watchCss() { - gulp.watch('src/**/*.css', copyViewCss); +export function watchCheckTypeScript() { + watch(["src/**/*.ts", "!src/view/**/*.ts"], checkTypeScript); } -/** Copy CSS files for the results view into the output directory. */ -export function copyViewCss() { - return gulp.src('src/**/view/*.css') - .pipe(gulp.dest('out')); +function copyWasmFiles() { + // We need to copy this file for the source-map package to work. Without this fie, the source-map + // package is not able to load the WASM file because we are not including the full node_modules + // directory. In version 0.7.4, it is not possible to call SourceMapConsumer.initialize in Node environments + // to configure the path to the WASM file. So, source-map will always load the file from `__dirname/mappings.wasm`. + // In version 0.8.0, it may be possible to do this properly by calling SourceMapConsumer.initialize by + // using the "browser" field in source-map's package.json to load the WASM file from a given file path. + return src("node_modules/source-map/lib/mappings.wasm", { + // WASM is a binary format, so don't try to re-encode it as text. + encoding: false, + }).pipe(dest("out")); } + +function copyNativeAddonFiles() { + // We need to copy these files manually because we only want to include Windows x64 to limit + // the size of the extension. Windows x64 is the most common platform that requires short path + // expansion, so we only include this platform. + // See src/common/short-paths.ts + return pipeline( + src("node_modules/koffi/build/koffi/win32_x64/*.node", { + encoding: false, + }), + dest("out/koffi/win32_x64"), + ); +} + +export const copyModules = parallel(copyWasmFiles, copyNativeAddonFiles); diff --git a/extensions/ql-vscode/gulpfile.ts/view.ts b/extensions/ql-vscode/gulpfile.ts/view.ts new file mode 100644 index 00000000000..698f39c113e --- /dev/null +++ b/extensions/ql-vscode/gulpfile.ts/view.ts @@ -0,0 +1,43 @@ +import { dest, src, watch } from "gulp"; +import esbuild from "gulp-esbuild"; +import { createProject } from "gulp-typescript"; +import { goodReporter } from "./typescript"; + +import { pipeline } from "stream/promises"; +import chromiumVersion from "./chromium-version.json"; + +const tsProject = createProject("src/view/tsconfig.json"); + +export function compileViewEsbuild() { + return pipeline( + src("./src/view/webview.tsx"), + esbuild({ + outfile: "webview.js", + bundle: true, + format: "iife", + platform: "browser", + target: `chrome${chromiumVersion.chromiumVersion}`, + jsx: "automatic", + sourcemap: "linked", + sourceRoot: "..", + loader: { + ".ttf": "file", + }, + }), + dest("out"), + ); +} + +export function watchViewEsbuild() { + watch(["src/**/*.{ts,tsx}"], compileViewEsbuild); +} + +export function checkViewTypeScript() { + // This doesn't actually output the TypeScript files, it just + // runs the TypeScript compiler and reports any errors. + return tsProject.src().pipe(tsProject(goodReporter())); +} + +export function watchViewCheckTypeScript() { + watch(["src/**/*.{ts,tsx}"], checkViewTypeScript); +} diff --git a/extensions/ql-vscode/gulpfile.ts/webpack.config.ts b/extensions/ql-vscode/gulpfile.ts/webpack.config.ts deleted file mode 100644 index c19dbabd287..00000000000 --- a/extensions/ql-vscode/gulpfile.ts/webpack.config.ts +++ /dev/null @@ -1,69 +0,0 @@ -import * as path from 'path'; -import * as webpack from 'webpack'; - -export const config: webpack.Configuration = { - mode: 'development', - entry: { - resultsView: './src/view/results.tsx', - compareView: './src/compare/view/Compare.tsx', - remoteQueriesView: './src/remote-queries/view/RemoteQueries.tsx', - }, - output: { - path: path.resolve(__dirname, '..', 'out'), - filename: '[name].js' - }, - devtool: 'inline-source-map', - resolve: { - extensions: ['.js', '.ts', '.tsx', '.json'], - fallback: { - path: require.resolve('path-browserify') - } - }, - module: { - rules: [ - { - test: /\.(ts|tsx)$/, - loader: 'ts-loader', - options: { - configFile: 'src/view/tsconfig.json', - } - }, - { - test: /\.less$/, - use: [ - { - loader: 'style-loader' - }, - { - loader: 'css-loader', - options: { - importLoaders: 1, - sourceMap: true - } - }, - { - loader: 'less-loader', - options: { - javascriptEnabled: true, - sourceMap: true - } - } - ] - }, - { - test: /\.css$/, - use: [ - { - loader: 'style-loader' - }, - { - loader: 'css-loader' - } - ] - } - ] - }, - performance: { - hints: false - } -}; diff --git a/extensions/ql-vscode/gulpfile.ts/webpack.ts b/extensions/ql-vscode/gulpfile.ts/webpack.ts deleted file mode 100644 index 80c4c5a6899..00000000000 --- a/extensions/ql-vscode/gulpfile.ts/webpack.ts +++ /dev/null @@ -1,51 +0,0 @@ -import * as webpack from 'webpack'; -import { config } from './webpack.config'; - -export function compileView(cb: (err?: Error) => void) { - doWebpack(config, true, cb); -} - -export function watchView(cb: (err?: Error) => void) { - const watchConfig = { - ...config, - watch: true, - watchOptions: { - aggregateTimeout: 200, - poll: 1000, - } - }; - doWebpack(watchConfig, false, cb); -} - -function doWebpack(internalConfig: webpack.Configuration, failOnError: boolean, cb: (err?: Error) => void) { - const resultCb = (error: Error | undefined, stats?: webpack.Stats) => { - if (error) { - cb(error); - } - if (stats) { - console.log(stats.toString({ - errorDetails: true, - colors: true, - assets: false, - builtAt: false, - version: false, - hash: false, - entrypoints: false, - timings: false, - modules: false, - errors: true - })); - if (stats.hasErrors()) { - if (failOnError) { - cb(new Error('Compilation errors detected.')); - return; - } else { - console.error('Compilation errors detected.'); - } - } - cb(); - } - }; - - webpack(internalConfig, resultCb); -} diff --git a/extensions/ql-vscode/jest.config.js b/extensions/ql-vscode/jest.config.js new file mode 100644 index 00000000000..ac57b8e7a8d --- /dev/null +++ b/extensions/ql-vscode/jest.config.js @@ -0,0 +1,17 @@ +/* + * For a detailed explanation regarding each configuration property and type check, visit: + * https://jestjs.io/docs/configuration + */ + +/** @type {import('@jest/types').Config.InitialOptions} */ +// eslint-disable-next-line import/no-commonjs +module.exports = { + projects: [ + "/src/view", + "/test/unit-tests", + "/test/vscode-tests/activated-extension", + "/test/vscode-tests/cli-integration", + "/test/vscode-tests/no-workspace", + "/test/vscode-tests/minimal-workspace", + ], +}; diff --git a/extensions/ql-vscode/language-configuration.json b/extensions/ql-vscode/language-configuration.json index 0f54bdcafdd..778fc7821f6 100644 --- a/extensions/ql-vscode/language-configuration.json +++ b/extensions/ql-vscode/language-configuration.json @@ -30,5 +30,5 @@ "end": "^\\s*//\\s*#?endregion\\b" } }, - "wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\.\\<\\>\\/\\?\\s]+)" + "wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\.\\<\\>\\/\\?\\s\\,]+)" } diff --git a/extensions/ql-vscode/media/dark/check.svg b/extensions/ql-vscode/media/dark/check.svg deleted file mode 100644 index 0685a867c87..00000000000 --- a/extensions/ql-vscode/media/dark/check.svg +++ /dev/null @@ -1,56 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/extensions/ql-vscode/media/dark/edit.svg b/extensions/ql-vscode/media/dark/edit.svg deleted file mode 100644 index 92da1801427..00000000000 --- a/extensions/ql-vscode/media/dark/edit.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/extensions/ql-vscode/media/dark/lgtm-plus.svg b/extensions/ql-vscode/media/dark/lgtm-plus.svg deleted file mode 100644 index cfa1bb7a928..00000000000 --- a/extensions/ql-vscode/media/dark/lgtm-plus.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/extensions/ql-vscode/media/dark/preview.svg b/extensions/ql-vscode/media/dark/preview.svg deleted file mode 100644 index df21edf8678..00000000000 --- a/extensions/ql-vscode/media/dark/preview.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/extensions/ql-vscode/media/dark/sort-alpha.svg b/extensions/ql-vscode/media/dark/sort-alpha.svg deleted file mode 100644 index 8427e906224..00000000000 --- a/extensions/ql-vscode/media/dark/sort-alpha.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - diff --git a/extensions/ql-vscode/media/dark/sort-date.svg b/extensions/ql-vscode/media/dark/sort-date.svg deleted file mode 100644 index 6b533e0824d..00000000000 --- a/extensions/ql-vscode/media/dark/sort-date.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/extensions/ql-vscode/media/dark/sort-num.svg b/extensions/ql-vscode/media/dark/sort-num.svg deleted file mode 100644 index c5dfb149ebd..00000000000 --- a/extensions/ql-vscode/media/dark/sort-num.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - diff --git a/extensions/ql-vscode/media/dark/symbol-misc.svg b/extensions/ql-vscode/media/dark/symbol-misc.svg new file mode 100644 index 00000000000..39768b373c5 --- /dev/null +++ b/extensions/ql-vscode/media/dark/symbol-misc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extensions/ql-vscode/media/dark/trash.svg b/extensions/ql-vscode/media/dark/trash.svg deleted file mode 100644 index 8a5dd261ed8..00000000000 --- a/extensions/ql-vscode/media/dark/trash.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/extensions/ql-vscode/media/drive.svg b/extensions/ql-vscode/media/drive.svg deleted file mode 100644 index 48bd917dd48..00000000000 --- a/extensions/ql-vscode/media/drive.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/extensions/ql-vscode/media/globe.svg b/extensions/ql-vscode/media/globe.svg deleted file mode 100644 index 7a4a6a6ba77..00000000000 --- a/extensions/ql-vscode/media/globe.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/extensions/ql-vscode/media/light/check.svg b/extensions/ql-vscode/media/light/check.svg deleted file mode 100644 index 8ddd14da254..00000000000 --- a/extensions/ql-vscode/media/light/check.svg +++ /dev/null @@ -1,57 +0,0 @@ - -image/svg+xml - diff --git a/extensions/ql-vscode/media/light/edit.svg b/extensions/ql-vscode/media/light/edit.svg deleted file mode 100644 index fbe74fe6dbe..00000000000 --- a/extensions/ql-vscode/media/light/edit.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/extensions/ql-vscode/media/light/lgtm-plus.svg b/extensions/ql-vscode/media/light/lgtm-plus.svg deleted file mode 100644 index 4ca2d548fa7..00000000000 --- a/extensions/ql-vscode/media/light/lgtm-plus.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/extensions/ql-vscode/media/light/preview.svg b/extensions/ql-vscode/media/light/preview.svg deleted file mode 100644 index 9c9c4ee70b7..00000000000 --- a/extensions/ql-vscode/media/light/preview.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/extensions/ql-vscode/media/light/sort-alpha.svg b/extensions/ql-vscode/media/light/sort-alpha.svg deleted file mode 100644 index b69486f2d6f..00000000000 --- a/extensions/ql-vscode/media/light/sort-alpha.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - diff --git a/extensions/ql-vscode/media/light/sort-date.svg b/extensions/ql-vscode/media/light/sort-date.svg deleted file mode 100644 index 494e5e458c0..00000000000 --- a/extensions/ql-vscode/media/light/sort-date.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/extensions/ql-vscode/media/light/sort-num.svg b/extensions/ql-vscode/media/light/sort-num.svg deleted file mode 100644 index 9007ec80d26..00000000000 --- a/extensions/ql-vscode/media/light/sort-num.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - diff --git a/extensions/ql-vscode/media/light/symbol-misc.svg b/extensions/ql-vscode/media/light/symbol-misc.svg new file mode 100644 index 00000000000..4f30771fc21 --- /dev/null +++ b/extensions/ql-vscode/media/light/symbol-misc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extensions/ql-vscode/media/light/trash.svg b/extensions/ql-vscode/media/light/trash.svg deleted file mode 100644 index 7762243f679..00000000000 --- a/extensions/ql-vscode/media/light/trash.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/extensions/ql-vscode/media/red-x.svg b/extensions/ql-vscode/media/red-x.svg deleted file mode 100644 index 51714ed340e..00000000000 --- a/extensions/ql-vscode/media/red-x.svg +++ /dev/null @@ -1,58 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 603ce702c68..0b4b419cd74 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -1,7957 +1,9437 @@ { "name": "vscode-codeql", - "version": "1.6.11", - "lockfileVersion": 2, + "version": "1.17.8", + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscode-codeql", - "version": "1.6.11", - "license": "MIT", - "dependencies": { - "@octokit/plugin-retry": "^3.0.9", - "@octokit/rest": "^18.5.6", - "@primer/octicons-react": "^16.3.0", - "@primer/react": "^35.0.0", - "@vscode/codicons": "^0.0.31", - "@vscode/webview-ui-toolkit": "^1.0.0", - "child-process-promise": "^2.2.1", - "classnames": "~2.2.6", - "d3": "^6.3.1", - "d3-graphviz": "^2.6.1", - "fs-extra": "^10.0.1", - "glob-promise": "^4.2.2", - "js-yaml": "^4.1.0", - "minimist": "~1.2.6", - "nanoid": "^3.2.0", - "node-fetch": "~2.6.7", - "path-browserify": "^1.0.1", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "semver": "~7.3.2", - "source-map": "^0.7.4", + "version": "1.17.8", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.27.19", + "@hpcc-js/wasm-graphviz": "^1.21.1", + "@octokit/plugin-retry": "^7.2.0", + "@octokit/plugin-throttling": "^9.6.0", + "@octokit/rest": "^22.0.1", + "@vscode-elements/react-elements": "^0.9.0", + "@vscode/codicons": "^0.0.44", + "@vscode/debugadapter": "^1.68.0", + "@vscode/debugprotocol": "^1.68.0", + "ajv": "^8.18.0", + "chokidar": "^3.6.0", + "d3": "^7.9.0", + "d3-graphviz": "^5.6.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.1", + "koffi": "^2.15.5", + "msw": "^2.12.7", + "nanoid": "^5.0.7", + "p-queue": "^8.0.1", + "proper-lockfile": "^4.1.2", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "semver": "^7.6.2", + "source-map": "^0.7.6", "source-map-support": "^0.5.21", - "stream": "^0.0.2", - "stream-chain": "~2.2.4", - "stream-json": "~1.7.3", - "styled-components": "^5.3.3", - "tmp": "^0.1.0", - "tmp-promise": "~3.0.2", - "tree-kill": "~1.2.2", - "unzipper": "~0.10.5", + "stream-json": "^1.9.1", + "styled-components": "^6.1.13", + "tmp": "^0.2.5", + "tmp-promise": "^3.0.2", + "tree-kill": "^1.2.2", "vscode-extension-telemetry": "^0.1.6", - "vscode-jsonrpc": "^5.0.1", - "vscode-languageclient": "^6.1.3", - "vscode-test-adapter-api": "~1.7.0", - "vscode-test-adapter-util": "~0.7.0", - "zip-a-folder": "~1.1.3" + "vscode-jsonrpc": "^8.2.1", + "vscode-languageclient": "^8.0.2", + "yauzl": "^3.3.0", + "zip-a-folder": "^4.0.4" }, "devDependencies": { - "@types/chai": "^4.1.7", - "@types/chai-as-promised": "~7.1.2", - "@types/child-process-promise": "^2.2.1", - "@types/classnames": "~2.2.9", - "@types/d3": "^6.2.0", + "@babel/core": "^7.28.3", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/preset-env": "^7.29.0", + "@babel/preset-react": "^7.27.1", + "@babel/preset-typescript": "^7.28.5", + "@eslint/js": "^9.39.2", + "@faker-js/faker": "^10.3.0", + "@github/markdownlint-github": "^0.8.0", + "@jest/environment": "^30.2.0", + "@jest/environment-jsdom-abstract": "^30.2.0", + "@microsoft/eslint-formatter-sarif": "^3.1.0", + "@playwright/test": "^1.58.2", + "@storybook/addon-a11y": "^10.3.5", + "@storybook/addon-docs": "^10.3.5", + "@storybook/addon-links": "^10.3.5", + "@storybook/csf": "^0.1.13", + "@storybook/icons": "^2.0.1", + "@storybook/react": "^10.3.5", + "@storybook/react-vite": "^10.3.5", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^14.6.1", + "@types/cross-spawn": "^6.0.6", + "@types/d3": "^7.4.0", "@types/d3-graphviz": "^2.6.6", - "@types/del": "^4.0.0", - "@types/fs-extra": "^9.0.6", - "@types/glob": "^7.1.1", - "@types/google-protobuf": "^3.2.7", - "@types/gulp": "^4.0.9", - "@types/gulp-replace": "^1.1.0", - "@types/gulp-sourcemaps": "0.0.32", - "@types/js-yaml": "^3.12.5", - "@types/jszip": "~3.1.6", - "@types/mocha": "^9.0.0", - "@types/nanoid": "^3.0.0", - "@types/node": "^16.11.25", - "@types/node-fetch": "~2.5.2", - "@types/proxyquire": "~1.3.28", - "@types/react": "^17.0.2", - "@types/react-dom": "^17.0.2", - "@types/sarif": "~2.1.2", - "@types/semver": "~7.2.0", - "@types/sinon": "~7.5.2", - "@types/sinon-chai": "~3.2.3", - "@types/stream-chain": "~2.0.1", - "@types/stream-json": "~1.7.1", + "@types/fs-extra": "^11.0.1", + "@types/gulp": "^4.0.18", + "@types/jest": "^30.0.0", + "@types/js-yaml": "^4.0.6", + "@types/node": "22.19.*", + "@types/proper-lockfile": "^4.1.4", + "@types/react": "^19.2.3", + "@types/react-dom": "^19.2.3", + "@types/sarif": "^2.1.2", + "@types/semver": "^7.5.8", + "@types/stream-json": "^1.7.8", + "@types/styled-components": "^5.1.11", + "@types/tar-stream": "^3.1.4", "@types/through2": "^2.0.36", - "@types/tmp": "^0.1.0", - "@types/unzipper": "~0.10.1", - "@types/vscode": "^1.59.0", - "@types/webpack": "^5.28.0", - "@types/xml2js": "~0.4.4", - "@typescript-eslint/eslint-plugin": "^4.26.0", - "@typescript-eslint/parser": "^4.26.0", + "@types/tmp": "^0.2.6", + "@types/vscode": "1.90.0", + "@types/yauzl": "^2.10.3", + "@typescript-eslint/eslint-plugin": "^8.58.2", + "@typescript-eslint/parser": "^8.58.2", + "@vscode/test-electron": "^2.5.2", + "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", - "applicationinsights": "^1.8.7", - "chai": "^4.2.0", - "chai-as-promised": "~7.1.1", - "css-loader": "~3.1.0", + "applicationinsights": "^2.9.8", + "cosmiconfig": "^9.0.0", + "cross-env": "^10.1.0", + "cross-spawn": "^7.0.6", "del": "^6.0.0", - "eslint": "~6.8.0", - "eslint-plugin-react": "~7.19.0", - "glob": "^7.1.4", - "gulp": "^4.0.2", + "eslint": "^9.28.0", + "eslint-config-prettier": "^10.1.8", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-etc": "^2.0.2", + "eslint-plugin-github": "^6.0.0", + "eslint-plugin-jest-dom": "^5.5.0", + "eslint-plugin-prettier": "^5.2.6", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-storybook": "^10.3.3", + "glob": "^11.1.0", + "gulp": "^5.0.1", + "gulp-esbuild": "^0.14.1", "gulp-replace": "^1.1.3", - "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^5.0.1", - "husky": "~4.3.8", - "lint-staged": "~10.2.2", - "mocha": "^10.0.0", - "mocha-sinon": "~2.1.2", + "husky": "^9.1.7", + "jest": "^30.2.0", + "jest-runner-vscode": "^3.0.1", + "jsdom": "^27.0.1", + "lint-staged": "^15.3.0", + "markdownlint-cli2": "^0.17.0", + "markdownlint-cli2-formatter-pretty": "^0.0.9", "npm-run-all": "^4.1.5", - "prettier": "~2.0.5", - "proxyquire": "~2.1.3", - "sinon": "~13.0.1", - "sinon-chai": "~3.5.0", - "style-loader": "~3.3.1", + "patch-package": "^8.0.1", + "prettier": "^3.6.1", + "storybook": "^10.3.5", + "tar-stream": "^3.1.8", "through2": "^4.0.2", - "ts-loader": "^8.1.0", - "ts-node": "^10.7.0", - "ts-protoc-gen": "^0.9.0", - "typescript": "^4.5.5", - "typescript-formatter": "^7.2.2", - "vsce": "^2.7.0", - "vscode-test": "^1.4.0", - "webpack": "^5.62.2", - "webpack-cli": "^4.6.0" - }, - "engines": { - "node": "^16.13.0", + "ts-jest": "^29.4.6", + "ts-json-schema-generator": "^2.3.0", + "ts-node": "^10.9.2", + "ts-unused-exports": "^11.0.1", + "typescript": "^5.9.3", + "typescript-plugin-css-modules": "^5.2.0", + "vite": "^7.3.2", + "vite-node": "^5.3.0" + }, + "engines": { + "node": "^22.21.1", "npm": ">=7.20.6", - "vscode": "^1.59.0" + "vscode": "^1.90.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.9", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.9.tgz", + "integrity": "sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.16.7" + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" }, "engines": { - "node": ">=6.9.0" + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21 || 22" } }, - "node_modules/@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "node_modules/@adobe/css-tools": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "dependencies": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.0.5.tgz", + "integrity": "sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "lru-cache": "^11.2.1" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "20 || >=22" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "node_modules/@asamuzakjp/dom-selector": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.3.tgz", + "integrity": "sha512-kiGFeY+Hxf5KbPpjRLf+ffWbkos1aGo8MBfd91oxS3O57RgU3XhZrt/6UzoVF9VMpWbC3v87SRc9jxGrc9qHtQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" - }, + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.1.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.2" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6.9.0" + "node": "20 || >=22" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "node_modules/@azure/core-auth": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "node_modules/@azure/core-rest-pipeline": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", + "integrity": "sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "node_modules/@azure/core-tracing": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "node_modules/@azure/core-util": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.16.7" + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "node_modules/@azure/identity": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.5.0.tgz", + "integrity": "sha512-EknvVmtBuSIic47xkOqyNabAme0RYTw52BTMz8eBgU1ysTyMrD1uOoM+JdS0J/4Yfp98IBT3osqq3BfwSaNaGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.26.1", + "@azure/msal-node": "^2.15.0", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "node_modules/@azure/identity/node_modules/@azure/core-rest-pipeline": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", + "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", - "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", - "bin": { - "parser": "bin/babel-parser.js" + "node_modules/@azure/identity/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "node_modules/@azure/logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "dev": true, + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.4" + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", - "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", + "node_modules/@azure/msal-browser": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.28.0.tgz", + "integrity": "sha512-1c1qUF6vB52mWlyoMem4xR1gdwiQWYEQB2uhDkbAL4wVJr8WmAcXybc1Qs33y19N4BdPI8/DHI7rPE8L5jMtWw==", "dev": true, + "license": "MIT", "dependencies": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" + "@azure/msal-common": "14.16.0" + }, + "engines": { + "node": ">=0.8.0" } }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "node_modules/@azure/msal-common": { + "version": "14.16.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz", + "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.2.tgz", + "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@azure/msal-common": "14.16.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=16" } }, - "node_modules/@babel/traverse": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", - "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.10", - "@babel/types": "^7.16.8", - "debug": "^4.1.0", - "globals": "^11.1.0" + "node_modules/@azure/msal-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz", + "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==", + "dev": true, + "dependencies": { + "@azure/core-tracing": "^1.0.0", + "@azure/logger": "^1.0.0", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/core": "^1.15.2", + "@opentelemetry/instrumentation": "^0.41.2", + "tslib": "^2.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "node_modules/@babel/core": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.3", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">= 12" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, + "license": "MIT", "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, "engines": { - "node": ">=10.0.0" + "node": ">=6.9.0" } }, - "node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", "dependencies": { - "@emotion/memoize": "0.7.4" + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "node_modules/@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/@gulp-sourcemaps/identity-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", - "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" }, "engines": { - "node": ">= 0.10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { - "acorn": "bin/acorn" + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, + "license": "MIT", "dependencies": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { - "node": ">= 0.10" + "node": ">=6.9.0" } }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, + "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, + "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@microsoft/fast-element": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.10.2.tgz", - "integrity": "sha512-Nh80AEx/caDe4jhFYNT75sTG4k6MWy1N6XfgyhmejAX0ylivYy0M78WI2JgQOqi2ZRozCiNcpAPLVhYyAVN9sA==" + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@microsoft/fast-foundation": { - "version": "2.46.9", - "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.46.9.tgz", - "integrity": "sha512-jgkVT7bAWIV844eDj3V9cmYFsRIcJ8vMuB4h2SlkJ9EmFbCfimvh6RyAhsHv+bC6QZSS0N0bpZHm5A5QsWgi3Q==", - "dependencies": { - "@microsoft/fast-element": "^1.10.2", - "@microsoft/fast-web-utilities": "^5.4.1", - "tabbable": "^5.2.0", - "tslib": "^1.13.0" + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@microsoft/fast-web-utilities": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz", - "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==", - "dependencies": { - "exenv-es6": "^1.1.1" + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@babel/helpers": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" + }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/@octokit/auth-token": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", - "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@octokit/core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", - "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.0", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@octokit/graphql": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.4.tgz", - "integrity": "sha512-SWTdXsVheRmlotWNjKzPOb6Js6tjSqA2a8z9+glDJng0Aqjzti8MEWOtuT8ZSu6wHnci7LZNuarE87+WJBG4vg==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "node_modules/@octokit/openapi-types": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.3.2.tgz", - "integrity": "sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA==" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.5.tgz", - "integrity": "sha512-3WSAKBLa1RaR/7GG+LQR/tAZ9fp9H9waE9aPXallidyci9oZsfgsLn5M836d3LuDC6Fcym+2idRTBpssHZePVg==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^6.13.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@octokit/core": ">=2" + "@babel/core": "^7.0.0" } }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { - "@octokit/core": ">=3" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.1.tgz", - "integrity": "sha512-3B2iguGmkh6bQQaVOtCsS0gixrz8Lg0v4JuXPqBcFqLKuJtxAUf3K88RxMEf/naDOI73spD+goJ/o7Ie7Cvdjg==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "dependencies": { - "@octokit/types": "^6.16.2", - "deprecation": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@octokit/core": ">=3" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "dependencies": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/request": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.0.tgz", - "integrity": "sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "universal-user-agent": "^6.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/request/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@octokit/rest": { - "version": "18.6.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.6.0.tgz", - "integrity": "sha512-MdHuXHDJM7e5sUBe3K9tt7th0cs4csKU5Bb52LRi2oHAeIMrMZ4XqaTrEv660HoUPoM1iDlnj27Ab/Nh3MtwlA==", - "dependencies": { - "@octokit/core": "^3.5.0", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "5.3.1" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/types": { - "version": "6.16.4", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.16.4.tgz", - "integrity": "sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^7.3.2" - } - }, - "node_modules/@primer/behaviors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@primer/behaviors/-/behaviors-1.1.0.tgz", - "integrity": "sha512-Ej2OUc3ZIFaR7WwIUqESO1DTzmpb7wc8xbTVRT9s52jZQDjN7g5iljoK3ocYZm+BIAcKn3MvcwB42hEk4Ga4xQ==" - }, - "node_modules/@primer/octicons-react": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/@primer/octicons-react/-/octicons-react-16.3.0.tgz", - "integrity": "sha512-nxB6L5IYeR2hPY6q7DAyQGW42MO0kA4PqMBNysN4WaZAHjiKgtTDr9rI+759PqGK7BTTuT43HTuu2cMsg7pH0Q==", + "@babel/helper-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, "peerDependencies": { - "react": ">=15" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@primer/primitives": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@primer/primitives/-/primitives-7.1.1.tgz", - "integrity": "sha512-+Gwo89YK1OFi6oubTlah/zPxxzMNaMLy+inECAYI646KIFdzzhAsKWb3z5tSOu5Ff7no4isRV64rWfMSKLZclw==" - }, - "node_modules/@primer/react": { - "version": "35.0.0", - "resolved": "https://registry.npmjs.org/@primer/react/-/react-35.0.0.tgz", - "integrity": "sha512-pjraRDHoT6Lwmto31ZN+WrtNCDA6lieOhr+4XC1z8wuq/JSGJVB3gHePi2/yIZldy2WoK55O1lsyp8llUiakog==", - "dependencies": { - "@primer/behaviors": "1.1.0", - "@primer/octicons-react": "16.1.1", - "@primer/primitives": "7.1.1", - "@radix-ui/react-polymorphic": "0.0.14", - "@react-aria/ssr": "3.1.0", - "@styled-system/css": "5.1.5", - "@styled-system/props": "5.1.5", - "@styled-system/theme-get": "5.1.2", - "@types/styled-components": "5.1.11", - "@types/styled-system": "5.1.12", - "@types/styled-system__css": "5.0.16", - "@types/styled-system__theme-get": "5.0.1", - "classnames": "2.3.1", - "color2k": "1.2.4", - "deepmerge": "4.2.2", - "focus-visible": "5.2.0", - "history": "5.0.0", - "styled-system": "5.1.5" + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">=12", - "npm": ">=7" + "node": ">=6.9.0" }, "peerDependencies": { - "react": "^17.0.0", - "react-dom": "^17.0.0", - "styled-components": "4.x || 5.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@primer/react/node_modules/@primer/octicons-react": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@primer/octicons-react/-/octicons-react-16.1.1.tgz", - "integrity": "sha512-xCxQ5z23ol7yDuJs85Lc4ARzyoay+b3zOhAKkEMU7chk0xi2hT2OnRP23QUudNNDPTGozX268RGYLexUa6P4xw==", - "engines": { - "node": ">=8" + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { - "react": ">=15" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@primer/react/node_modules/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, - "node_modules/@radix-ui/react-polymorphic": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@radix-ui/react-polymorphic/-/react-polymorphic-0.0.14.tgz", - "integrity": "sha512-9nsMZEDU3LeIUeHJrpkkhZVxu/9Fc7P2g2I3WR+uA9mTbNC3hGaabi0dV6wg0CfHb+m4nSs1pejbE/5no3MJTA==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, "peerDependencies": { - "react": "^16.8 || ^17.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-aria/ssr": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.1.0.tgz", - "integrity": "sha512-RxqQKmE8sO7TGdrcSlHTcVzMP450hqowtBSd2bBS9oPlcokVkaGq28c3Rwa8ty5ctw4EBCjXqjP7xdcKMGDzug==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.6.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.1.tgz", - "integrity": "sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@sinonjs/samsam": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", - "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true - }, - "node_modules/@styled-system/background": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz", - "integrity": "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/border": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz", - "integrity": "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/color": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz", - "integrity": "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz", - "integrity": "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "dependencies": { - "object-assign": "^4.1.1" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz", - "integrity": "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==" - }, - "node_modules/@styled-system/flexbox": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz", - "integrity": "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/grid": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz", - "integrity": "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/layout": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz", - "integrity": "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@styled-system/position": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz", - "integrity": "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/props": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/props/-/props-5.1.5.tgz", - "integrity": "sha512-FXhbzq2KueZpGaHxaDm8dowIEWqIMcgsKs6tBl6Y6S0njG9vC8dBMI6WSLDnzMoSqIX3nSKHmOmpzpoihdDewg==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "dev": true, + "license": "MIT", "dependencies": { - "styled-system": "^5.1.5" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/shadow": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz", - "integrity": "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==", - "dependencies": { - "@styled-system/core": "^5.1.2" - } - }, - "node_modules/@styled-system/space": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz", - "integrity": "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "dev": true, + "license": "MIT", "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/theme-get": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/theme-get/-/theme-get-5.1.2.tgz", - "integrity": "sha512-afAYdRqrKfNIbVgmn/2Qet1HabxmpRnzhFwttbGr6F/mJ4RDS/Cmn+KHwHvNXangQsWw/5TfjpWV+rgcqqIcJQ==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/typography": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz", - "integrity": "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "dev": true, + "license": "MIT", "dependencies": { - "@styled-system/core": "^5.1.2" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@styled-system/variant": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz", - "integrity": "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "dev": true, + "license": "MIT", "dependencies": { - "@styled-system/core": "^5.1.2", - "@styled-system/css": "^5.1.5" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">= 6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "node_modules/@types/chai": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", - "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==", - "dev": true - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.3.tgz", - "integrity": "sha512-FQnh1ohPXJELpKhzjuDkPLR2BZCAqed+a6xV4MI/T3XzHfd2FlarfUGUdZYgqYe8oxkYn0fchHEeHfHqdZ96sg==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@types/chai": "*" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/child-process-promise": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/child-process-promise/-/child-process-promise-2.2.1.tgz", - "integrity": "sha512-xZ4kkF82YkmqPCERqV9Tj0bVQj3Tk36BqGlNgxv5XhifgDRhwAqp+of+sccksdpZRbbPsNwMOkmUqOnLgxKtGw==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/classnames": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.10.tgz", - "integrity": "sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ==", - "dev": true - }, - "node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "node_modules/@types/d3": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-6.7.5.tgz", - "integrity": "sha512-TUZ6zuT/KIvbHSv81kwAiO5gG5aTuoiLGnWR/KxHJ15Idy/xmGUXaaF5zMG+UMIsndcGlSHTmrvwRgdvZlNKaA==", - "dev": true, - "dependencies": { - "@types/d3-array": "^2", - "@types/d3-axis": "^2", - "@types/d3-brush": "^2", - "@types/d3-chord": "^2", - "@types/d3-color": "^2", - "@types/d3-contour": "^2", - "@types/d3-delaunay": "^5", - "@types/d3-dispatch": "^2", - "@types/d3-drag": "^2", - "@types/d3-dsv": "^2", - "@types/d3-ease": "^2", - "@types/d3-fetch": "^2", - "@types/d3-force": "^2", - "@types/d3-format": "^2", - "@types/d3-geo": "^2", - "@types/d3-hierarchy": "^2", - "@types/d3-interpolate": "^2", - "@types/d3-path": "^2", - "@types/d3-polygon": "^2", - "@types/d3-quadtree": "^2", - "@types/d3-random": "^2", - "@types/d3-scale": "^3", - "@types/d3-scale-chromatic": "^2", - "@types/d3-selection": "^2", - "@types/d3-shape": "^2", - "@types/d3-time": "^2", - "@types/d3-time-format": "^3", - "@types/d3-timer": "^2", - "@types/d3-transition": "^2", - "@types/d3-zoom": "^2" + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-array": { - "version": "2.12.3", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-2.12.3.tgz", - "integrity": "sha512-hN879HLPTVqZV3FQEXy7ptt083UXwguNbnxdTGzVW4y4KjX5uyNKljrQixZcSJfLyFirbpUokxpXtvR+N5+KIg==", - "dev": true - }, - "node_modules/@types/d3-axis": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-2.1.3.tgz", - "integrity": "sha512-QjXjwZ0xzyrW2ndkmkb09ErgWDEYtbLBKGui73QLMFm3woqWpxptfD5Y7vqQdybMcu7WEbjZ5q+w2w5+uh2IjA==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-selection": "^2" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-brush": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-2.1.2.tgz", - "integrity": "sha512-DnZmjdK1ycX1CMiW9r5E3xSf1tL+bp3yob1ON8bf0xB0/odfmGXeYOTafU+2SmU1F0/dvcqaO4SMjw62onOu6A==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-selection": "^2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-chord": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-2.0.3.tgz", - "integrity": "sha512-koIqSNQLPRQPXt7c55hgRF6Lr9Ps72r1+Biv55jdYR+SHJ463MsB2lp4ktzttFNmrQw/9yWthf/OmSUj5dNXKw==", - "dev": true - }, - "node_modules/@types/d3-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz", - "integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w==", - "dev": true - }, - "node_modules/@types/d3-contour": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-2.0.4.tgz", - "integrity": "sha512-WMac1xV/mXAgkgr5dUvzsBV5OrgNZDBDpJk9s3v2SadTqGgDRirKABb2Ek2H1pFlYVH4Oly9XJGnuzxKDduqWA==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-array": "^2", - "@types/geojson": "*" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@types/d3-delaunay": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-5.3.1.tgz", - "integrity": "sha512-F6itHi2DxdatHil1rJ2yEFUNhejj8+0Acd55LZ6Ggwbdoks0+DxVY2cawNj16sjCBiWvubVlh6eBMVsYRNGLew==", - "dev": true - }, - "node_modules/@types/d3-dispatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-2.0.1.tgz", - "integrity": "sha512-eT2K8uG3rXkmRiCpPn0rNrekuSLdBfV83vbTvfZliA5K7dbeaqWS/CBHtJ9SQoF8aDTsWSY4A0RU67U/HcKdJQ==", - "dev": true - }, - "node_modules/@types/d3-drag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-2.0.2.tgz", - "integrity": "sha512-m9USoFaTgVw2mmE7vLjWTApT9dMxMlql/dl3Gj503x+1a2n6K455iDWydqy2dfCpkUBCoF82yRGDgcSk9FUEyQ==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-selection": "^2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-dsv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-2.0.2.tgz", - "integrity": "sha512-T4aL2ZzaILkLGKbxssipYVRs8334PSR9FQzTGftZbc3jIPGkiXXS7qUCh8/q8UWFzxBZQ92dvR0v7+AM9wL2PA==", - "dev": true - }, - "node_modules/@types/d3-ease": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-2.0.1.tgz", - "integrity": "sha512-Af1ftZXv82ktPCk1+Vxe7f+VSfxDsQ1mwwakDl17+UzI/ii3vsDIAzaBDDSEQd2Cg9BYPTSx8wXH8rJNDuSjeg==", - "dev": true - }, - "node_modules/@types/d3-fetch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-2.0.2.tgz", - "integrity": "sha512-sllsCSWrNdSvzOJWN5RnxkmtvW9pCttONGajSxHX9FUQ9kOkGE391xlz6VDBdZxLnpwjp3I+mipbwsaCjq4m5A==", + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-dsv": "^2" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-force": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz", - "integrity": "sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ==", - "dev": true - }, - "node_modules/@types/d3-format": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-2.0.2.tgz", - "integrity": "sha512-OhQPuTeeMhD9A0Ksqo4q1S9Z1Q57O/t4tTPBxBQxRB4IERnxeoEYLPe72fA/GYpPSUrfKZVOgLHidkxwbzLdJA==", - "dev": true - }, - "node_modules/@types/d3-geo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-2.0.3.tgz", - "integrity": "sha512-kFwLEMXq1mGJ2Eho7KrOUYvLcc2YTDeKj+kTFt87JlEbRQ0rgo8ZENNb5vTYmZrJ2xL/vVM5M7yqVZGOPH2JFg==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/geojson": "*" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-graphviz": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@types/d3-graphviz/-/d3-graphviz-2.6.7.tgz", - "integrity": "sha512-dKJjD5HiFvAmC0FL/c70VB1diie8FCpyiCZfxMlf6TwYBqUyFvS4XJt6MoxjIuQTJhKDBGzrIvDOgM8gYMLSVA==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-selection": "^1", - "@types/d3-transition": "^1", - "@types/d3-zoom": "^1" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-graphviz/node_modules/@types/d3-color": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.4.2.tgz", - "integrity": "sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA==", - "dev": true - }, - "node_modules/@types/d3-graphviz/node_modules/@types/d3-interpolate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz", - "integrity": "sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-color": "^1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-graphviz/node_modules/@types/d3-selection": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.3.tgz", - "integrity": "sha512-GjKQWVZO6Sa96HiKO6R93VBE8DUW+DDkFpIMf9vpY5S78qZTlRRSNUsHr/afDpF7TvLDV7VxrUFOWW7vdIlYkA==", - "dev": true - }, - "node_modules/@types/d3-graphviz/node_modules/@types/d3-transition": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-J+a3SuF/E7wXbOSN19p8ZieQSFIm5hU2Egqtndbc54LXaAEOpLfDx4sBu/PKAKzHOdgKK1wkMhINKqNh4aoZAg==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-selection": "^1" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-graphviz/node_modules/@types/d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-3kHkL6sPiDdbfGhzlp5gIHyu3kULhtnHTTAl3UBZVtWB1PzcLL8vdmz5mTx7plLiUqOA2Y+yT2GKjt/TdA2p7Q==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-interpolate": "^1", - "@types/d3-selection": "^1" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-hierarchy": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-2.0.2.tgz", - "integrity": "sha512-6PlBRwbjUPPt0ZFq/HTUyOAdOF3p73EUYots74lHMUyAVtdFSOS/hAeNXtEIM9i7qRDntuIblXxHGUMb9MuNRA==", - "dev": true - }, - "node_modules/@types/d3-interpolate": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-2.0.2.tgz", - "integrity": "sha512-lElyqlUfIPyWG/cD475vl6msPL4aMU7eJvx1//Q177L8mdXoVPFl1djIESF2FKnc0NyaHvQlJpWwKJYwAhUoCw==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-color": "^2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-path": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.1.tgz", - "integrity": "sha512-6K8LaFlztlhZO7mwsZg7ClRsdLg3FJRzIIi6SZXDWmmSJc2x8dd2VkESbLXdk3p8cuvz71f36S0y8Zv2AxqvQw==", - "dev": true - }, - "node_modules/@types/d3-polygon": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-2.0.1.tgz", - "integrity": "sha512-X3XTIwBxlzRIWe4yaD1KsmcfItjSPLTGL04QDyP08jyHDVsnz3+NZJMwtD4vCaTAVpGSjbqS+jrBo8cO2V/xMA==", - "dev": true - }, - "node_modules/@types/d3-quadtree": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-2.0.2.tgz", - "integrity": "sha512-KgWL4jlz8QJJZX01E4HKXJ9FLU94RTuObsAYqsPp8YOAcYDmEgJIQJ+ojZcnKUAnrUb78ik8JBKWas5XZPqJnQ==", - "dev": true - }, - "node_modules/@types/d3-random": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-2.2.1.tgz", - "integrity": "sha512-5vvxn6//poNeOxt1ZwC7QU//dG9QqABjy1T7fP/xmFHY95GnaOw3yABf29hiu5SR1Oo34XcpyHFbzod+vemQjA==", - "dev": true - }, - "node_modules/@types/d3-scale": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", - "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-time": "^2" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-scale-chromatic": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-2.0.1.tgz", - "integrity": "sha512-3EuZlbPu+pvclZcb1DhlymTWT2W+lYsRKBjvkH2ojDbCWDYavifqu1vYX9WGzlPgCgcS4Alhk1+zapXbGEGylQ==", - "dev": true - }, - "node_modules/@types/d3-selection": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-2.0.1.tgz", - "integrity": "sha512-3mhtPnGE+c71rl/T5HMy+ykg7migAZ4T6gzU0HxpgBFKcasBrSnwRbYV1/UZR6o5fkpySxhWxAhd7yhjj8jL7g==", - "dev": true - }, - "node_modules/@types/d3-shape": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", - "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-path": "^2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==", - "dev": true - }, - "node_modules/@types/d3-time-format": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-3.0.1.tgz", - "integrity": "sha512-5GIimz5IqaRsdnxs4YlyTZPwAMfALu/wA4jqSiuqgdbCxUZ2WjrnwANqOtoBJQgeaUTdYNfALJO0Yb0YrDqduA==", - "dev": true - }, - "node_modules/@types/d3-timer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.1.tgz", - "integrity": "sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==", - "dev": true - }, - "node_modules/@types/d3-transition": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-2.0.2.tgz", - "integrity": "sha512-376TICEykdXOEA9uUIYpjshEkxfGwCPnkHUl8+6gphzKbf5NMnUhKT7wR59Yxrd9wtJ/rmE3SVLx6/8w4eY6Zg==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-selection": "^2" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/d3-zoom": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-2.0.3.tgz", - "integrity": "sha512-9X9uDYKk2U8w775OHj36s9Q7GkNAnJKGw6+sbkP5DpHSjELwKvTGzEK6+IISYfLpJRL/V3mRXMhgDnnJ5LkwJg==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/d3-interpolate": "^2", - "@types/d3-selection": "^2" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/del": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/del/-/del-4.0.0.tgz", - "integrity": "sha512-LDE5atstX5kKnTobWknpmGHC52DH/tp8pIVsD2SSxaOFqW3AQr0EpdzYIfkZ331xe7l9Vn9NlJsBG6viU3mjBA==", - "deprecated": "This is a stub types definition. del provides its own type definitions, so you do not need this installed.", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, + "license": "MIT", "dependencies": { - "del": "*" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/eslint": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", - "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "node_modules/@types/fs-extra": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz", - "integrity": "sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==", - "dev": true - }, - "node_modules/@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/glob-stream": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", - "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, + "license": "MIT", "dependencies": { - "@types/glob": "*", - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/google-protobuf": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.7.2.tgz", - "integrity": "sha512-ifFemzjNchFBCtHS6bZNhSZCBu7tbtOe0e8qY0z2J4HtFXmPJjm6fXSaQsTG7yhShBEZtt2oP/bkwu5k+emlkQ==", - "dev": true - }, - "node_modules/@types/gulp": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", - "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/undertaker": "*", - "@types/vinyl-fs": "*", - "chokidar": "^3.3.1" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/gulp-replace/-/gulp-replace-1.1.0.tgz", - "integrity": "sha512-nRV4sV2Kc4s1MvQ1H/ZE9tjHxIuyhOliVTVmtcDxVvgngAX9nNgaf1rey6q67J8wVIKQxihCsToHXNB+FXb5kw==", - "deprecated": "This is a stub types definition. gulp-replace provides its own type definitions, so you do not need this installed.", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, + "license": "MIT", "dependencies": { - "gulp-replace": "*" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp-sourcemaps": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/gulp-sourcemaps/-/gulp-sourcemaps-0.0.32.tgz", - "integrity": "sha512-+7BAmptW2bxyJnJcCEuie7vLoop3FwWgCdBMzyv7MYXED/HeNMeQuX7uPCkp4vfU1TTu4CYFH0IckNPvo0VePA==", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, + "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">= 8.10.0" + "node": ">=6.9.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", "dev": true, + "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, "engines": { - "node": ">=0.12.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", "dev": true, + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/gulp/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">=8.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@types/js-yaml": { - "version": "3.12.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.5.tgz", - "integrity": "sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/jszip": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.1.7.tgz", - "integrity": "sha512-+XQKNI5zpxutK05hO67huUTw/2imXCuJWjnFdU63tRES/xXSX1yVR9cv/QAdO6Rii2y2tTHbzjQ4i2apLfuK0Q==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" - }, - "node_modules/@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", - "dev": true - }, - "node_modules/@types/nanoid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/nanoid/-/nanoid-3.0.0.tgz", - "integrity": "sha512-UXitWSmXCwhDmAKe7D3hNQtQaHeHt5L8LO1CB8GF8jlYVzOv5cBWDNqiJ+oPEWrWei3i3dkZtHY/bUtd0R/uOQ==", - "deprecated": "This is a stub types definition. nanoid provides its own type definitions, so you do not need this installed.", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, + "license": "MIT", "dependencies": { - "nanoid": "*" - } - }, - "node_modules/@types/node": { - "version": "16.11.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", - "integrity": "sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ==" - }, - "node_modules/@types/node-fetch": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", - "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" - }, - "node_modules/@types/proxyquire": { - "version": "1.3.28", - "resolved": "https://registry.npmjs.org/@types/proxyquire/-/proxyquire-1.3.28.tgz", - "integrity": "sha512-SQaNzWQ2YZSr7FqAyPPiA3FYpux2Lqh3HWMZQk47x3xbMCqgC/w0dY3dw9rGqlweDDkrySQBcaScXWeR+Yb11Q==", - "dev": true - }, - "node_modules/@types/react": { - "version": "17.0.39", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.39.tgz", - "integrity": "sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", - "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", - "dev": true, - "dependencies": { - "@types/react": "*" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/sarif": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.2.tgz", - "integrity": "sha512-TELZl5h48KaB6SFZqTuaMEw1hrGuusbBcH+yfMaaHdS2pwDr3RTH4CVN0LyY1kqSiDm9PPvAMx8FJ0LUZreOCQ==", - "dev": true - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/semver": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.2.0.tgz", - "integrity": "sha512-TbB0A8ACUWZt3Y6bQPstW9QNbhNeebdgLX4T/ZfkrswAfUzRiXrgd9seol+X379Wa589Pu4UEx9Uok0D4RjRCQ==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/sinon": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.2.tgz", - "integrity": "sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg==", - "dev": true - }, - "node_modules/@types/sinon-chai": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.4.tgz", - "integrity": "sha512-xq5KOWNg70PRC7dnR2VOxgYQ6paumW+4pTZP+6uTSdhpYsAUEeeT5bw6rRHHQrZ4KyR+M5ojOR+lje6TGSpUxA==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, + "license": "MIT", "dependencies": { - "@types/chai": "*", - "@types/sinon": "*" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/stream-chain": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stream-chain/-/stream-chain-2.0.1.tgz", - "integrity": "sha512-D+Id9XpcBpampptkegH7WMsEk6fUdf9LlCIX7UhLydILsqDin4L0QT7ryJR0oycwC7OqohIzdfcMHVZ34ezNGg==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/stream-json": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@types/stream-json/-/stream-json-1.7.1.tgz", - "integrity": "sha512-BNIK/ix6iJvWvoXbDVVJhw5LNG1wie/rXcUo7jw4hBqY3FhIrg0e+RMXFN5UreKclBIStl9FDEHNSDLuuQ9/MQ==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/stream-chain": "*" - } - }, - "node_modules/@types/styled-components": { - "version": "5.1.11", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.11.tgz", - "integrity": "sha512-u8g3bSw9KUiZY+S++gh+LlURGraqBe3MC5I5dygrNjGDHWWQfsmZZRTJ9K9oHU2CqWtxChWmJkDI/gp+TZPQMw==", - "dependencies": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/styled-system": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/@types/styled-system/-/styled-system-5.1.12.tgz", - "integrity": "sha512-7x4BYKKfK9QewfsFC2x5r9BK/OrfX+JF/1P21jKPMHruawDw9gvG7bTZgTVk6YkzDO2JUlsk4i8hdiAepAhD0g==", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/styled-system__css": { - "version": "5.0.16", - "resolved": "https://registry.npmjs.org/@types/styled-system__css/-/styled-system__css-5.0.16.tgz", - "integrity": "sha512-Cji5miCIpR27m8yzH6y3cLU6106N4GVyPgUhBQ4nL7VxgoeAtRdAriKdGTnRgJzSpT3HyB7h5G//cDWOl0M1jQ==", - "dependencies": { - "csstype": "^3.0.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/styled-system__theme-get": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/styled-system__theme-get/-/styled-system__theme-get-5.0.1.tgz", - "integrity": "sha512-+i4VZ5wuYKMU8oKPmUlzc9r2RhpSNOK061Khtrr7X0sOQEcIyhUtrDusuMkp5ZR3D05Xopn3zybTPyUSQkKGAA==" - }, - "node_modules/@types/through2": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/@types/through2/-/through2-2.0.36.tgz", - "integrity": "sha512-vuifQksQHJXhV9McpVsXKuhnf3lsoX70PnhcqIAbs9dqLH2NgrGz0DzZPDY3+Yh6eaRqcE1gnCQ6QhBn1/PT5A==", + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", + "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA==", - "dev": true - }, - "node_modules/@types/undertaker": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", - "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/undertaker-registry": "*", - "async-done": "~1.3.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", - "dev": true - }, - "node_modules/@types/unzipper": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.10.3.tgz", - "integrity": "sha512-01mQdTLp3/KuBVDhP82FNBf+enzVOjJ9dGsCWa5z8fcYAFVgA9bqIQ2NmsgNFzN/DhD0PUQj4n5p7k6I9mq80g==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/vinyl-fs": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", - "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, + "license": "MIT", "dependencies": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@types/vscode": { - "version": "1.63.1", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.63.1.tgz", - "integrity": "sha512-Z+ZqjRcnGfHP86dvx/BtSwWyZPKQ/LBdmAVImY82TphyjOw2KgTKcp7Nx92oNwCTsHzlshwexAG/WiY2JuUm3g==", - "dev": true - }, - "node_modules/@types/webpack": { - "version": "5.28.0", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.0.tgz", - "integrity": "sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==", + "node_modules/@babel/preset-env": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "tapable": "^2.2.0", - "webpack": "^5" - } - }, - "node_modules/@types/webpack/node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/xml2js": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.5.tgz", - "integrity": "sha512-yohU3zMn0fkhlape1nxXG2bLEGZRc1FeqF80RoHaYXJN7uibaauXfhzhOJr1Xh36sn+/tx21QAOf07b/xYVk1w==", + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "@types/node": "*" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.0.tgz", - "integrity": "sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg==", + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.26.0", - "@typescript-eslint/scope-manager": "4.26.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.21", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/@babel/preset-react": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" }, "engines": { - "node": ">=6.0" + "node": ">=6.9.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.0.tgz", - "integrity": "sha512-TH2FO2rdDm7AWfAVRB5RSlbUhWxGVuxPNzGT7W65zVfl8H/WeXTk1e69IrcEVsBslrQSTDKQSaJD89hwKrhdkw==", + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.26.0", - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/typescript-estree": "4.26.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.9.0" }, "peerDependencies": { - "eslint": "*" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=6.9.0" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.26.0.tgz", - "integrity": "sha512-b4jekVJG9FfmjUfmM4VoOItQhPlnt6MPOBUL0AQbiTmm+SSpSdhHYlwayOm4IW9KLI/4/cRKtQCmDl1oE2OlPg==", + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "4.26.0", - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/typescript-estree": "4.26.0", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.26.0.tgz", - "integrity": "sha512-G6xB6mMo4xVxwMt5lEsNTz3x4qGDt0NSGmTBNBPJxNsrTXJSm21c6raeYroS2OwQsOyIXqKZv266L/Gln1BWqg==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/visitor-keys": "4.26.0" + "@jridgewell/trace-mapping": "0.3.9" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.26.0.tgz", - "integrity": "sha512-rADNgXl1kS/EKnDr3G+m7fB9yeJNnR9kF7xMiXL6mSIWpr3Wg5MhxyfEXy/IlYthsqwBqHOr22boFbf/u6O88A==", - "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=12" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.0.tgz", - "integrity": "sha512-GHUgahPcm9GfBuy3TzdsizCcPjKOAauG9xkz9TR8kOdssz2Iz9jRCSQm6+aVFa23d5NcSpo1GdHGSQKe0tlcbg==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/visitor-keys": "4.26.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", "engines": { - "node": ">=6.0" + "node": ">=18" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.0.tgz", - "integrity": "sha512-cw4j8lH38V1ycGBbF+aFiLUls9Z0Bw8QschP3mkth50BbWzgFS33ISIgBzUMuQ2IdahoEv/rXstr8Zhlz4B1Zg==", + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.26.0", - "eslint-visitor-keys": "^2.0.0" + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", "engines": { - "node": ">=10" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/@vscode/codicons": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.31.tgz", - "integrity": "sha512-fldpXy7pHsQAMlU1pnGI23ypQ6xLk5u6SiABMFoAmlj4f2MR0iwg7C19IB1xvAEGG+dkxOfRSrbKF8ry7QqGQA==" - }, - "node_modules/@vscode/webview-ui-toolkit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.0.0.tgz", - "integrity": "sha512-/qaHYZXqvIKkao54b7bLzyNH8BC+X4rBmTUx1MvcIiCjqRMxml0BCpqJhnDpfrCb0IOxXRO8cAy1eB5ayzQfBA==", - "dependencies": { - "@microsoft/fast-element": "^1.6.2", - "@microsoft/fast-foundation": "^2.38.0", - "@microsoft/fast-react-wrapper": "^0.1.18" + "node": ">=18" }, "peerDependencies": { - "react": ">=16.9.0" + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@vscode/webview-ui-toolkit/node_modules/@microsoft/fast-react-wrapper": { - "version": "0.1.48", - "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz", - "integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==", - "dependencies": { - "@microsoft/fast-element": "^1.9.0", - "@microsoft/fast-foundation": "^2.41.1" + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz", + "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" }, "peerDependencies": { - "react": ">=16.9.0" + "postcss": "^8.4" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "node_modules/@emnapi/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.6.0.tgz", + "integrity": "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "node_modules/@emnapi/runtime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", + "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "tslib": "^2.4.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "tslib": "^2.4.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", "dependencies": { - "@xtuc/long": "4.2.2" + "@emotion/memoize": "^0.8.1" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } + "license": "MIT" }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@webpack-cli/configtest": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz", - "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@webpack-cli/info": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.3.tgz", - "integrity": "sha512-lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@webpack-cli/serve": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz", - "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], "dev": true, - "bin": { - "acorn": "bin/acorn" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.4.0" + "node": ">=18" } }, - "node_modules/acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.4.0" + "node": ">=18" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "debug": "4" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 6.0.0" + "node": ">=18" } }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=18" } }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "type-fest": "^0.11.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "buffer-equal": "^1.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/applicationinsights": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.8.7.tgz", - "integrity": "sha512-+HENzPBdSjnWL9mc+9o+j9pEaVNI4WsH5RNvfmRLfwQYvbJumcBi4S5bUzclug5KCcFP0S4bYJOmm9MV3kv2GA==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "cls-hooked": "^4.2.2", - "continuation-local-storage": "^3.2.1", - "diagnostic-channel": "0.3.1", - "diagnostic-channel-publishers": "0.4.1" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/archiver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", - "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 10" + "node": ">=18" } }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 6" + "node": ">=18" } }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 6" + "node": ">=18" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, + "license": "MIT", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, - "dependencies": { - "make-iterator": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/@eslint/compat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.3.1.tgz", + "integrity": "sha512-k8MHony59I5EPic6EQTCNOuPoVBnoYXkP+20xvwFjN7t0qI3ImyvyBgg+hIVPwC8JaxVjjUZld+cLfBLFDLucg==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.40 || 9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "make-iterator": "^1.0.0" + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "node_modules/@eslint/plugin-kit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", + "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/array-sort/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/@faker-js/faker": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-10.3.0.tgz", + "integrity": "sha512-It0Sne6P3szg7JIi6CgKbvTZoMjxBZhcv91ZrqrNuaZQfB5WoqYYbzCUOq89YR+VY8juY9M1vDWmDDa2TzfXCw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0", + "npm": ">=10" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" + "node_modules/@floating-ui/react": { + "version": "0.27.19", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.19.tgz", + "integrity": "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.8", + "@floating-ui/utils": "^0.2.11", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-dom": ">=17.0.0" } }, - "node_modules/assign-symbols": { + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react/node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@github/browserslist-config": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "resolved": "https://registry.npmjs.org/@github/browserslist-config/-/browserslist-config-1.0.0.tgz", + "integrity": "sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==", + "dev": true + }, + "node_modules/@github/markdownlint-github": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@github/markdownlint-github/-/markdownlint-github-0.8.0.tgz", + "integrity": "sha512-079sWT/2Z8EI5v02GTtSfvG06E1m8Q6xjYoQiGdPg6rSKVntpfBw6in79fGs+vc9cYihBHl73vkOoDcyH/Jl8g==", "dev": true, + "license": "ISC", + "dependencies": { + "lodash-es": "^4.17.15" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "node_modules/@gulpjs/messages": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", + "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "node_modules/@gulpjs/to-absolute-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", + "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", "dev": true, + "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "is-negated-glob": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "node_modules/@hpcc-js/wasm": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-2.31.0.tgz", + "integrity": "sha512-4IXM40TAvfYlgnT5RIsNdZmaKvJgKwHdS9xcP/VbgMM+E0dp47guoz5rJHjkmlXPDr/FQFokLdewCWu6ulNKDQ==", + "license": "Apache-2.0", "dependencies": { - "stack-chain": "^1.3.7" + "yargs": "18.0.0" }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3" + "bin": { + "dot-wasm": "deprecated/dot-wasm.js" } }, - "node_modules/async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, + "node_modules/@hpcc-js/wasm-graphviz": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.21.1.tgz", + "integrity": "sha512-PHwgQEbfSPblh/cV422FRNU1mD3ISErOmGP8knX+TNWeUCfrbSV4dvPJnN36D+Cg6Dm4vjtnhlt3J8cUkbAS3Q==", + "license": "Apache-2.0" + }, + "node_modules/@hpcc-js/wasm/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { - "node": "<=0.11.8 || >0.11.10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/async-listener/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/@hpcc-js/wasm/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, + "node_modules/@hpcc-js/wasm/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "license": "ISC", "dependencies": { - "async-done": "^1.2.2" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=20" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "node_modules/@hpcc-js/wasm/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" + "node_modules/@hpcc-js/wasm/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 4.5.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/azure-devops-node-api": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz", - "integrity": "sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg==", - "dev": true, + "node_modules/@hpcc-js/wasm/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", "dependencies": { - "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/babel-plugin-styled-components": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz", - "integrity": "sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw==", + "node_modules/@hpcc-js/wasm/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, - "peerDependencies": { - "styled-components": ">= 2" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, + "node_modules/@hpcc-js/wasm/node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "license": "MIT", "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">= 0.10" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, + "node_modules/@hpcc-js/wasm/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=18.18.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "kind-of": "^6.0.0" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18.18.0" } }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "node_modules/before-after-hook": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz", - "integrity": "sha512-/6FKxSTWoJdbsLDF8tdIjaRiFXiE6UHsEHE3OPI/cwPURCVi1ukP0gmLn7XWEiFk5TcwQjjY5PWsU+j+tgXgmw==" - }, - "node_modules/big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", - "engines": { - "node": ">=0.6" + "node": ">=10.10.0" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "engines": { - "node": "*" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "BSD-3-Clause" }, - "node_modules/binaryextensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.8" + "node": ">=18.18" }, "funding": { - "url": "https://bevry.me/fund" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, + "node_modules/@inquirer/confirm": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.0.tgz", + "integrity": "sha512-osaBbIMEqVFjTX5exoqPXs6PilWQdjaLhGtMDXMXg/yxkHXNq43GlxGyTA35lK2HpzUgDN+Cjh/2AmqCN0QJpw==", + "license": "MIT", "dependencies": { - "file-uri-to-path": "1.0.0" + "@inquirer/core": "^10.1.1", + "@inquirer/type": "^3.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, - "node_modules/bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "node_modules/@inquirer/core": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.1.tgz", + "integrity": "sha512-rmZVXy9iZvO3ZStEe/ayuuwIJ23LSF13aPMlLMTQARX6lGUBDHGV8UB5i9MRrfy0+mZwt5/9bdy8llszSD3NQA==", + "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "@inquirer/figures": "^1.0.8", + "@inquirer/type": "^3.0.1", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/@inquirer/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@inquirer/core/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "node_modules/@inquirer/figures": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.8.tgz", + "integrity": "sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==", + "license": "MIT", + "engines": { + "node": ">=18" + } }, - "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" - }, + "node_modules/@inquirer/type": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.1.tgz", + "integrity": "sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==", + "license": "MIT", "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "peerDependencies": { + "@types/node": ">=18" } }, - "node_modules/buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.4.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", - "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "engines": { - "node": ">=0.2.0" + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { "node": ">=6" - } - }, - "node_modules/camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true, + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "dependencies": { - "check-error": "^1.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, "dependencies": { - "traverse": ">=0.3.0 <0.4" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + "node": ">=8" } }, - "node_modules/cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "dependencies": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio/node_modules/tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", - "dev": true + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } }, - "node_modules/child-process-promise": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz", - "integrity": "sha1-RzChHvYQ+tRQuPIjx50x172tgHQ=", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "cross-spawn": "^4.0.2", - "node-version": "^1.0.0", - "promise-polyfill": "^6.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "is-extglob": "^2.1.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "tslib": "^1.9.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=8" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, + "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/@jest/environment-jsdom-abstract": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", + "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cli-truncate/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cli-truncate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/@jest/environment-jsdom-abstract/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/@jest/environment-jsdom-abstract/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/@jest/environment/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, + "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/@jest/environment/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, "engines": { - "node": ">=0.8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "node_modules/@jest/environment/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "engines": { - "node": ">= 0.10" + "license": "MIT" + }, + "node_modules/@jest/environment/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/@jest/environment/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "node_modules/@jest/environment/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "dependencies": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cls-hooked/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/@jest/environment/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "node_modules/@jest/environment/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "node_modules/@jest/environment/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/@jest/environment/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/@jest/environment/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "bin": { - "color-support": "bin.js" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/color2k": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/color2k/-/color2k-1.2.4.tgz", - "integrity": "sha512-DiwdBwc0BryPFFXoCrW8XQGXl2rEtMToODybxZjKnN5IJXt/tV/FsN02pCK/b7KcWvJEioz3c74lQSmayFvS4Q==" - }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@jest/environment/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">= 0.8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "node_modules/@jest/environment/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/commandpost": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz", - "integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==", - "dev": true - }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "node_modules/@jest/environment/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, - "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "node_modules/@jest/environment/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "engines": [ - "node >= 0.8" - ], "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/@jest/fake-timers/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/copy-props/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/@jest/globals/node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/core-js-pure": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/@jest/globals/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cosmiconfig/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">=0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/css-loader": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.1.0.tgz", - "integrity": "sha512-MuL8WsF/KSrHCBCYaozBKlx+r7vIfUaDTEreo7wR7Vv3J6N0z6fqWjRk3e/6wjneitXN1r/Y9FTK1psYNOBdJQ==", + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.17", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.0", - "schema-utils": "^2.0.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">= 8.9.0" + "node": ">=10" } }, - "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=8" } }, - "node_modules/css-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", "dev": true, - "engines": { - "node": ">= 6" + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/css/node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "license": "MIT" + }, + "node_modules/@jest/snapshot-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "node_modules/@jest/snapshot-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/d3": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-6.7.0.tgz", - "integrity": "sha512-hNHRhe+yCDLUG6Q2LwvR/WdNFPOJQ5VWqsJcwIYVeI401+d2/rrCjxSXkiAdIlpx7/73eApFB4Olsmh3YN7a6g==", - "dependencies": { - "d3-array": "2", - "d3-axis": "2", - "d3-brush": "2", - "d3-chord": "2", - "d3-color": "2", - "d3-contour": "2", - "d3-delaunay": "5", - "d3-dispatch": "2", - "d3-drag": "2", - "d3-dsv": "2", - "d3-ease": "2", - "d3-fetch": "2", - "d3-force": "2", - "d3-format": "2", - "d3-geo": "2", - "d3-hierarchy": "2", - "d3-interpolate": "2", - "d3-path": "2", - "d3-polygon": "2", - "d3-quadtree": "2", - "d3-random": "2", - "d3-scale": "3", - "d3-scale-chromatic": "2", - "d3-selection": "2", - "d3-shape": "2", - "d3-time": "2", - "d3-time-format": "3", - "d3-timer": "2", - "d3-transition": "2", - "d3-zoom": "2" + "node_modules/@jest/snapshot-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "node_modules/@jest/snapshot-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "internmap": "^1.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/d3-axis": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz", - "integrity": "sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw==" - }, - "node_modules/d3-brush": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", - "integrity": "sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/d3-chord": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-2.0.0.tgz", - "integrity": "sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, "dependencies": { - "d3-path": "1 - 2" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" - }, - "node_modules/d3-contour": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-2.0.0.tgz", - "integrity": "sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "dependencies": { - "d3-array": "2" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, "dependencies": { - "delaunator": "4" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "node_modules/d3-drag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", - "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-selection": "2" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "commander": "2", - "iconv-lite": "0.4", - "rw": "1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "csv2json": "bin/dsv2json", - "csv2tsv": "bin/dsv2dsv", - "dsv2dsv": "bin/dsv2dsv", - "dsv2json": "bin/dsv2json", - "json2csv": "bin/json2dsv", - "json2dsv": "bin/json2dsv", - "json2tsv": "bin/json2dsv", - "tsv2csv": "bin/dsv2dsv", - "tsv2json": "bin/dsv2json" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/d3-fetch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-2.0.0.tgz", - "integrity": "sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw==", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "d3-dsv": "1 - 2" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" - }, - "node_modules/d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "d3-array": "^2.5.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/d3-graphviz": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-2.6.1.tgz", - "integrity": "sha512-878AFSagQyr5tTOrM7YiVYeUC2/NoFcOB3/oew+LAML0xekyJSw9j3WOCUMBsc95KYe9XBYZ+SKKuObVya1tJQ==", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "d3-dispatch": "^1.0.3", - "d3-format": "^1.2.0", - "d3-interpolate": "^1.1.5", - "d3-path": "^1.0.5", - "d3-selection": "^1.1.0", - "d3-timer": "^1.0.6", - "d3-transition": "^1.1.1", - "d3-zoom": "^1.5.0", - "viz.js": "^1.8.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/d3-graphviz/node_modules/d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - }, - "node_modules/d3-graphviz/node_modules/d3-dispatch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/d3-graphviz/node_modules/d3-drag": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "d3-dispatch": "1", - "d3-selection": "1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/d3-graphviz/node_modules/d3-ease": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" - }, - "node_modules/d3-graphviz/node_modules/d3-format": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" - }, - "node_modules/d3-graphviz/node_modules/d3-interpolate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.7.0.tgz", + "integrity": "sha512-qvsTEwEFefhdirGOPnu9Wp6ChfIwy2dBCRuETU3uE+4cC+PFoxMSiiEhxk4lOluA34eARHA0OxqsEUYDqRMgeQ==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1" + "glob": "^13.0.1", + "react-docgen-typescript": "^2.2.2" + }, + "peerDependencies": { + "typescript": ">= 4.3.x", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/d3-graphviz/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" - }, - "node_modules/d3-graphviz/node_modules/d3-selection": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" - }, - "node_modules/d3-graphviz/node_modules/d3-timer": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" - }, - "node_modules/d3-graphviz/node_modules/d3-transition": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", - "dependencies": { - "d3-color": "1", - "d3-dispatch": "1", - "d3-ease": "1", - "d3-interpolate": "1", - "d3-selection": "^1.1.0", - "d3-timer": "1" + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/d3-graphviz/node_modules/d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" - }, - "node_modules/d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "d3-color": "1 - 2" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" - }, - "node_modules/d3-polygon": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", - "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==" - }, - "node_modules/d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" - }, - "node_modules/d3-random": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", - "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" - }, - "node_modules/d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/d3-scale-chromatic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz", - "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1 - 2", - "d3-interpolate": "1 - 2" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" - }, - "node_modules/d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-path": "1 - 2" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", - "dependencies": { - "d3-array": "2" + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-time": "1 - 2" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "license": "BSD-3-Clause" }, - "node_modules/d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", - "dependencies": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" - }, + "node_modules/@lit/react": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.7.tgz", + "integrity": "sha512-cencnwwLXQKiKxjfFzSgZRngcWJzUDZi/04E0fSaF86wZgchMdvTyu+lE36DrUfvuus3bH8+xLPrhM1cTjwpzw==", + "license": "BSD-3-Clause", "peerDependencies": { - "d3-selection": "2" + "@types/react": "17 || 18 || 19" } }, - "node_modules/d3-zoom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", - "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "license": "BSD-3-Clause", "dependencies": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "@lit-labs/ssr-dom-shim": "^1.2.0" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" } }, - "node_modules/debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "dependencies": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - } + "node_modules/@microsoft/applicationinsights-web-snippet": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz", + "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==", + "dev": true }, - "node_modules/debug-fabulous/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "node_modules/@microsoft/eslint-formatter-sarif": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@microsoft/eslint-formatter-sarif/-/eslint-formatter-sarif-3.1.0.tgz", + "integrity": "sha512-/mn4UXziHzGXnKCg+r8HGgPy+w4RzpgdoqFuqaKOqUVBT5x2CygGefIrO4SusaY7t0C4gyIWMNu6YQT6Jw64Cw==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "eslint": "^8.9.0", + "jschardet": "latest", + "lodash": "^4.17.14", + "utf8": "^3.0.0" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/debug-fabulous/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "type-detect": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^5.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/default-compare/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">= 0.10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "object-keys": "^1.0.12" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/del/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "node_modules/@microsoft/eslint-formatter-sarif/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/diagnostic-channel": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.3.1.tgz", - "integrity": "sha512-6eb9YRrimz8oTr5+JDzGmSYnXy5V7YnK5y/hd8AUDK1MssHjQKm9LlD6NSrHx4vMDF3+e/spI2hmWTviElgWZA==", - "dev": true, + "node_modules/@mswjs/interceptors": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.40.0.tgz", + "integrity": "sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==", + "license": "MIT", "dependencies": { - "semver": "^5.3.0" + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" } }, - "node_modules/diagnostic-channel-publishers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.4.1.tgz", - "integrity": "sha512-NpZ7IOVUfea/kAx4+ub4NIYZyRCSymjXM5BZxnThs3ul9gAKqjm7J8QDDQW3Ecuo2XxjNLoWLeKmrPUWKNZaYw==", - "dev": true - }, - "node_modules/diagnostic-channel/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, - "bin": { - "semver": "bin/semver" + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", "dev": true, + "dependencies": { + "easy-stack": "1.0.1" + }, "engines": { - "node": ">=0.3.1" + "node": ">=1.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 8" } }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, + "node_modules/@octokit/auth-token": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/core": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", + "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">= 20" } }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] + "node_modules/@octokit/core/node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" }, - "node_modules/domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", - "dev": true, + "node_modules/@octokit/core/node_modules/@octokit/request-error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.2.tgz", + "integrity": "sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==", + "license": "MIT", "dependencies": { - "domelementtype": "^2.2.0" + "@octokit/types": "^16.0.0" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">= 20" } }, - "node_modules/domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", - "dev": true, + "node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "@octokit/openapi-types": "^27.0.0" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "node_modules/@octokit/endpoint": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", + "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", + "license": "MIT", "dependencies": { - "readable-stream": "^2.0.2" + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" } }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, + "node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" + }, + "node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "@octokit/openapi-types": "^27.0.0" } }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, + "node_modules/@octokit/graphql": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" } }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, + "node_modules/@octokit/graphql/node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" + }, + "node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" + "@octokit/openapi-types": "^27.0.0" } }, - "node_modules/editorconfig/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "node_modules/@octokit/openapi-types": { + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz", + "integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==", + "license": "MIT" }, - "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node_modules/@octokit/plugin-paginate-rest": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^16.0.0" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" } }, - "node_modules/electron-to-chromium": { - "version": "1.3.775", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.775.tgz", - "integrity": "sha512-EGuiJW4yBPOTj2NtWGZcX93ZE8IGj33HJAx4d3ouE2zOfW2trbWU+t1e0yzLr1qQIw81++txbM3BH52QwSRE6Q==", - "dev": true - }, - "node_modules/emitter-component": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", - "integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=" + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" }, - "node_modules/emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", "dependencies": { - "shimmer": "^1.2.0" + "@octokit/openapi-types": "^27.0.0" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/@octokit/plugin-request-log": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", + "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", + "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^16.0.0" + }, "engines": { - "node": ">= 4" + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", "dependencies": { - "once": "^1.4.0" + "@octokit/openapi-types": "^27.0.0" } }, - "node_modules/enhanced-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz", - "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==", - "dev": true, + "node_modules/@octokit/plugin-retry": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.2.0.tgz", + "integrity": "sha512-psMbEYb/Fh+V+ZaFo8J16QiFz4sVTv3GntCSU+hYqzHiMdc3P+hhHLVv+dJt0PGIPAGoIA5u+J2DCJdK6lEPsQ==", + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "@octokit/request-error": "^6.1.7", + "@octokit/types": "^13.6.2", + "bottleneck": "^2.15.3" }, "engines": { - "node": ">=6.9.0" + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=6" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, + "node_modules/@octokit/plugin-throttling": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.6.0.tgz", + "integrity": "sha512-zn7m1N3vpJDaVzLqjCRdJ0cRzNiekHEWPi8Ww9xyPNrDt5PStHvVE0eR8wy4RSU8Eg7YO8MHyvn6sv25EGVhhg==", + "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" + "@octokit/types": "^13.7.0", + "bottleneck": "^2.15.3" }, "engines": { - "node": ">=8.6" + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^6.1.3" } }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node_modules/@octokit/request": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.6.tgz", + "integrity": "sha512-FO+UgZCUu+pPnZAR+iKdUt64kPE7QW7ciqpldaMXaNzixz5Jld8dJ31LAUewk0cfSRkNSRKyqG438ba9c/qDlQ==", + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^11.0.2", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "fast-content-type-parse": "^3.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" } }, - "node_modules/envinfo": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", - "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" + "node_modules/@octokit/request-error": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.6.2" }, "engines": { - "node": ">=4" + "node": ">= 18" } }, - "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } + "node_modules/@octokit/request/node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, + "node_modules/@octokit/request/node_modules/@octokit/request-error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.2.tgz", + "integrity": "sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==", + "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "@octokit/types": "^16.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 20" } }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "node_modules/@octokit/request/node_modules/@octokit/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^27.0.0" + } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, + "node_modules/@octokit/rest": { + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.1.tgz", + "integrity": "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "@octokit/core": "^7.0.6", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-request-log": "^6.0.0", + "@octokit/plugin-rest-endpoint-methods": "^17.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 20" } }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, + "node_modules/@octokit/types": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz", + "integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==", + "license": "MIT", "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "@octokit/openapi-types": "^23.0.1" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "license": "MIT" }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "license": "MIT", "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "license": "MIT" }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/@opentelemetry/api": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz", + "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/@opentelemetry/core": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.19.0.tgz", + "integrity": "sha512-w42AukJh3TP8R0IZZOVJVM/kMWu8g+lm4LzT70WtuKqhwq7KVhcDzZZuZinWZa6TtQCl7Smt2wolEYzpHabOgw==", + "dev": true, + "dependencies": { + "@opentelemetry/semantic-conventions": "1.19.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.8.0" } }, - "node_modules/eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "node_modules/@opentelemetry/instrumentation": { + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", + "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.4.2", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.1", + "shimmer": "^1.2.1" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/eslint-plugin-react": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", - "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "node_modules/@opentelemetry/resources": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.19.0.tgz", + "integrity": "sha512-RgxvKuuMOf7nctOeOvpDjt2BpZvZGr9Y0vf7eGtY5XYZPkh2p7e2qub1S2IArdBMf9kEbz0SfycqCviOu9isqg==", "dev": true, "dependencies": { - "array-includes": "^3.1.1", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "@opentelemetry/core": "1.19.0", + "@opentelemetry/semantic-conventions": "1.19.0" }, "engines": { - "node": ">=4" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.8.0" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.19.0.tgz", + "integrity": "sha512-+IRvUm+huJn2KqfFW3yW/cjvRwJ8Q7FzYHoUNx5Fr0Lws0LxjMJG1uVB8HDpLwm7mg5XXH2M5MF+0jj5cM8BpQ==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "@opentelemetry/core": "1.19.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/semantic-conventions": "1.19.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.8.0" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.19.0.tgz", + "integrity": "sha512-14jRpC8f5c0gPSwoZ7SbEJni1PqI+AhAE8m1bMz6v+RPM4OlP1PT2UHBJj5Qh/ALLPjhVU/aZUK3YyjTUqqQVg==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=14" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=4.8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], "dev": true, - "bin": { - "semver": "bin/semver" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "ms": "^2.1.1" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/eslint/node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.5.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node": ">= 10.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" + "node": ">= 10.0.0" }, - "engines": { - "node": ">=4.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "node": ">=0.10" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, - "engines": { - "node": ">=0.8.x" - } + "license": "MIT", + "optional": true }, - "node_modules/execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "node_modules/@phenomnomnominal/tsquery": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", + "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "esquery": "^1.4.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" } }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, + "optional": true, "engines": { - "node": ">= 8" + "node": ">=14" } }, - "node_modules/execa/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" + "funding": { + "url": "https://opencollective.com/pkgr" } }, - "node_modules/execa/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@playwright/test": { + "version": "1.58.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", + "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "isexe": "^2.0.0" + "playwright": "1.58.2" }, "bin": { - "node-which": "bin/node-which" + "playwright": "cli.js" }, "engines": { - "node": ">= 8" + "node": ">=18" } }, - "node_modules/exenv-es6": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz", - "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==" - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "type": "^2.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/ext/node_modules/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" + "type-detect": "4.0.8" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/@storybook/addon-a11y": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-10.3.5.tgz", + "integrity": "sha512-5k6lpgfIeLxvNhE8v3wEzdiu73ONKjF4gmH1AHvfqYd8kIVzQJai0KCDxgvqNncXHQhIWkaf1fg6+9hKaYJyaw==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "@storybook/global": "^5.0.0", + "axe-core": "^4.2.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^10.3.5" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/@storybook/addon-docs": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.3.5.tgz", + "integrity": "sha512-WuHbxia/o5TX4Rg/IFD0641K5qId/Nk0dxhmAUNoFs5L0+yfZUwh65XOBbzXqrkYmYmcVID4v7cgDRmzstQNkA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "@mdx-js/react": "^3.0.0", + "@storybook/csf-plugin": "10.3.5", + "@storybook/icons": "^2.0.1", + "@storybook/react-dom-shim": "10.3.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^10.3.5" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/@storybook/addon-links": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.3.5.tgz", + "integrity": "sha512-Xe2wCGZ+hpZ0cDqAIBHk+kPc8nODNbu585ghd5bLrlYJMDVXoNM/fIlkrLgjIDVbfpgeJLUEg7vldJrn+FyOLw==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "@storybook/global": "^5.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "storybook": "^10.3.5" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } } }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/@storybook/builder-vite": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.3.5.tgz", + "integrity": "sha512-i4KwCOKbhtlbQIbhm53+Kk7bMnxa0cwTn1pxmtA/x5wm1Qu7FrrBQV0V0DNjkUqzcSKo1CjspASJV/HlY0zYlw==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "@storybook/csf-plugin": "10.3.5", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^10.3.5", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/@storybook/csf": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", + "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" + "type-fest": "^2.19.0" } }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "node_modules/@storybook/csf-plugin": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.3.5.tgz", + "integrity": "sha512-qlEzNKxOjq86pvrbuMwiGD/bylnsXk1dg7ve0j77YFjEEchqtl7qTlrXvFdNaLA89GhW6D/EV6eOCu/eobPDgw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "unplugin": "^2.3.5" }, - "engines": { - "node": ">= 0.10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "esbuild": "*", + "rollup": "*", + "storybook": "^10.3.5", + "vite": "*", + "webpack": "*" + }, + "peerDependenciesMeta": { + "esbuild": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "node_modules/@storybook/icons": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-2.0.1.tgz", + "integrity": "sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@storybook/react": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-10.3.5.tgz", + "integrity": "sha512-tpLTLaVGoA6fLK3ReyGzZUricq7lyPaV2hLPpj5wqdXLV/LpRtAHClUpNoPDYSBjlnSjL81hMZijbkGC3mA+gw==", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "@storybook/global": "^5.0.0", + "@storybook/react-dom-shim": "10.3.5", + "react-docgen": "^8.0.2", + "react-docgen-typescript": "^2.2.2" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "storybook": "^10.3.5", + "typescript": ">= 4.9.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@storybook/react-dom-shim": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.3.5.tgz", + "integrity": "sha512-Gw8R7XZm0zSUH0XAuxlQJhmizsLzyD6x00KOlP6l7oW9eQHXGfxg3seNDG3WrSAcW07iP1/P422kuiriQlOv7g==", "dev": true, - "dependencies": { - "fill-range": "^7.0.1" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "storybook": "^10.3.5" } }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@storybook/react-vite": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-10.3.5.tgz", + "integrity": "sha512-UB5sJHeh26bfd8sNMx2YPGYRYmErIdTRaLOT28m4bykQIa1l9IgVktsYg/geW7KsJU0lXd3oTbnUjLD+enpi3w==", "dev": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "@joshwooding/vite-plugin-react-docgen-typescript": "^0.7.0", + "@rollup/pluginutils": "^5.0.2", + "@storybook/builder-vite": "10.3.5", + "@storybook/react": "10.3.5", + "empathic": "^2.0.0", + "magic-string": "^0.30.0", + "react-docgen": "^8.0.0", + "resolve": "^1.22.8", + "tsconfig-paths": "^4.2.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "storybook": "^10.3.5", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/fast-glob/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/@storybook/react-vite/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=4" } }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/@storybook/react-vite/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=6" } }, - "node_modules/fast-glob/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=8.0" + "node": ">=18" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", "dev": true, + "license": "MIT", "dependencies": { - "reusify": "^1.0.4" + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", "dev": true, + "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "@babel/runtime": "^7.12.5" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "dev": true, - "dependencies": { - "flat-cache": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true }, - "node_modules/fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "tslib": "^2.4.0" } }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/types": "^7.0.0" } }, - "node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, + "license": "MIT", "dependencies": { - "semver-regex": "^3.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@babel/types": "^7.28.2" } }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, + "license": "MIT", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "node_modules/@types/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", "dev": true, + "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "@types/node": "*" } }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true, - "engines": { - "node": ">= 0.10" + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "dev": true + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "dev": true, - "bin": { - "flat": "cli.js" + "dependencies": { + "@types/d3-selection": "*" } }, - "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "dev": true, "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" + "@types/d3-selection": "*" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "dev": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", "dev": true }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "dev": true + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "@types/d3-selection": "*" } }, - "node_modules/focus-visible": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", - "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/d3-dsv": "*" } }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "node_modules/@types/d3-force": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz", + "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==", + "dev": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "dev": true, "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@types/geojson": "*" } }, - "node_modules/form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "node_modules/@types/d3-graphviz": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/@types/d3-graphviz/-/d3-graphviz-2.6.10.tgz", + "integrity": "sha512-YsCRqNqS8QLlsKtF0FGIz42Z47B0sBIxMMn7L4ZdqZcrdk4foJOEPwwMH50Qe2PuZmSSZcWbdgUnj5W68xK0Qw==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "@types/d3-selection": "^1", + "@types/d3-transition": "^1", + "@types/d3-zoom": "^1" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "node_modules/@types/d3-graphviz/node_modules/@types/d3-color": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.4.5.tgz", + "integrity": "sha512-5sNP3DmtSnSozxcjqmzQKsDOuVJXZkceo1KJScDc1982kk/TS9mTPc6lpli1gTu1MIBF1YWutpHpjucNWcIj5g==", + "dev": true + }, + "node_modules/@types/d3-graphviz/node_modules/@types/d3-interpolate": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.4.5.tgz", + "integrity": "sha512-k9L18hXXv7OvK4PqW1kSFYIzasGOvfhPUWmHFkoZ8/ci99EAmY4HoF6zMefrHl0SGV7XYc7Qq2MNh8dK3edg5A==", "dev": true, "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" + "@types/d3-color": "^1" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "node_modules/@types/d3-graphviz/node_modules/@types/d3-selection": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.6.tgz", + "integrity": "sha512-0MhJ/LzJe6/vQVxiYJnvNq5CD/MF6Qy0dLp4BEQ6Dz8oOaB0EMXfx1GGeBFSW+3VzgjaUrxK6uECDQj9VLa/Mg==", + "dev": true }, - "node_modules/fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "node_modules/@types/d3-graphviz/node_modules/@types/d3-transition": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.3.5.tgz", + "integrity": "sha512-gVj9AXXkoj0yKr1jsPJFkKoYTEmSdaYh8W7XBeRIhcspFX9b3MSwLxTerVHeEPXer9kYLvZfAINk8HcjWhwZSQ==", + "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "@types/d3-selection": "^1" } }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "node_modules/@types/d3-graphviz/node_modules/@types/d3-zoom": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.8.7.tgz", + "integrity": "sha512-HJWci3jXwFIuFKDqGn5PmuwrhZvuFdrnUmtSKCLXFAWyf2lAIUKMKh1/lHOkWBl/f4KVupGricJiqkQy+cVTog==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" + "@types/d3-interpolate": "^1", + "@types/d3-selection": "^1" } }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/@types/d3-hierarchy": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.6.tgz", + "integrity": "sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==", + "dev": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "dev": true, "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "@types/d3-color": "*" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "node_modules/@types/d3-path": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.2.tgz", + "integrity": "sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==", + "dev": true }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" + "@types/d3-time": "*" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "dev": true + }, + "node_modules/@types/d3-selection": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", + "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", + "dev": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" + "@types/d3-path": "*" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", "dev": true }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", "dev": true }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "node_modules/@types/d3-transition": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", + "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", "dev": true, "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "@types/d3-selection": "*" } }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, + "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/ms": "*" } }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/doctrine": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "node_modules/@types/fs-extra": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", "dev": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/jsonfile": "*", + "@types/node": "*" } }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/@types/geojson": { + "version": "7946.0.13", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz", + "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==", + "dev": true + }, + "node_modules/@types/glob-stream": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-8.0.2.tgz", + "integrity": "sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*", + "@types/picomatch": "*", + "@types/streamx": "*" } }, - "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "node_modules/@types/gulp": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.18.tgz", + "integrity": "sha512-IqkYa4sXkwH2uwqO2aXYOoAisJpLX13BPaS6lmEAoG4BbgOay3qqGQFsT9LMSSQVMQlEKU7wTUW0sPV46V0olw==", "dev": true, - "engines": { - "node": "*" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/undertaker": ">=1.2.6", + "@types/vinyl-fs": "*", + "chokidar": "^3.3.1" } }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, - "node_modules/get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/get-stream/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "@types/istanbul-lib-report": "*" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" } }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/@types/jest/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@jest/get-type": "30.1.0" }, "engines": { - "node": "*" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">= 6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/glob-promise": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", - "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/glob": "^7.1.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "type": "individual", - "url": "https://github.com/sponsors/ahmadnassri" - }, - "peerDependencies": { - "glob": "^7.1.6" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "node_modules/@types/jest/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/@types/jest/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "node_modules/@types/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, + "license": "MIT", "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": ">= 0.10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, + "license": "MIT", "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/@types/jest/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.8.1" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "node_modules/@types/jest/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "sparkles": "^1.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">= 0.10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.7", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/gulp-replace": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", - "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "^14.14.41", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/gulp-replace/node_modules/@types/node": { - "version": "14.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", - "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/gulp-sourcemaps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", - "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/jsonfile": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", "dev": true, "dependencies": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">= 6" + "@types/node": "*" } }, - "node_modules/gulp-sourcemaps/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "license": "MIT" }, - "node_modules/gulp-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/gulp-sourcemaps/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } + "license": "MIT" }, - "node_modules/gulp-typescript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", - "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==", + "node_modules/@types/node": { + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^3.0.5", - "plugin-error": "^1.0.1", - "source-map": "^0.7.3", - "through2": "^3.0.0", - "vinyl": "^2.1.0", - "vinyl-fs": "^3.0.3" - }, - "engines": { - "node": ">= 8" + "undici-types": "~6.21.0" } }, - "node_modules/gulp-typescript/node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true }, - "node_modules/gulp-typescript/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "node_modules/@types/picomatch": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-2.3.3.tgz", + "integrity": "sha512-Yll76ZHikRFCyz/pffKGjrCwe/le2CDwOP5F210KQo27kpRE46U2rDnzikNlVn6/ezH3Mhn46bJMTfeVTtcYMg==", + "dev": true + }, + "node_modules/@types/postcss-modules-local-by-default": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.2.tgz", + "integrity": "sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "postcss": "^8.0.0" } }, - "node_modules/gulp/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "node_modules/@types/postcss-modules-scope": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.4.tgz", + "integrity": "sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "postcss": "^8.0.0" } }, - "node_modules/gulp/node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "node_modules/@types/proper-lockfile": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/proper-lockfile/-/proper-lockfile-4.1.4.tgz", + "integrity": "sha512-uo2ABllncSqg9F1D4nugVl9v93RmjxF6LJzQLMLDdPaXCUIDPeOJ21Gbqi43xNKzBi/WQ0Q0dICqufzQbMjipQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" + "@types/retry": "*" } }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "node_modules/@types/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.3.tgz", + "integrity": "sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==", "dev": true, + "license": "MIT", "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" + "csstype": "^3.0.2" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } + "node_modules/@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true, + "license": "MIT" }, - "node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "node_modules/@types/retry": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.5.tgz", + "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", "dev": true, - "engines": { - "node": ">= 0.4" - } + "license": "MIT" }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "node_modules/@types/sarif": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", + "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", "dev": true }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/shimmer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.5.tgz", + "integrity": "sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "license": "MIT" + }, + "node_modules/@types/stream-chain": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/stream-chain/-/stream-chain-2.0.4.tgz", + "integrity": "sha512-V7TsWLHrx79KumkHqSD7F8eR6POpEuWb6PuXJ7s/dRHAf3uVst3Jkp1yZ5XqIfECZLQ4a28vBVstTErmsMBvaQ==", "dev": true, "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "node_modules/@types/stream-json": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@types/stream-json/-/stream-json-1.7.8.tgz", + "integrity": "sha512-MU1OB1eFLcYWd1LjwKXrxdoPtXSRzRmAnnxs4Js/ayB5O/NvHraWwuOaqMWIebpYwM6khFlsJOHEhI9xK/ab4Q==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*", + "@types/stream-chain": "*" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node_modules/@types/streamx": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@types/streamx/-/streamx-2.9.5.tgz", + "integrity": "sha512-IHYsa6jYrck8VEdSwpY141FTTf6D7boPeMq9jy4qazNrFMA4VbRz/sw5LSsfR7jwdDcx0QKWkUexZvsWBC2eIQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/@types/styled-components": { + "version": "5.1.34", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.34.tgz", + "integrity": "sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==", "dev": true, - "bin": { - "he": "bin/he" + "dependencies": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" } }, - "node_modules/history": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", - "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" + }, + "node_modules/@types/tar-stream": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.4.tgz", + "integrity": "sha512-921gW0+g29mCJX0fRvqeHzBlE/XclDaAG0Ousy1LCghsOhvaKacDeRGEVzQP9IPfKn8Vysy7FEXAIxycpc/CMg==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.7.6" + "@types/node": "*" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "node_modules/@types/through2": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/through2/-/through2-2.0.41.tgz", + "integrity": "sha512-ryQ0tidWkb1O1JuYvWKyMLYEtOWDqF5mHerJzKz/gQpoAaJq2l/dsMPBF0B5BNVT34rbARYJ5/tsZwLfUi2kwQ==", + "dev": true, "dependencies": { - "react-is": "^16.7.0" + "@types/node": "*" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "node_modules/@types/tmp": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/undertaker": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.11.tgz", + "integrity": "sha512-j1Z0V2ByRHr8ZK7eOeGq0LGkkdthNFW0uAZGY22iRkNQNL9/vAV0yFPr1QN3FM/peY5bxs9P+1f0PYJTQVa5iA==", "dev": true, "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*", + "@types/undertaker-registry": "*", + "async-done": "~1.3.2" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "node_modules/@types/undertaker-registry": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.4.tgz", + "integrity": "sha512-tW77pHh2TU4uebWXWeEM5laiw8BuJ7pyJYDh6xenOs75nhny2kVgwYbegJ4BoLMYsIrXaBpKYaPdYO3/udG+hg==", "dev": true }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/vinyl": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.11.tgz", + "integrity": "sha512-vPXzCLmRp74e9LsP8oltnWKTH+jBwt86WgRUb4Pc9Lf3pkMVGyvIo2gm9bODeGfCay2DBB/hAWDuvf07JcK4rw==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "@types/expect": "^1.20.4", + "@types/node": "*" } }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/@types/vinyl-fs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-3.0.5.tgz", + "integrity": "sha512-ckYz9giHgV6U10RFuf9WsDQ3X86EFougapxHmmoxLK7e6ICQqO8CE+4V/3lBN148V5N1pb4nQMmMjyScleVsig==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" } }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@types/vscode": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.90.0.tgz", + "integrity": "sha512-oT+ZJL7qHS9Z8bs0+WKf/kQ27qWYR3trsXpq46YDjFqBsMLG4ygGGjPaJ2tyrH0wJzjOEmDyg9PDJBBhWg9pkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", + "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "@types/yargs-parser": "*" } }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "@types/node": "*" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz", + "integrity": "sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/type-utils": "8.58.2", + "@typescript-eslint/utils": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": ">=6.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8.12.0" + "node": ">= 4" } }, - "node_modules/husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", "dev": true, - "hasInstallScript": true, "dependencies": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "bin": { - "husky-run": "bin/run.js", - "husky-upgrade": "lib/upgrader/bin.js" + "@typescript-eslint/utils": "5.62.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/husky" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/husky/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/husky/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/husky/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=7.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/husky/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/husky/node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/husky/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/husky/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/husky/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/husky/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/@typescript-eslint/parser": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.2.tgz", + "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", + "debug": "^4.4.3" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/husky/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", + "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "@typescript-eslint/tsconfig-utils": "^8.38.0", + "@typescript-eslint/types": "^8.38.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/husky/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.2.tgz", + "integrity": "sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/husky/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", + "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/husky/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.2.tgz", + "integrity": "sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==", "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/utils": "8.58.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/husky/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "node_modules/@typescript-eslint/types": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.2.tgz", + "integrity": "sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==", "dev": true, - "dependencies": { - "find-up": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/husky/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.2.tgz", + "integrity": "sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@typescript-eslint/project-service": "8.58.2", + "@typescript-eslint/tsconfig-utils": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/project-service": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.2.tgz", + "integrity": "sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==", + "dev": true, + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@typescript-eslint/tsconfig-utils": "^8.58.2", + "@typescript-eslint/types": "^8.58.2", + "debug": "^4.4.3" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.2.tgz", + "integrity": "sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==", "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, + "license": "MIT", "engines": { - "node": ">= 6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 4" + "node": "18 || 20 || >=22" } }, - "node_modules/import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, + "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=6" + "node": "18 || 20 || >=22" } }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "brace-expansion": "^5.0.5" }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { - "node": ">=8" - } - }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/inquirer": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.2.tgz", - "integrity": "sha512-DF4osh1FM6l0RJc5YWYhSDB6TawiBRlbV9Cox8MWlidU218Tb7fm3lQTULyUJDfJ0tjbzl0W4q651mrCCEM55w==", + "node_modules/@typescript-eslint/utils": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.2.tgz", + "integrity": "sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.16", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2" }, "engines": { - "node": ">=8.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.2.tgz", + "integrity": "sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "@typescript-eslint/types": "8.58.2", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.4.tgz", + "integrity": "sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=20.0.0" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/internal-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", - "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": ">= 0.10" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], "dev": true, - "engines": { - "node": ">= 0.4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": ">= 0.4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@vscode-elements/elements": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@vscode-elements/elements/-/elements-1.14.0.tgz", + "integrity": "sha512-fUOP8O/Pwy8zbD8hGSy1plBg/764hdM9jIMu8uG7GQJOrOB+uQ/ystYxkiUcN6P7OBHvqkBKO1j6vDrkaOJg6Q==", + "license": "MIT", + "dependencies": { + "lit": "^3.2.1" } }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, + "node_modules/@vscode-elements/react-elements": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@vscode-elements/react-elements/-/react-elements-0.9.0.tgz", + "integrity": "sha512-pGWp6OBDAZXJ0tZqN+2SCiKhvhW3/cE4XJyiVHXH4Ft6KteuNVg20oexFv0M66U9iAZElQjPF8M9pBBABLaUZg==", + "license": "ISC", "dependencies": { - "is-extglob": "^2.1.1" + "@lit/react": "^1.0.6", + "@vscode-elements/elements": "^1.13.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "react": "^18.0.0" } }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true, + "node_modules/@vscode/codicons": { + "version": "0.0.44", + "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.44.tgz", + "integrity": "sha512-F7qPRumUK3EHjNdopfICLGRf3iNPoZQt+McTHAn4AlOWPB3W2kL4H0S7uqEqbyZ6rCxaeDjpAn3MCUnwTu/VJQ==", + "license": "CC-BY-4.0" + }, + "node_modules/@vscode/debugadapter": { + "version": "1.68.0", + "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.68.0.tgz", + "integrity": "sha512-D6gk5Fw2y4FV8oYmltoXpj+VAZexxJFopN/mcZ6YcgzQE9dgq2L45Aj3GLxScJOD6GeLILcxJIaA8l3v11esGg==", + "license": "MIT", + "dependencies": { + "@vscode/debugprotocol": "1.68.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/@vscode/debugprotocol": { + "version": "1.68.0", + "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.68.0.tgz", + "integrity": "sha512-2J27dysaXmvnfuhFGhfeuxfHRXunqNPxtBoR3koiTOA9rdxWNDTa1zIFLCFMSHJ9MPTPKFcBeblsyaCJCIlQxg==" + }, + "node_modules/@vscode/test-electron": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", + "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^8.1.0", + "semver": "^7.6.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/@vscode/vsce": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.2.1.tgz", + "integrity": "sha512-AY9vBjwExakK1c0cI/3NN2Ey0EgiKLBye/fxl/ue+o4q6RZ7N+xzd1jAD6eI6eBeMVANi617+V2rxIAkDPco2Q==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@azure/identity": "^4.1.0", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^6.2.1", + "form-data": "^4.0.0", + "glob": "^11.0.0", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" }, "engines": { - "node": ">=0.10.0" + "node": ">= 20" + }, + "optionalDependencies": { + "keytar": "^7.7.0" } }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "node_modules/@vscode/vsce-sign": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.5.tgz", + "integrity": "sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.2", + "@vscode/vsce-sign-alpine-x64": "2.0.2", + "@vscode/vsce-sign-darwin-arm64": "2.0.2", + "@vscode/vsce-sign-darwin-x64": "2.0.2", + "@vscode/vsce-sign-linux-arm": "2.0.2", + "@vscode/vsce-sign-linux-arm64": "2.0.2", + "@vscode/vsce-sign-linux-x64": "2.0.2", + "@vscode/vsce-sign-win32-arm64": "2.0.2", + "@vscode/vsce-sign-win32-x64": "2.0.2" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", + "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] }, - "node_modules/is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", + "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", + "integrity": "sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=6" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", + "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": ">=8" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", + "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==", + "cpu": [ + "arm" + ], "dev": true, - "engines": { - "node": ">=8" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", + "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", + "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", + "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", + "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true + "node_modules/@webcontainer/env": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webcontainer/env/-/env-1.1.1.tgz", + "integrity": "sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==", + "dev": true, + "license": "MIT" }, - "node_modules/is-regex": { + "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 0.4" + "node": ">=0.4.0" } }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "acorn": "^8" } }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, + "license": "MIT", "dependencies": { - "is-unc-path": "^1.0.0" + "acorn": "^8.11.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">= 0.4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { - "unc-path-regex": "^0.1.2" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "engines": { "node": ">=10" }, @@ -7959,1587 +9439,1553 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", - "dev": true, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" + "node": ">= 8" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "buffer-equal": "^1.0.0" }, "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/applicationinsights": { + "version": "2.9.8", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.9.8.tgz", + "integrity": "sha512-eB/EtAXJ6mDLLvHrtZj/7h31qUfnC2Npr2pHGqds5+1OP7BFLsn5us+HCkwTj7Q+1sHXujLphE5Cyvq5grtV6g==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@azure/core-auth": "1.7.2", + "@azure/core-rest-pipeline": "1.16.3", + "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5", + "@microsoft/applicationinsights-web-snippet": "1.0.1", + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/core": "^1.19.0", + "@opentelemetry/sdk-trace-base": "^1.19.0", + "@opentelemetry/semantic-conventions": "^1.19.0", + "cls-hooked": "^4.2.2", + "continuation-local-storage": "^3.2.1", + "diagnostic-channel": "1.1.1", + "diagnostic-channel-publishers": "1.0.8" }, "engines": { - "node": ">=10" + "node": ">=8.0.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" + "peerDependencies": { + "applicationinsights-native-metrics": "*" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "peerDependenciesMeta": { + "applicationinsights-native-metrics": { + "optional": true + } } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" + "node_modules/applicationinsights/node_modules/@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=4" + "node": ">=18.0.0" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "dequal": "^2.0.3" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "node_modules/keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dependencies": { - "readable-stream": "^2.0.5" + "node": ">= 0.4" }, - "engines": { - "node": ">= 0.6.3" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "flush-write-stream": "^1.0.2" - }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { - "uc.micro": "^1.0.1" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lint-staged": { - "version": "10.2.11", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.2.11.tgz", - "integrity": "sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "cli-truncate": "2.1.0", - "commander": "^5.1.0", - "cosmiconfig": "^6.0.0", - "debug": "^4.1.1", - "dedent": "^0.7.0", - "enquirer": "^2.3.5", - "execa": "^4.0.1", - "listr2": "^2.1.0", - "log-symbols": "^4.0.0", - "micromatch": "^4.0.2", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "^3.3.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/lint-staged/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lint-staged/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "tslib": "^2.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/lint-staged/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/lint-staged/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true, - "dependencies": { - "ms": "^2.1.1" - } + "license": "MIT" }, - "node_modules/lint-staged/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/lint-staged/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/lint-staged/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "node_modules/async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "dependencies": { + "stack-chain": "^1.3.7" + }, "engines": { - "node": ">=0.12.0" + "node": "^4.7 || >=6.9 || >=7.3" } }, - "node_modules/lint-staged/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, + "node_modules/async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "semver": "^5.3.0", + "shimmer": "^1.1.0" }, "engines": { - "node": ">=8" + "node": "<=0.11.8 || >0.11.10" } }, - "node_modules/lint-staged/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/async-listener/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "node_modules/async-settle": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", + "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "async-done": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" } }, - "node_modules/lint-staged/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/async-settle/node_modules/async-done": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", + "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "end-of-stream": "^1.4.4", + "once": "^1.4.0", + "stream-exhaust": "^1.0.2" }, "engines": { - "node": ">=8.0" + "node": ">= 10.13.0" } }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, - "node_modules/listr2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-2.2.0.tgz", - "integrity": "sha512-Q8qbd7rgmEwDo1nSyHaWQeztfGsdL6rb4uh7BA+Q80AZiDET5rVntiU1+13mu2ZTDVaBVbvAD1Db11rnu3l9sg==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "cli-truncate": "^2.1.0", - "figures": "^3.2.0", - "indent-string": "^4.0.0", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rxjs": "^6.5.5", - "through": "^2.3.8" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "node_modules/axe-core": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", "dev": true, - "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - }, + "license": "MPL-2.0", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/listr2/node_modules/chalk": { + "node_modules/axobject-query": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/listr2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" } }, - "node_modules/listr2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", "dev": true }, - "node_modules/listr2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/listr2/node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6.11.5" + "node": ">=8" } }, - "node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", + "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-define-polyfill-provider": "^0.6.6", + "core-js-compat": "^3.48.0" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "node_modules/bach": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz", + "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==", "dev": true, "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "async-done": "^2.0.0", + "async-settle": "^2.0.0", + "now-and-later": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/log-update/node_modules/astral-regex": { + "node_modules/bach/node_modules/async-done": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", + "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", "dev": true, + "dependencies": { + "end-of-stream": "^1.4.4", + "once": "^1.4.0", + "stream-exhaust": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" } }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/bach/node_modules/now-and-later": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "once": "^1.4.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 10.13.0" } }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } } }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/bare-fs": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.5.tgz", + "integrity": "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^5.0.1" + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" }, "engines": { - "node": ">=8" + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/bare-os": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.7.1.tgz", + "integrity": "sha512-ebvMaS5BgZKmJlvuWh14dg9rbUI84QeV3WlWn6Ph6lFI8jJoh7ADtVTyD2c93euwbe+zgi0DVrl4YmqXeM9aIA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "bare": ">=1.14.0" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "bare-os": "^3.0.1" } }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/bare-stream": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz", + "integrity": "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "streamx": "^2.21.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } } }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "es5-ext": "~0.10.2" + "bare-path": "^3.0.0" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", "dev": true, - "dependencies": { - "kind-of": "^6.0.2" + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/before-after-hook": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", + "license": "Apache-2.0" }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", "dev": true, + "license": "MIT", "dependencies": { - "object-visit": "^1.0.0" - }, + "require-from-string": "^2.0.2" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "node_modules/binaryextensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", + "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", "dev": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "engines": { + "node": ">=0.8" }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" + "url": "https://bevry.me/fund" } }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "optional": true, "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "optional": true, "dependencies": { - "is-extglob": "^2.1.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "node_modules/memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, + "license": "MIT", "dependencies": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", - "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "bin": { - "mime": "cli.js" + "dependencies": { + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "engines": { - "node": ">= 0.6" + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, "dependencies": { - "mime-db": "1.44.0" - }, - "engines": { - "node": ">= 0.6" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, + "license": "MIT", "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/mocha": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", - "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha-sinon": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mocha-sinon/-/mocha-sinon-2.1.2.tgz", - "integrity": "sha512-j6eIQGgOFddcgE1kUFKSvXR9oCuSEiRzv2XUK4iJcntObi2X2vYDvRwvOWxECUZl2dJ+Ciex5fYYni05Lx4azA==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "npm": ">1.2" + "node": ">= 0.4" } }, - "node_modules/mocha/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/mocha/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/caniuse-lite": { + "version": "1.0.30001774", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", + "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", "dev": true, "funding": [ { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, + "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=12" } }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/mocha/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/mocha/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/mocha/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", "dev": true, - "engines": { - "node": ">=0.3.1" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 16" } }, - "node_modules/mocha/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/mocha/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/mocha/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=8" } }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/mocha/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">= 12" } }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { - "picomatch": "^2.2.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=12" } }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "ansi-regex": "^5.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mocha/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "is-number": "^7.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=8.0" + "node": ">=8" } }, - "node_modules/mocha/node_modules/wrap-ansi": { + "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9552,2125 +10998,2498 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/mocha/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true, "engines": { - "node": ">=10" + "node": ">=0.8" } }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, "engines": { - "node": ">=10" + "node": ">= 0.10" } }, - "node_modules/mocha/node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", + "dependencies": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, "engines": { - "node": ">=10" + "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" } }, - "node_modules/module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", - "dev": true + "node_modules/cls-hooked/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=16" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, - "node_modules/nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true, - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=7.0.0" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "node_modules/continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "dependencies": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } }, - "node_modules/nise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", - "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "node_modules/copy-props": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", + "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "each-props": "^3.0.0", + "is-plain-object": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" } }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, "dependencies": { - "whatwg-url": "^5.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "encoding": "^0.1.0" + "typescript": ">=4.9.5" }, "peerDependenciesMeta": { - "encoding": { + "typescript": { "optional": true } } }, - "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "node_modules/node-version": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.2.0.tgz", - "integrity": "sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "create-jest": "bin/create-jest.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "once": "^1.3.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4.8" + "node": ">=8" } }, - "node_modules/npm-run-all/node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" }, "engines": { - "node": ">=4" + "node": ">=20" } }, - "node_modules/npm-run-all/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/npm-run-all/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { - "pify": "^3.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/npm-run-all/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", "engines": { "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/npm-run-all/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true }, - "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "dependencies": { - "boolbase": "^1.0.0" + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "node_modules/cssstyle": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz", + "integrity": "sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^4.0.3", + "@csstools/css-syntax-patches-for-csstree": "^1.0.14", + "css-tree": "^3.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=20" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "internmap": "1 - 2" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "dependencies": { - "is-buffer": "^1.1.5" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object-inspect": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz", - "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", "dependencies": { - "isobject": "^3.0.0" + "d3-array": "^3.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "delaunator": "5" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object.entries": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", - "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", - "dev": true, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "has": "^1.0.3" + "d3-dispatch": "1 - 3", + "d3-selection": "3" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/object.fromentries": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", - "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "d3-dsv": "1 - 3" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", "dependencies": { - "wrappy": "1" + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "node_modules/d3-graphviz": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-5.6.0.tgz", + "integrity": "sha512-46OOyRv5Ioo9kZBc919FVIYPD/ObtdSZxOK1hv+qwmD7TunpPvvmsI1dSdxhVgH4GragJxFZ31+TQC5aOuXzzw==", + "license": "BSD-3-Clause", "dependencies": { - "mimic-fn": "^2.1.0" + "@hpcc-js/wasm": "^2.20.0", + "d3-dispatch": "^3.0.1", + "d3-format": "^3.1.0", + "d3-interpolate": "^3.0.1", + "d3-path": "^3.1.0", + "d3-timer": "^3.0.1", + "d3-transition": "^3.0.1", + "d3-zoom": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "d3-selection": "^3.0.0" } }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "d3-color": "1 - 3" }, "engines": { - "node": ">= 0.8.0" + "node": ">=12" } }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "dependencies": { - "p-limit": "^2.2.0" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", "dependencies": { - "aggregate-error": "^3.0.0" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "dependencies": { - "callsites": "^3.0.0" + "d3-path": "^3.1.0" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "d3-array": "2 - 3" }, "engines": { - "node": ">=0.8" + "node": ">=12" } }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "dependencies": { - "error-ex": "^1.2.0" + "d3-time": "1 - 3" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "engines": { - "node": ">= 0.10" + "node": ">=12" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/parse-semver": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", - "dev": true, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "dependencies": { - "semver": "^5.1.0" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/parse-semver/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true, - "bin": { - "semver": "bin/semver" - } + "license": "BSD-2-Clause" }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "node_modules/data-urls": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz", + "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==", "dev": true, + "license": "MIT", "dependencies": { - "parse5": "^6.0.1" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^15.0.0" + }, + "engines": { + "node": ">=20" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "node_modules/path-dirname": { + "node_modules/data-view-byte-length": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { - "pinkie-promise": "^2.0.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/path-is-absolute": { + "node_modules/data-view-byte-offset": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "dev": true, + "license": "MIT", "dependencies": { - "path-root-regex": "^0.1.0" + "character-entities": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, + "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/dedent": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", "dev": true, - "dependencies": { - "isarray": "0.0.1" + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "optional": true, "engines": { - "node": "*" + "node": ">=4.0.0" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=0.10.0" } }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "pinkie": "^2.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "dependencies": { - "semver-compare": "^1.0.0" + "robust-predicates": "^3.0.0" } }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, "engines": { - "node": ">= 0.10" + "node": ">=0.4.0" } }, - "node_modules/plugin-error/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, + "optional": true, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dev": true, + "license": "MIT", "dependencies": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.16", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "dequal": "^2.0.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "node_modules/diagnostic-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz", + "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==", "dev": true, "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" + "semver": "^7.5.3" } }, - "node_modules/postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "node_modules/diagnostic-channel-publishers": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.8.tgz", + "integrity": "sha512-HmSm9hXxSPxA9BaLGY98QU1zsdjeCk113KjAYGPCen1ZP6mhVaTPzHd6UYv5r21DnWANi+f+NyPOHruGT9jpqQ==", "dev": true, - "dependencies": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "peerDependencies": { + "diagnostic-channel": "*" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, "engines": { - "node": ">=4" + "node": ">=0.3.1" } }, - "node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/prebuild-install": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", - "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/prebuild-install/node_modules/pump": { + "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, + "esutils": "^2.0.2" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=6.0.0" } }, - "node_modules/prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": ">=10.13.0" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/promise-polyfill": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", - "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=" - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/proxyquire": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", - "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true, - "dependencies": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.1", - "resolve": "^1.11.1" + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/prr": { + "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/each-props": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz", + "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==", "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0" + }, "engines": { - "node": ">=6" + "node": ">= 10.13.0" } }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.0.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/electron-to-chromium": { + "version": "1.5.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", + "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", "dev": true, + "license": "ISC" + }, + "node_modules/emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", "dependencies": { - "safe-buffer": "^5.1.0" + "shimmer": "^1.2.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "engines": { + "node": ">=12" }, - "bin": { - "rc": "cli.js" + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" + "once": "^1.4.0" } }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" }, - "peerDependencies": { - "react": "17.0.2" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "dependencies": { - "mute-stream": "~0.0.4" - }, "engines": { - "node": ">=0.8" + "node": ">=6" } }, - "node_modules/read-pkg": { + "node_modules/environment": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "prr": "~1.0.1" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "bin": { + "errno": "cli.js" } }, - "node_modules/readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "is-arrayish": "^0.2.1" } }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { - "node": ">=0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 0.4" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" } }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "hasown": "^2.0.0" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=0.10" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, "engines": { - "node": ">= 0.10" + "node": ">=0.8.0" } }, - "node_modules/replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "node_modules/eslint": { + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz", + "integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==", "dev": true, + "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.32.0", + "@eslint/plugin-kit": "^0.3.4", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "node_modules/eslint-etc": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-etc/-/eslint-etc-5.2.1.tgz", + "integrity": "sha512-lFJBSiIURdqQKq9xJhvSJFyPA+VeTh5xvk24e8pxVL7bwLBtGF60C/KRkLTMrvCZ6DA3kbPuYhLWY0TZMlqTsg==", "dev": true, "dependencies": { - "path-parse": "^1.0.6" + "@typescript-eslint/experimental-utils": "^5.0.0", + "tsutils": "^3.17.1", + "tsutils-etc": "^1.4.1" + }, + "peerDependencies": { + "eslint": "^8.0.0", + "typescript": ">=4.0.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", "dev": true, + "license": "MIT", "dependencies": { - "resolve-from": "^5.0.0" + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "ms": "^2.1.1" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, "engines": { - "node": ">=4" + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "dependencies": { - "value-or-function": "^3.0.0" + "debug": "^3.2.7" }, "engines": { - "node": ">= 0.10" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" + "ms": "^2.1.1" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "node_modules/eslint-plugin-escompat": { + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.4.tgz", + "integrity": "sha512-j0ywwNnIufshOzgAu+PfIig1c7VRClKSNKzpniMT2vXQ4leL5q+e/SpMFQU0nrdL2WFFM44XmhSuwmxb3G0CJg==", "dev": true, - "engines": { - "node": ">=0.12" + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.1" + }, + "peerDependencies": { + "eslint": ">=5.14.1" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/eslint-plugin-etc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-etc/-/eslint-plugin-etc-2.0.3.tgz", + "integrity": "sha512-o5RS/0YwtjlGKWjhKojgmm82gV1b4NQUuwk9zqjy9/EjxNFKKYCaF+0M7DkYBn44mJ6JYFZw3Ft249dkKuR1ew==", + "dev": true, "dependencies": { - "glob": "^7.1.3" + "@phenomnomnominal/tsquery": "^5.0.0", + "@typescript-eslint/experimental-utils": "^5.0.0", + "eslint-etc": "^5.1.0", + "requireindex": "~1.2.0", + "tslib": "^2.0.0", + "tsutils": "^3.0.0" }, - "bin": { - "rimraf": "bin.js" + "peerDependencies": { + "eslint": "^8.0.0", + "typescript": ">=4.0.0" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/eslint-plugin-filenames": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz", + "integrity": "sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==", "dev": true, - "engines": { - "node": ">=0.12.0" + "dependencies": { + "lodash.camelcase": "4.3.0", + "lodash.kebabcase": "4.1.1", + "lodash.snakecase": "4.1.1", + "lodash.upperfirst": "4.3.1" + }, + "peerDependencies": { + "eslint": "*" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/eslint-plugin-github": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-6.0.0.tgz", + "integrity": "sha512-J8MvUoiR/TU/Y9NnEmg1AnbvMUj9R6IO260z47zymMLLvso7B4c80IKjd8diqmqtSmeXXlbIus4i0SvK84flag==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "@eslint/compat": "^1.2.3", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.14.0", + "@github/browserslist-config": "^1.0.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "aria-query": "^5.3.0", + "eslint-config-prettier": ">=8.0.0", + "eslint-plugin-escompat": "^3.11.3", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-filenames": "^1.3.2", + "eslint-plugin-i18n-text": "^1.0.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-no-only-tests": "^3.0.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-rule-documentation": ">=1.0.0", + "globals": "^16.0.0", + "jsx-ast-utils": "^3.3.2", + "prettier": "^3.0.0", + "svg-element-attributes": "^1.3.1", + "typescript": "^5.7.3", + "typescript-eslint": "^8.14.0" + }, + "bin": { + "eslint-ignore-errors": "bin/eslint-ignore-errors.js" + }, + "peerDependencies": { + "eslint": "^8 || ^9" } }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" - }, - "node_modules/rxjs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", - "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", + "node_modules/eslint-plugin-github/node_modules/globals": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", + "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, + "license": "MIT", "engines": { - "npm": ">=2.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/eslint-plugin-i18n-text": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz", + "integrity": "sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "dependencies": { - "ret": "~0.1.10" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "ms": "^2.1.1" } }, - "node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">= 8.9.0" + "node": ">=0.10.0" } }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest-dom": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.5.0.tgz", + "integrity": "sha512-CRlXfchTr7EgC3tDI7MGHY6QjdJU5Vv2RPaeeGtkXUHnKZf04kgzMPIJUXt4qKCvYWVVIEo9ut9Oq1vgXAykEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.16.3", + "requireindex": "^1.2.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "@testing-library/dom": "^8.0.0 || ^9.0.0 || ^10.0.0", + "eslint": "^6.8.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "@testing-library/dom": { + "optional": true + } } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, + "license": "MIT", "dependencies": { - "sver-compat": "^1.5.0" + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", + "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", + "dev": true, + "engines": { + "node": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", + "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", "dev": true, + "license": "MIT", "dependencies": { - "randombytes": "^2.1.0" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/eslint-plugin-storybook": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.3.3.tgz", + "integrity": "sha512-jo8wZvKaJlxxrNvf4hCsROJP3CdlpaLiYewAs5Ww+PJxCrLelIi5XVHWOAgBvvr3H9WDKvUw8xuvqPYqAlpkFg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.2" + "@typescript-eslint/utils": "^8.48.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "eslint": ">=8", + "storybook": "^10.3.3" } }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + "node_modules/eslint-rule-documentation": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz", + "integrity": "sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "shebang-regex": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + "node_modules/eslint/node_modules/@eslint/js": { + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", + "integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/sinon": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.1.tgz", - "integrity": "sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.0.0", - "@sinonjs/samsam": "^6.1.1", - "diff": "^5.0.0", - "nise": "^5.1.1", - "supports-color": "^7.2.0" + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sinon-chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.5.0.tgz", - "integrity": "sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg==", - "dev": true + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/sinon/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=0.3.1" + "node": ">=10.13.0" } }, - "node_modules/sinon/node_modules/has-flag": { + "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -11679,7 +13498,13 @@ "node": ">=8" } }, - "node_modules/sinon/node_modules/supports-color": { + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -11691,1076 +13516,1124 @@ "node": ">=8" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0.0" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.8.x" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "bare-events": "^2.7.0" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "optional": true, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, + "license": "MIT", "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } + "node_modules/fast-content-type-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true }, - "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { - "extend-shallow": "^3.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "node_modules/stack-chain": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "engines": { - "node": "*" - } + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 4.9.1" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", - "integrity": "sha1-f1Nj8Ff2WSxVlfALyAon9c7B8O8=", - "dependencies": { - "emitter-component": "^1.1.1" + "reusify": "^1.0.4" } }, - "node_modules/stream-chain": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.4.tgz", - "integrity": "sha512-9lsl3YM53V5N/I1C2uJtc3Kavyi3kNYN83VkKb/bMWRk7D9imiFyUPYa0PoZbLohSVOX1mYE9YsmwObZUsth6Q==" - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "node_modules/stream-json": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.7.3.tgz", - "integrity": "sha512-Y6dXn9KKWSwxOqnvHGcdZy1PK+J+7alBwHCeU3W9oRqm4ilLRA0XSPmd1tWwhg7tv9EIxJTMWh7KF15tYelKJg==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, "dependencies": { - "stream-chain": "^2.2.4" + "bser": "2.1.1" } }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "pend": "~1.2.0" } }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.6.19" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { - "ansi-regex": "^5.0.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", - "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", - "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "micromatch": "^4.0.2" } }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", "dev": true, + "license": "MIT", "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">= 10.13.0" } }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/fined": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "expand-tilde": "^2.0.2", + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0", + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" }, "engines": { - "node": ">=6" + "node": ">= 10.13.0" } }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "node_modules/flagged-respawn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 10.13.0" } }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { - "is-utf8": "^0.2.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "ISC" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "dev": true, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "license": "MIT", + "dependencies": { + "for-in": "^1.0.1" }, - "peerDependencies": { - "webpack": "^5.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/styled-components": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.3.tgz", - "integrity": "sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.8", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/styled-components" - }, - "peerDependencies": { - "react": ">= 16.8.0", - "react-dom": ">= 16.8.0", - "react-is": ">= 16.8.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/styled-components/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=4" - } - }, - "node_modules/styled-system": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz", - "integrity": "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==", - "dependencies": { - "@styled-system/background": "^5.1.2", - "@styled-system/border": "^5.1.5", - "@styled-system/color": "^5.1.2", - "@styled-system/core": "^5.1.2", - "@styled-system/flexbox": "^5.1.2", - "@styled-system/grid": "^5.1.2", - "@styled-system/layout": "^5.1.2", - "@styled-system/position": "^5.1.2", - "@styled-system/shadow": "^5.1.2", - "@styled-system/space": "^5.1.2", - "@styled-system/typography": "^5.1.2", - "@styled-system/variant": "^5.1.5", - "object-assign": "^4.1.1" + "node": ">= 6" } }, - "node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true, + "optional": true + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { - "has-flag": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=14.14" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", "dev": true, "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/tabbable": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" - }, - "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "node_modules/fs-mkdirp-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tar-fs/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { - "node": ">= 6" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=8.0.0" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://bevry.me/fund" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "readable-stream": "3" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", "dev": true, + "license": "MIT", "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/through2-filter/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } + "optional": true }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">= 6" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", "dev": true, "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { - "rimraf": "^2.6.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tmp-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", - "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, "dependencies": { - "tmp": "^0.2.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, - "node_modules/tmp-promise/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, "dependencies": { - "glob": "^7.1.3" + "is-extglob": "^2.1.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/tmp-promise/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/glob-watcher": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", + "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", + "dev": true, "dependencies": { - "rimraf": "^3.0.0" + "async-done": "^2.0.0", + "chokidar": "^3.5.3" }, "engines": { - "node": ">=8.17.0" + "node": ">= 10.13.0" } }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "node_modules/glob-watcher/node_modules/async-done": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", + "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", "dev": true, "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "end-of-stream": "^1.4.4", + "once": "^1.4.0", + "stream-exhaust": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": "18 || 20 || >=22" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "18 || 20 || >=22" } }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "is-buffer": "^1.1.5" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, + "license": "MIT", "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "through2": "^2.0.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "node_modules/glogg": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", + "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==", + "dev": true, + "license": "MIT", + "dependencies": { + "sparkles": "^2.1.0" + }, + "engines": { + "node": ">= 10.13.0" + } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "bin": { - "tree-kill": "cli.js" + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/graphql": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", + "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/ts-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.1.0.tgz", - "integrity": "sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A==", + "node_modules/gulp": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.1.tgz", + "integrity": "sha512-PErok3DZSA5WGMd6XXV3IRNO0mlB+wW3OzhFJLEec1jSERg2j1bxJ6e5Fh6N6fn3FH2T9AP4UYNb/pYlADB9sA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" + "glob-watcher": "^6.0.0", + "gulp-cli": "^3.1.0", + "undertaker": "^2.0.0", + "vinyl-fs": "^4.0.2" + }, + "bin": { + "gulp": "bin/gulp.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.13.0" + } + }, + "node_modules/gulp-cli": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.1.0.tgz", + "integrity": "sha512-zZzwlmEsTfXcxRKiCHsdyjZZnFvXWM4v1NqBJSYbuApkvVKivjcmOS2qruAJ+PkEHLFavcDKH40DPc1+t12a9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@gulpjs/messages": "^1.1.0", + "chalk": "^4.1.2", + "copy-props": "^4.0.0", + "gulplog": "^2.2.0", + "interpret": "^3.1.1", + "liftoff": "^5.0.1", + "mute-stdout": "^2.0.0", + "replace-homedir": "^2.0.0", + "semver-greatest-satisfied-range": "^2.0.0", + "string-width": "^4.2.3", + "v8flags": "^4.0.0", + "yargs": "^16.2.0" }, - "peerDependencies": { - "typescript": "*", - "webpack": "*" + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/ts-loader/node_modules/ansi-styles": { + "node_modules/gulp-cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12771,23 +14644,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ts-loader/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/gulp-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12799,101 +14661,66 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ts-loader/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/gulp-cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/ts-loader/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ts-loader/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/gulp-cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/ts-loader/node_modules/has-flag": { + "node_modules/gulp-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/ts-loader/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/ts-loader/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ts-loader/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, + "license": "MIT", "engines": { - "node": ">=8.9.0" + "node": ">=8" } }, - "node_modules/ts-loader/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "node_modules/gulp-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/ts-loader/node_modules/supports-color": { + "node_modules/gulp-cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12901,594 +14728,508 @@ "node": ">=8" } }, - "node_modules/ts-loader/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/gulp-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "node": ">=10" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "node_modules/gulp-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=10" } }, - "node_modules/ts-protoc-gen": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/ts-protoc-gen/-/ts-protoc-gen-0.9.0.tgz", - "integrity": "sha512-cFEUTY9U9o6C4DPPfMHk2ZUdIAKL91hZN1fyx5Stz3g56BDVOC7hk+r5fEMCAGaaIgi2akkT1a2hrxu1wo2Phg==", + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "bin": { - "protoc-gen-ts": "bin/protoc-gen-ts" + "license": "ISC", + "engines": { + "node": ">=10" } }, - "node_modules/tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/gulp-esbuild": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/gulp-esbuild/-/gulp-esbuild-0.14.1.tgz", + "integrity": "sha512-eaa3WhKj/Rk3LcOvK88KyRftuUeOvINxxeArpUbdHtqo5tJtwPXoTgM3R0M5R6mIZv83PKn+aF6LwrLEnBL5PA==", "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^1.8.1" + "plugin-error": "^2.0.1", + "vinyl": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=16" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "esbuild": ">=0.17" } }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "node_modules/gulp-replace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz", + "integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==", "dev": true, + "dependencies": { + "@types/node": "*", + "@types/vinyl": "^2.0.4", + "istextorbinary": "^3.0.0", + "replacestream": "^4.0.3", + "yargs-parser": ">=5.0.0-security.0" + }, "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + "node": ">=10" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "node_modules/gulp-typescript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", + "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==", "dev": true, "dependencies": { - "safe-buffer": "^5.0.1" + "ansi-colors": "^3.0.5", + "plugin-error": "^1.0.1", + "source-map": "^0.7.3", + "through2": "^3.0.0", + "vinyl": "^2.1.0", + "vinyl-fs": "^3.0.3" }, "engines": { - "node": "*" + "node": ">= 8" + }, + "peerDependencies": { + "typescript": "~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev" } }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true + "node_modules/gulp-typescript/node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/gulp-typescript/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.10" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/gulp-typescript/node_modules/plugin-error/node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/gulp-typescript/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/typed-rest-client": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", + "node_modules/gulp-typescript/node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", "dev": true, "dependencies": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" + "inherits": "^2.0.4", + "readable-stream": "2 || 3" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "node_modules/gulp-typescript/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" }, "engines": { - "node": ">=4.2.0" + "node": ">= 0.10" } }, - "node_modules/typescript-formatter": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/typescript-formatter/-/typescript-formatter-7.2.2.tgz", - "integrity": "sha512-V7vfI9XArVhriOTYHPzMU2WUnm5IMdu9X/CPxs8mIMGxmTBFpDABlbkBka64PZJ9/xgQeRpK8KzzAG4MPzxBDQ==", + "node_modules/gulp/node_modules/fs-mkdirp-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", "dev": true, + "license": "MIT", "dependencies": { - "commandpost": "^1.0.0", - "editorconfig": "^0.15.0" - }, - "bin": { - "tsfmt": "bin/tsfmt" + "graceful-fs": "^4.2.8", + "streamx": "^2.12.0" }, "engines": { - "node": ">= 4.2.0" + "node": ">=10.13.0" } }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "node_modules/gulp/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", - "dev": true - }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "node_modules/gulp/node_modules/glob-stream": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.3.tgz", + "integrity": "sha512-fqZVj22LtFJkHODT+M4N1RJQ3TjnnQhfE9GwZI8qXscYarnhpip70poMldRnP8ipQ/w0B621kOhfc53/J9bd/A==", "dev": true, + "license": "MIT", "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" + "@gulpjs/to-absolute-glob": "^4.0.0", + "anymatch": "^3.1.3", + "fastq": "^1.13.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "is-negated-glob": "^1.0.0", + "normalize-path": "^3.0.0", + "streamx": "^2.12.5" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "node_modules/gulp/node_modules/lead": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", + "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/gulp/node_modules/now-and-later": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", "dev": true, + "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "once": "^1.4.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" + "node": ">= 10.13.0" } }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - }, - "node_modules/universalify": { + "node_modules/gulp/node_modules/resolve-options": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", + "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", "dev": true, + "license": "MIT", "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "value-or-function": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "node_modules/gulp/node_modules/to-through": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", + "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", "dev": true, + "license": "MIT", "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "streamx": "^2.12.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "node_modules/gulp/node_modules/value-or-function": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", + "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "node_modules/gulp/node_modules/vinyl-fs": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.2.tgz", + "integrity": "sha512-XRFwBLLTl8lRAOYiBqxY279wY46tVxLaRhSwo3GzKEuLz1giffsOquWWboD/haGf5lx+JyTigCFfe7DWHoARIA==", "dev": true, + "license": "MIT", + "dependencies": { + "fs-mkdirp-stream": "^2.0.1", + "glob-stream": "^8.0.3", + "graceful-fs": "^4.2.11", + "iconv-lite": "^0.6.3", + "is-valid-glob": "^1.0.0", + "lead": "^4.0.0", + "normalize-path": "3.0.0", + "resolve-options": "^2.0.0", + "stream-composer": "^1.0.2", + "streamx": "^2.14.0", + "to-through": "^3.0.0", + "value-or-function": "^4.0.0", + "vinyl": "^3.0.1", + "vinyl-sourcemap": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "node_modules/gulp/node_modules/vinyl-sourcemap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", + "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", + "dev": true, + "license": "MIT", "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" + "convert-source-map": "^2.0.0", + "graceful-fs": "^4.2.10", + "now-and-later": "^3.0.0", + "streamx": "^2.12.5", + "vinyl": "^3.0.0", + "vinyl-contents": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "node_modules/gulplog": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", + "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==", "dev": true, + "license": "MIT", + "dependencies": { + "glogg": "^2.2.0" + }, "engines": { - "node": ">=4", - "yarn": "*" + "node": ">= 10.13.0" } }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", - "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", - "dev": true - }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/value-or-function": { + "node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" + "dunder-proto": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { - "remove-trailing-separator": "^1.0.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/viz.js": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/viz.js/-/viz.js-1.8.2.tgz", - "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==", - "deprecated": "no longer supported" + "node_modules/headers-polyfill": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.2.tgz", + "integrity": "sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==" + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" }, - "node_modules/vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", "dev": true, + "license": "MIT", "dependencies": { - "azure-devops-node-api": "^11.0.1", - "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.9", - "commander": "^6.1.0", - "glob": "^7.0.6", - "hosted-git-info": "^4.0.2", - "keytar": "^7.7.0", - "leven": "^3.1.0", - "markdown-it": "^12.3.2", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "semver": "^5.1.0", - "tmp": "^0.2.1", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.4.23", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, - "bin": { - "vsce": "vsce" - }, - "engines": { - "node": ">= 14" + "hermes-estree": "0.25.1" } }, - "node_modules/vsce/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", + "dependencies": { + "parse-passwd": "^1.0.0" + }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/vsce/node_modules/hosted-git-info": { + "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", @@ -13500,7 +15241,7 @@ "node": ">=10" } }, - "node_modules/vsce/node_modules/lru-cache": { + "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", @@ -13512,12517 +15253,13634 @@ "node": ">=10" } }, - "node_modules/vsce/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "whatwg-encoding": "^3.1.1" }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=18" } }, - "node_modules/vsce/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, - "bin": { - "semver": "bin/semver" + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/vsce/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { - "rimraf": "^3.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=8.17.0" + "node": ">= 14" } }, - "node_modules/vsce/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/vscode-extension-telemetry": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.6.tgz", - "integrity": "sha512-rbzSg7k4NnsCdF4Lz0gI4jl3JLXR0hnlmfFgsY8CSDYhXgdoIxcre8jw5rjkobY0xhSDhbG7xCjP8zxskySJ/g==", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", "dependencies": { - "applicationinsights": "1.7.4" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "vscode": "^1.5.0" - } - }, - "node_modules/vscode-extension-telemetry/node_modules/applicationinsights": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.7.4.tgz", - "integrity": "sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A==", - "dependencies": { - "cls-hooked": "^4.2.2", - "continuation-local-storage": "^3.2.1", - "diagnostic-channel": "0.2.0", - "diagnostic-channel-publishers": "^0.3.3" + "node": ">= 14" } }, - "node_modules/vscode-extension-telemetry/node_modules/diagnostic-channel": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.2.0.tgz", - "integrity": "sha1-zJmvlhLCP7H/8TYSxy8sv6qNWhc=", - "dependencies": { - "semver": "^5.3.0" + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" } }, - "node_modules/vscode-extension-telemetry/node_modules/diagnostic-channel-publishers": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.5.tgz", - "integrity": "sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ==" - }, - "node_modules/vscode-extension-telemetry/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", "bin": { - "semver": "bin/semver" - } - }, - "node_modules/vscode-jsonrpc": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", - "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==", + "husky": "bin.js" + }, "engines": { - "node": ">=8.0.0 || >=10.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/vscode-languageclient": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", - "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "semver": "^6.3.0", - "vscode-languageserver-protocol": "^3.15.3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "vscode": "^1.41.0" - } - }, - "node_modules/vscode-languageclient/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", - "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", - "dependencies": { - "vscode-jsonrpc": "^5.0.1", - "vscode-languageserver-types": "3.15.1" + "node": ">=0.10.0" } }, - "node_modules/vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" - }, - "node_modules/vscode-test": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", - "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", - "deprecated": "This package has been renamed to @vscode/test-electron, please update to the new name", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, + "license": "ISC", "engines": { - "node": ">=8.9.3" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/vscode-test-adapter-api": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-test-adapter-api/-/vscode-test-adapter-api-1.7.0.tgz", - "integrity": "sha512-X0rTcoDhDBmpmJuev2C5+GHGZD41nmcRYoSe7iw5e9/aIPTOFve1T1F5x9gb+zXoNQnkXSDibyMkeHDKtIkqCg==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, "engines": { - "vscode": "^1.23.0" + "node": ">= 4" } }, - "node_modules/vscode-test-adapter-util": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/vscode-test-adapter-util/-/vscode-test-adapter-util-0.7.1.tgz", - "integrity": "sha512-OZZvLDDNhayVVISyTmgUntOhMzl6j9/wVGfNqI2zuR5bQIziTQlDs9W29dFXDTGXZOxazS6uiHkrr86BKDzYUA==", - "dependencies": { - "tslib": "^1.11.1", - "vscode-test-adapter-api": "^1.8.0" + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "vscode": "^1.24.0" + "node": ">=0.10.0" } }, - "node_modules/vscode-test-adapter-util/node_modules/vscode-test-adapter-api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/vscode-test-adapter-api/-/vscode-test-adapter-api-1.9.0.tgz", - "integrity": "sha512-lltjehUP0J9H3R/HBctjlqeUCwn2t9Lbhj2Y500ib+j5Y4H3hw+hVTzuSsfw16LtxY37knlU39QIlasa7svzOQ==", - "engines": { - "vscode": "^1.23.0" - } + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true }, - "node_modules/vscode-test/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/immutable": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz", + "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, "engines": { - "node": ">=10.13.0" + "node": ">=4" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "node_modules/import-in-the-middle": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz", + "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.8.2", + "acorn-import-assertions": "^1.9.0", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } }, - "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "webpack": "bin/webpack.js" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-cli": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz", - "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.2", - "@webpack-cli/info": "^1.2.3", - "@webpack-cli/serve": "^1.3.1", - "colorette": "^1.2.1", - "commander": "^7.0.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } + "node": ">=0.8.19" } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/webpack-cli/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/webpack-cli/node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/webpack-cli/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/webpack-cli/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.17.0" + "node": ">=10.13.0" } }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/webpack-cli/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "dev": true, + "license": "MIT", "dependencies": { - "resolve": "^1.9.0" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, - "engines": { - "node": ">= 0.10" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/webpack-cli/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-cli/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-cli/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "has-bigints": "^1.0.2" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" } }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "peerDependencies": { - "acorn": "^8" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack/node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, "bin": { - "which": "bin/which" + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, + "is-plain-object": "^2.0.4" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { + "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { "node": ">=0.10.0" } }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, "dependencies": { - "mkdirp": "^0.5.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", "dev": true, - "engines": { - "node": ">=4.0" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/xregexp": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", - "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime-corejs3": "^7.8.3" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/yargs/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "node_modules/is-relative": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, "dependencies": { - "number-is-nan": "^1.0.0" + "is-unc-path": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/yargs/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, "dependencies": { - "buffer-crc32": "~0.2.3" + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/zip-a-folder": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-1.1.3.tgz", - "integrity": "sha512-V4mXL1iSsgr/2kqKw0hxzZM9ibuGeW4b0wjKp8CAjXMl+WdSQ8npTBNN/+X7Q50h3KTwnmgLlgqMqEOOMkLCqQ==", - "dependencies": { - "archiver": "^5.3.0" + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" + "call-bound": "^1.0.3" }, "engines": { - "node": ">= 10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">= 6" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", - "requires": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "requires": { - "@babel/types": "^7.16.7" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "requires": { - "@babel/types": "^7.16.7" - } + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" }, - "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "requires": { - "@babel/types": "^7.16.7" + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "requires": { - "@babel/types": "^7.16.7" - } + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@babel/parser": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", - "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==" - }, - "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", - "requires": { - "regenerator-runtime": "^0.13.4" + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@babel/runtime-corejs3": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz", - "integrity": "sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==", - "dev": true, - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", - "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.10", - "@babel/types": "^7.16.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" } }, - "@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", - "dev": true - }, - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "requires": { - "@emotion/memoize": "0.7.4" + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@gulp-sourcemaps/identity-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", - "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "requires": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" - }, "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - } + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - }, "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "engines": { + "node": ">=0.10.0" } }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@microsoft/fast-element": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.10.2.tgz", - "integrity": "sha512-Nh80AEx/caDe4jhFYNT75sTG4k6MWy1N6XfgyhmejAX0ylivYy0M78WI2JgQOqi2ZRozCiNcpAPLVhYyAVN9sA==" - }, - "@microsoft/fast-foundation": { - "version": "2.46.9", - "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.46.9.tgz", - "integrity": "sha512-jgkVT7bAWIV844eDj3V9cmYFsRIcJ8vMuB4h2SlkJ9EmFbCfimvh6RyAhsHv+bC6QZSS0N0bpZHm5A5QsWgi3Q==", - "requires": { - "@microsoft/fast-element": "^1.10.2", - "@microsoft/fast-web-utilities": "^5.4.1", - "tabbable": "^5.2.0", - "tslib": "^1.13.0" - } - }, - "@microsoft/fast-web-utilities": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz", - "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==", - "requires": { - "exenv-es6": "^1.1.1" + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "dependencies": { + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@octokit/auth-token": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", - "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", - "requires": { - "@octokit/types": "^6.0.3" - } - }, - "@octokit/core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", - "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.0", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, + "license": "MIT", "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - } - } - }, - "@octokit/graphql": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.4.tgz", - "integrity": "sha512-SWTdXsVheRmlotWNjKzPOb6Js6tjSqA2a8z9+glDJng0Aqjzti8MEWOtuT8ZSu6wHnci7LZNuarE87+WJBG4vg==", - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.3.2.tgz", - "integrity": "sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA==" - }, - "@octokit/plugin-paginate-rest": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.5.tgz", - "integrity": "sha512-3WSAKBLa1RaR/7GG+LQR/tAZ9fp9H9waE9aPXallidyci9oZsfgsLn5M836d3LuDC6Fcym+2idRTBpssHZePVg==", - "requires": { - "@octokit/types": "^6.13.0" - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "requires": {} - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.1.tgz", - "integrity": "sha512-3B2iguGmkh6bQQaVOtCsS0gixrz8Lg0v4JuXPqBcFqLKuJtxAUf3K88RxMEf/naDOI73spD+goJ/o7Ie7Cvdjg==", - "requires": { - "@octokit/types": "^6.16.2", - "deprecation": "^2.3.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", - "requires": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@octokit/request": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.0.tgz", - "integrity": "sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA==", - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "universal-user-agent": "^6.0.0" - }, + "node_modules/jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", + "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/rest": { - "version": "18.6.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.6.0.tgz", - "integrity": "sha512-MdHuXHDJM7e5sUBe3K9tt7th0cs4csKU5Bb52LRi2oHAeIMrMZ4XqaTrEv660HoUPoM1iDlnj27Ab/Nh3MtwlA==", - "requires": { - "@octokit/core": "^3.5.0", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "5.3.1" + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@octokit/types": { - "version": "6.16.4", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.16.4.tgz", - "integrity": "sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A==", - "requires": { - "@octokit/openapi-types": "^7.3.2" + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@primer/behaviors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@primer/behaviors/-/behaviors-1.1.0.tgz", - "integrity": "sha512-Ej2OUc3ZIFaR7WwIUqESO1DTzmpb7wc8xbTVRT9s52jZQDjN7g5iljoK3ocYZm+BIAcKn3MvcwB42hEk4Ga4xQ==" - }, - "@primer/octicons-react": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/@primer/octicons-react/-/octicons-react-16.3.0.tgz", - "integrity": "sha512-nxB6L5IYeR2hPY6q7DAyQGW42MO0kA4PqMBNysN4WaZAHjiKgtTDr9rI+759PqGK7BTTuT43HTuu2cMsg7pH0Q==", - "requires": {} - }, - "@primer/primitives": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@primer/primitives/-/primitives-7.1.1.tgz", - "integrity": "sha512-+Gwo89YK1OFi6oubTlah/zPxxzMNaMLy+inECAYI646KIFdzzhAsKWb3z5tSOu5Ff7no4isRV64rWfMSKLZclw==" - }, - "@primer/react": { - "version": "35.0.0", - "resolved": "https://registry.npmjs.org/@primer/react/-/react-35.0.0.tgz", - "integrity": "sha512-pjraRDHoT6Lwmto31ZN+WrtNCDA6lieOhr+4XC1z8wuq/JSGJVB3gHePi2/yIZldy2WoK55O1lsyp8llUiakog==", - "requires": { - "@primer/behaviors": "1.1.0", - "@primer/octicons-react": "16.1.1", - "@primer/primitives": "7.1.1", - "@radix-ui/react-polymorphic": "0.0.14", - "@react-aria/ssr": "3.1.0", - "@styled-system/css": "5.1.5", - "@styled-system/props": "5.1.5", - "@styled-system/theme-get": "5.1.2", - "@types/styled-components": "5.1.11", - "@types/styled-system": "5.1.12", - "@types/styled-system__css": "5.0.16", - "@types/styled-system__theme-get": "5.0.1", - "classnames": "2.3.1", - "color2k": "1.2.4", - "deepmerge": "4.2.2", - "focus-visible": "5.2.0", - "history": "5.0.0", - "styled-system": "5.1.5" - }, - "dependencies": { - "@primer/octicons-react": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/@primer/octicons-react/-/octicons-react-16.1.1.tgz", - "integrity": "sha512-xCxQ5z23ol7yDuJs85Lc4ARzyoay+b3zOhAKkEMU7chk0xi2hT2OnRP23QUudNNDPTGozX268RGYLexUa6P4xw==", - "requires": {} - }, - "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - } + "node_modules/jest-circus/node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@radix-ui/react-polymorphic": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@radix-ui/react-polymorphic/-/react-polymorphic-0.0.14.tgz", - "integrity": "sha512-9nsMZEDU3LeIUeHJrpkkhZVxu/9Fc7P2g2I3WR+uA9mTbNC3hGaabi0dV6wg0CfHb+m4nSs1pejbE/5no3MJTA==", - "requires": {} - }, - "@react-aria/ssr": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.1.0.tgz", - "integrity": "sha512-RxqQKmE8sO7TGdrcSlHTcVzMP450hqowtBSd2bBS9oPlcokVkaGq28c3Rwa8ty5ctw4EBCjXqjP7xdcKMGDzug==", - "requires": { - "@babel/runtime": "^7.6.2" + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "type-detect": "4.0.8" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@sinonjs/fake-timers": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.1.tgz", - "integrity": "sha512-Wp5vwlZ0lOqpSYGKqr53INws9HLkt6JDc/pDZcPf7bchQnrXJMXPns8CXx0hFikMSGSWfvtvvpb2gtMVfkWagA==", + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" + "engines": { + "node": ">=8" } }, - "@sinonjs/samsam": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", - "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "node_modules/jest-circus/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "requires": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true - }, - "@styled-system/background": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz", - "integrity": "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@styled-system/border": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz", - "integrity": "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@styled-system/color": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz", - "integrity": "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==", - "requires": { - "@styled-system/core": "^5.1.2" - } + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, - "@styled-system/core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz", - "integrity": "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==", - "requires": { - "object-assign": "^4.1.1" + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@styled-system/css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz", - "integrity": "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==" - }, - "@styled-system/flexbox": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz", - "integrity": "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "@styled-system/grid": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz", - "integrity": "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@styled-system/layout": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz", - "integrity": "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@styled-system/position": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz", - "integrity": "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@styled-system/props": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/props/-/props-5.1.5.tgz", - "integrity": "sha512-FXhbzq2KueZpGaHxaDm8dowIEWqIMcgsKs6tBl6Y6S0njG9vC8dBMI6WSLDnzMoSqIX3nSKHmOmpzpoihdDewg==", - "requires": { - "styled-system": "^5.1.5" + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@styled-system/shadow": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz", - "integrity": "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "@styled-system/space": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz", - "integrity": "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@styled-system/theme-get": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/theme-get/-/theme-get-5.1.2.tgz", - "integrity": "sha512-afAYdRqrKfNIbVgmn/2Qet1HabxmpRnzhFwttbGr6F/mJ4RDS/Cmn+KHwHvNXangQsWw/5TfjpWV+rgcqqIcJQ==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@styled-system/typography": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz", - "integrity": "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==", - "requires": { - "@styled-system/core": "^5.1.2" + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@styled-system/variant": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz", - "integrity": "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==", - "requires": { - "@styled-system/core": "^5.1.2", - "@styled-system/css": "^5.1.5" + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "@types/chai": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", - "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==", - "dev": true - }, - "@types/chai-as-promised": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.3.tgz", - "integrity": "sha512-FQnh1ohPXJELpKhzjuDkPLR2BZCAqed+a6xV4MI/T3XzHfd2FlarfUGUdZYgqYe8oxkYn0fchHEeHfHqdZ96sg==", + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "requires": { - "@types/chai": "*" + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/child-process-promise": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/child-process-promise/-/child-process-promise-2.2.1.tgz", - "integrity": "sha512-xZ4kkF82YkmqPCERqV9Tj0bVQj3Tk36BqGlNgxv5XhifgDRhwAqp+of+sccksdpZRbbPsNwMOkmUqOnLgxKtGw==", + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@types/node": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/classnames": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.10.tgz", - "integrity": "sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ==", - "dev": true - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/d3": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-6.7.5.tgz", - "integrity": "sha512-TUZ6zuT/KIvbHSv81kwAiO5gG5aTuoiLGnWR/KxHJ15Idy/xmGUXaaF5zMG+UMIsndcGlSHTmrvwRgdvZlNKaA==", - "dev": true, - "requires": { - "@types/d3-array": "^2", - "@types/d3-axis": "^2", - "@types/d3-brush": "^2", - "@types/d3-chord": "^2", - "@types/d3-color": "^2", - "@types/d3-contour": "^2", - "@types/d3-delaunay": "^5", - "@types/d3-dispatch": "^2", - "@types/d3-drag": "^2", - "@types/d3-dsv": "^2", - "@types/d3-ease": "^2", - "@types/d3-fetch": "^2", - "@types/d3-force": "^2", - "@types/d3-format": "^2", - "@types/d3-geo": "^2", - "@types/d3-hierarchy": "^2", - "@types/d3-interpolate": "^2", - "@types/d3-path": "^2", - "@types/d3-polygon": "^2", - "@types/d3-quadtree": "^2", - "@types/d3-random": "^2", - "@types/d3-scale": "^3", - "@types/d3-scale-chromatic": "^2", - "@types/d3-selection": "^2", - "@types/d3-shape": "^2", - "@types/d3-time": "^2", - "@types/d3-time-format": "^3", - "@types/d3-timer": "^2", - "@types/d3-transition": "^2", - "@types/d3-zoom": "^2" - } - }, - "@types/d3-array": { - "version": "2.12.3", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-2.12.3.tgz", - "integrity": "sha512-hN879HLPTVqZV3FQEXy7ptt083UXwguNbnxdTGzVW4y4KjX5uyNKljrQixZcSJfLyFirbpUokxpXtvR+N5+KIg==", + "node_modules/jest-config/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "@types/d3-axis": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-2.1.3.tgz", - "integrity": "sha512-QjXjwZ0xzyrW2ndkmkb09ErgWDEYtbLBKGui73QLMFm3woqWpxptfD5Y7vqQdybMcu7WEbjZ5q+w2w5+uh2IjA==", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/d3-selection": "^2" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/d3-brush": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-2.1.2.tgz", - "integrity": "sha512-DnZmjdK1ycX1CMiW9r5E3xSf1tL+bp3yob1ON8bf0xB0/odfmGXeYOTafU+2SmU1F0/dvcqaO4SMjw62onOu6A==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, - "requires": { - "@types/d3-selection": "^2" + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/d3-chord": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-2.0.3.tgz", - "integrity": "sha512-koIqSNQLPRQPXt7c55hgRF6Lr9Ps72r1+Biv55jdYR+SHJ463MsB2lp4ktzttFNmrQw/9yWthf/OmSUj5dNXKw==", - "dev": true - }, - "@types/d3-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz", - "integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w==", - "dev": true - }, - "@types/d3-contour": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-2.0.4.tgz", - "integrity": "sha512-WMac1xV/mXAgkgr5dUvzsBV5OrgNZDBDpJk9s3v2SadTqGgDRirKABb2Ek2H1pFlYVH4Oly9XJGnuzxKDduqWA==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@types/d3-array": "^2", - "@types/geojson": "*" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/d3-delaunay": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-5.3.1.tgz", - "integrity": "sha512-F6itHi2DxdatHil1rJ2yEFUNhejj8+0Acd55LZ6Ggwbdoks0+DxVY2cawNj16sjCBiWvubVlh6eBMVsYRNGLew==", - "dev": true - }, - "@types/d3-dispatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-2.0.1.tgz", - "integrity": "sha512-eT2K8uG3rXkmRiCpPn0rNrekuSLdBfV83vbTvfZliA5K7dbeaqWS/CBHtJ9SQoF8aDTsWSY4A0RU67U/HcKdJQ==", - "dev": true - }, - "@types/d3-drag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-2.0.2.tgz", - "integrity": "sha512-m9USoFaTgVw2mmE7vLjWTApT9dMxMlql/dl3Gj503x+1a2n6K455iDWydqy2dfCpkUBCoF82yRGDgcSk9FUEyQ==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@types/d3-selection": "^2" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@types/d3-dsv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-2.0.2.tgz", - "integrity": "sha512-T4aL2ZzaILkLGKbxssipYVRs8334PSR9FQzTGftZbc3jIPGkiXXS7qUCh8/q8UWFzxBZQ92dvR0v7+AM9wL2PA==", - "dev": true - }, - "@types/d3-ease": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-2.0.1.tgz", - "integrity": "sha512-Af1ftZXv82ktPCk1+Vxe7f+VSfxDsQ1mwwakDl17+UzI/ii3vsDIAzaBDDSEQd2Cg9BYPTSx8wXH8rJNDuSjeg==", - "dev": true - }, - "@types/d3-fetch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-2.0.2.tgz", - "integrity": "sha512-sllsCSWrNdSvzOJWN5RnxkmtvW9pCttONGajSxHX9FUQ9kOkGE391xlz6VDBdZxLnpwjp3I+mipbwsaCjq4m5A==", + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@types/d3-dsv": "^2" + "engines": { + "node": ">=8" } }, - "@types/d3-force": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz", - "integrity": "sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ==", - "dev": true - }, - "@types/d3-format": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-2.0.2.tgz", - "integrity": "sha512-OhQPuTeeMhD9A0Ksqo4q1S9Z1Q57O/t4tTPBxBQxRB4IERnxeoEYLPe72fA/GYpPSUrfKZVOgLHidkxwbzLdJA==", - "dev": true - }, - "@types/d3-geo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-2.0.3.tgz", - "integrity": "sha512-kFwLEMXq1mGJ2Eho7KrOUYvLcc2YTDeKj+kTFt87JlEbRQ0rgo8ZENNb5vTYmZrJ2xL/vVM5M7yqVZGOPH2JFg==", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "requires": { - "@types/geojson": "*" + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/d3-graphviz": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@types/d3-graphviz/-/d3-graphviz-2.6.7.tgz", - "integrity": "sha512-dKJjD5HiFvAmC0FL/c70VB1diie8FCpyiCZfxMlf6TwYBqUyFvS4XJt6MoxjIuQTJhKDBGzrIvDOgM8gYMLSVA==", + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@types/d3-selection": "^1", - "@types/d3-transition": "^1", - "@types/d3-zoom": "^1" + "engines": { + "node": ">=10" }, - "dependencies": { - "@types/d3-color": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.4.2.tgz", - "integrity": "sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA==", - "dev": true - }, - "@types/d3-interpolate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz", - "integrity": "sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg==", - "dev": true, - "requires": { - "@types/d3-color": "^1" - } - }, - "@types/d3-selection": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.3.tgz", - "integrity": "sha512-GjKQWVZO6Sa96HiKO6R93VBE8DUW+DDkFpIMf9vpY5S78qZTlRRSNUsHr/afDpF7TvLDV7VxrUFOWW7vdIlYkA==", - "dev": true - }, - "@types/d3-transition": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-J+a3SuF/E7wXbOSN19p8ZieQSFIm5hU2Egqtndbc54LXaAEOpLfDx4sBu/PKAKzHOdgKK1wkMhINKqNh4aoZAg==", - "dev": true, - "requires": { - "@types/d3-selection": "^1" - } - }, - "@types/d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-3kHkL6sPiDdbfGhzlp5gIHyu3kULhtnHTTAl3UBZVtWB1PzcLL8vdmz5mTx7plLiUqOA2Y+yT2GKjt/TdA2p7Q==", - "dev": true, - "requires": { - "@types/d3-interpolate": "^1", - "@types/d3-selection": "^1" - } - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/d3-hierarchy": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-2.0.2.tgz", - "integrity": "sha512-6PlBRwbjUPPt0ZFq/HTUyOAdOF3p73EUYots74lHMUyAVtdFSOS/hAeNXtEIM9i7qRDntuIblXxHGUMb9MuNRA==", + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "@types/d3-interpolate": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-2.0.2.tgz", - "integrity": "sha512-lElyqlUfIPyWG/cD475vl6msPL4aMU7eJvx1//Q177L8mdXoVPFl1djIESF2FKnc0NyaHvQlJpWwKJYwAhUoCw==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/d3-color": "^2" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/d3-path": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.1.tgz", - "integrity": "sha512-6K8LaFlztlhZO7mwsZg7ClRsdLg3FJRzIIi6SZXDWmmSJc2x8dd2VkESbLXdk3p8cuvz71f36S0y8Zv2AxqvQw==", - "dev": true - }, - "@types/d3-polygon": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-2.0.1.tgz", - "integrity": "sha512-X3XTIwBxlzRIWe4yaD1KsmcfItjSPLTGL04QDyP08jyHDVsnz3+NZJMwtD4vCaTAVpGSjbqS+jrBo8cO2V/xMA==", - "dev": true - }, - "@types/d3-quadtree": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-2.0.2.tgz", - "integrity": "sha512-KgWL4jlz8QJJZX01E4HKXJ9FLU94RTuObsAYqsPp8YOAcYDmEgJIQJ+ojZcnKUAnrUb78ik8JBKWas5XZPqJnQ==", - "dev": true - }, - "@types/d3-random": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-2.2.1.tgz", - "integrity": "sha512-5vvxn6//poNeOxt1ZwC7QU//dG9QqABjy1T7fP/xmFHY95GnaOw3yABf29hiu5SR1Oo34XcpyHFbzod+vemQjA==", - "dev": true - }, - "@types/d3-scale": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", - "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, - "requires": { - "@types/d3-time": "^2" + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/d3-scale-chromatic": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-2.0.1.tgz", - "integrity": "sha512-3EuZlbPu+pvclZcb1DhlymTWT2W+lYsRKBjvkH2ojDbCWDYavifqu1vYX9WGzlPgCgcS4Alhk1+zapXbGEGylQ==", - "dev": true - }, - "@types/d3-selection": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-2.0.1.tgz", - "integrity": "sha512-3mhtPnGE+c71rl/T5HMy+ykg7migAZ4T6gzU0HxpgBFKcasBrSnwRbYV1/UZR6o5fkpySxhWxAhd7yhjj8jL7g==", - "dev": true - }, - "@types/d3-shape": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", - "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "requires": { - "@types/d3-path": "^2" + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==", - "dev": true - }, - "@types/d3-time-format": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-3.0.1.tgz", - "integrity": "sha512-5GIimz5IqaRsdnxs4YlyTZPwAMfALu/wA4jqSiuqgdbCxUZ2WjrnwANqOtoBJQgeaUTdYNfALJO0Yb0YrDqduA==", - "dev": true - }, - "@types/d3-timer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.1.tgz", - "integrity": "sha512-TF8aoF5cHcLO7W7403blM7L1T+6NF3XMyN3fxyUolq2uOcFeicG/khQg/dGxiCJWoAcmYulYN7LYSRKO54IXaA==", - "dev": true - }, - "@types/d3-transition": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-2.0.2.tgz", - "integrity": "sha512-376TICEykdXOEA9uUIYpjshEkxfGwCPnkHUl8+6gphzKbf5NMnUhKT7wR59Yxrd9wtJ/rmE3SVLx6/8w4eY6Zg==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@types/d3-selection": "^2" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/d3-zoom": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-2.0.3.tgz", - "integrity": "sha512-9X9uDYKk2U8w775OHj36s9Q7GkNAnJKGw6+sbkP5DpHSjELwKvTGzEK6+IISYfLpJRL/V3mRXMhgDnnJ5LkwJg==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@types/d3-interpolate": "^2", - "@types/d3-selection": "^2" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@types/del": { + "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/del/-/del-4.0.0.tgz", - "integrity": "sha512-LDE5atstX5kKnTobWknpmGHC52DH/tp8pIVsD2SSxaOFqW3AQr0EpdzYIfkZ331xe7l9Vn9NlJsBG6viU3mjBA==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "del": "*" + "engines": { + "node": ">=8" } }, - "@types/eslint": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", - "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "node_modules/jest-each/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "@types/fs-extra": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz", - "integrity": "sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==", - "dev": true - }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/glob-stream": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.1.tgz", - "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "node_modules/jest-environment-node/node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, - "requires": { - "@types/glob": "*", - "@types/node": "*" + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/google-protobuf": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.7.2.tgz", - "integrity": "sha512-ifFemzjNchFBCtHS6bZNhSZCBu7tbtOe0e8qY0z2J4HtFXmPJjm6fXSaQsTG7yhShBEZtt2oP/bkwu5k+emlkQ==", - "dev": true - }, - "@types/gulp": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.9.tgz", - "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "node_modules/jest-environment-node/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "requires": { - "@types/undertaker": "*", - "@types/vinyl-fs": "*", - "chokidar": "^3.3.1" - }, "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/gulp-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/gulp-replace/-/gulp-replace-1.1.0.tgz", - "integrity": "sha512-nRV4sV2Kc4s1MvQ1H/ZE9tjHxIuyhOliVTVmtcDxVvgngAX9nNgaf1rey6q67J8wVIKQxihCsToHXNB+FXb5kw==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "requires": { - "gulp-replace": "*" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/gulp-sourcemaps": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/gulp-sourcemaps/-/gulp-sourcemaps-0.0.32.tgz", - "integrity": "sha512-+7BAmptW2bxyJnJcCEuie7vLoop3FwWgCdBMzyv7MYXED/HeNMeQuX7uPCkp4vfU1TTu4CYFH0IckNPvo0VePA==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/js-yaml": { - "version": "3.12.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.5.tgz", - "integrity": "sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/jszip": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/jszip/-/jszip-3.1.7.tgz", - "integrity": "sha512-+XQKNI5zpxutK05hO67huUTw/2imXCuJWjnFdU63tRES/xXSX1yVR9cv/QAdO6Rii2y2tTHbzjQ4i2apLfuK0Q==", + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@types/node": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "@types/nanoid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/nanoid/-/nanoid-3.0.0.tgz", - "integrity": "sha512-UXitWSmXCwhDmAKe7D3hNQtQaHeHt5L8LO1CB8GF8jlYVzOv5cBWDNqiJ+oPEWrWei3i3dkZtHY/bUtd0R/uOQ==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, - "requires": { - "nanoid": "*" + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/node": { - "version": "16.11.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", - "integrity": "sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ==" + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "@types/node-fetch": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", - "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@types/parse-json": { + "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" - }, - "@types/proxyquire": { - "version": "1.3.28", - "resolved": "https://registry.npmjs.org/@types/proxyquire/-/proxyquire-1.3.28.tgz", - "integrity": "sha512-SQaNzWQ2YZSr7FqAyPPiA3FYpux2Lqh3HWMZQk47x3xbMCqgC/w0dY3dw9rGqlweDDkrySQBcaScXWeR+Yb11Q==", - "dev": true + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "@types/react": { - "version": "17.0.39", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.39.tgz", - "integrity": "sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/react-dom": { - "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", - "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@types/react": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/sarif": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.2.tgz", - "integrity": "sha512-TELZl5h48KaB6SFZqTuaMEw1hrGuusbBcH+yfMaaHdS2pwDr3RTH4CVN0LyY1kqSiDm9PPvAMx8FJ0LUZreOCQ==", + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/semver": { + "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.2.0.tgz", - "integrity": "sha512-TbB0A8ACUWZt3Y6bQPstW9QNbhNeebdgLX4T/ZfkrswAfUzRiXrgd9seol+X379Wa589Pu4UEx9Uok0D4RjRCQ==", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/sinon": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.2.tgz", - "integrity": "sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg==", - "dev": true - }, - "@types/sinon-chai": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.4.tgz", - "integrity": "sha512-xq5KOWNg70PRC7dnR2VOxgYQ6paumW+4pTZP+6uTSdhpYsAUEeeT5bw6rRHHQrZ4KyR+M5ojOR+lje6TGSpUxA==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, - "requires": { - "@types/chai": "*", - "@types/sinon": "*" + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/stream-chain": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stream-chain/-/stream-chain-2.0.1.tgz", - "integrity": "sha512-D+Id9XpcBpampptkegH7WMsEk6fUdf9LlCIX7UhLydILsqDin4L0QT7ryJR0oycwC7OqohIzdfcMHVZ34ezNGg==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/stream-json": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@types/stream-json/-/stream-json-1.7.1.tgz", - "integrity": "sha512-BNIK/ix6iJvWvoXbDVVJhw5LNG1wie/rXcUo7jw4hBqY3FhIrg0e+RMXFN5UreKclBIStl9FDEHNSDLuuQ9/MQ==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@types/node": "*", - "@types/stream-chain": "*" - } - }, - "@types/styled-components": { - "version": "5.1.11", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.11.tgz", - "integrity": "sha512-u8g3bSw9KUiZY+S++gh+LlURGraqBe3MC5I5dygrNjGDHWWQfsmZZRTJ9K9oHU2CqWtxChWmJkDI/gp+TZPQMw==", - "requires": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "csstype": "^3.0.2" - } - }, - "@types/styled-system": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/@types/styled-system/-/styled-system-5.1.12.tgz", - "integrity": "sha512-7x4BYKKfK9QewfsFC2x5r9BK/OrfX+JF/1P21jKPMHruawDw9gvG7bTZgTVk6YkzDO2JUlsk4i8hdiAepAhD0g==", - "requires": { - "csstype": "^3.0.2" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@types/styled-system__css": { - "version": "5.0.16", - "resolved": "https://registry.npmjs.org/@types/styled-system__css/-/styled-system__css-5.0.16.tgz", - "integrity": "sha512-Cji5miCIpR27m8yzH6y3cLU6106N4GVyPgUhBQ4nL7VxgoeAtRdAriKdGTnRgJzSpT3HyB7h5G//cDWOl0M1jQ==", - "requires": { - "csstype": "^3.0.2" + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "@types/styled-system__theme-get": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/styled-system__theme-get/-/styled-system__theme-get-5.0.1.tgz", - "integrity": "sha512-+i4VZ5wuYKMU8oKPmUlzc9r2RhpSNOK061Khtrr7X0sOQEcIyhUtrDusuMkp5ZR3D05Xopn3zybTPyUSQkKGAA==" - }, - "@types/through2": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/@types/through2/-/through2-2.0.36.tgz", - "integrity": "sha512-vuifQksQHJXhV9McpVsXKuhnf3lsoX70PnhcqIAbs9dqLH2NgrGz0DzZPDY3+Yh6eaRqcE1gnCQ6QhBn1/PT5A==", + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@types/tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA==", - "dev": true - }, - "@types/undertaker": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.7.tgz", - "integrity": "sha512-xuY7nBwo1zSRoY2aitp/HArHfTulFAKql2Fr4b4mWbBBP+F50n7Jm6nwISTTMaDk2xvl92O10TTejVF0Q9mInw==", + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@types/node": "*", - "@types/undertaker-registry": "*", - "async-done": "~1.3.2" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "@types/unzipper": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.10.3.tgz", - "integrity": "sha512-01mQdTLp3/KuBVDhP82FNBf+enzVOjJ9dGsCWa5z8fcYAFVgA9bqIQ2NmsgNFzN/DhD0PUQj4n5p7k6I9mq80g==", + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, - "requires": { - "@types/expect": "^1.20.4", - "@types/node": "*" + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "@types/vinyl-fs": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", - "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", + "node_modules/jest-mock/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, - "requires": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "@types/vscode": { - "version": "1.63.1", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.63.1.tgz", - "integrity": "sha512-Z+ZqjRcnGfHP86dvx/BtSwWyZPKQ/LBdmAVImY82TphyjOw2KgTKcp7Nx92oNwCTsHzlshwexAG/WiY2JuUm3g==", - "dev": true - }, - "@types/webpack": { - "version": "5.28.0", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.0.tgz", - "integrity": "sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==", + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "tapable": "^2.2.0", - "webpack": "^5" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, - "dependencies": { - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "@types/xml2js": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.5.tgz", - "integrity": "sha512-yohU3zMn0fkhlape1nxXG2bLEGZRc1FeqF80RoHaYXJN7uibaauXfhzhOJr1Xh36sn+/tx21QAOf07b/xYVk1w==", + "node_modules/jest-mock/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "requires": { - "@types/node": "*" - } + "license": "MIT" }, - "@typescript-eslint/eslint-plugin": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.0.tgz", - "integrity": "sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg==", + "node_modules/jest-mock/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.26.0", - "@typescript-eslint/scope-manager": "4.26.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.21", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@typescript-eslint/experimental-utils": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.0.tgz", - "integrity": "sha512-TH2FO2rdDm7AWfAVRB5RSlbUhWxGVuxPNzGT7W65zVfl8H/WeXTk1e69IrcEVsBslrQSTDKQSaJD89hwKrhdkw==", + "node_modules/jest-mock/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.26.0", - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/typescript-estree": "4.26.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@typescript-eslint/parser": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.26.0.tgz", - "integrity": "sha512-b4jekVJG9FfmjUfmM4VoOItQhPlnt6MPOBUL0AQbiTmm+SSpSdhHYlwayOm4IW9KLI/4/cRKtQCmDl1oE2OlPg==", + "node_modules/jest-mock/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.26.0", - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/typescript-estree": "4.26.0", - "debug": "^4.3.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" } + ], + "license": "MIT", + "engines": { + "node": ">=8" } }, - "@typescript-eslint/scope-manager": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.26.0.tgz", - "integrity": "sha512-G6xB6mMo4xVxwMt5lEsNTz3x4qGDt0NSGmTBNBPJxNsrTXJSm21c6raeYroS2OwQsOyIXqKZv266L/Gln1BWqg==", + "node_modules/jest-mock/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/visitor-keys": "4.26.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "@typescript-eslint/types": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.26.0.tgz", - "integrity": "sha512-rADNgXl1kS/EKnDr3G+m7fB9yeJNnR9kF7xMiXL6mSIWpr3Wg5MhxyfEXy/IlYthsqwBqHOr22boFbf/u6O88A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.0.tgz", - "integrity": "sha512-GHUgahPcm9GfBuy3TzdsizCcPjKOAauG9xkz9TR8kOdssz2Iz9jRCSQm6+aVFa23d5NcSpo1GdHGSQKe0tlcbg==", + "node_modules/jest-mock/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.26.0", - "@typescript-eslint/visitor-keys": "4.26.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "@typescript-eslint/visitor-keys": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.0.tgz", - "integrity": "sha512-cw4j8lH38V1ycGBbF+aFiLUls9Z0Bw8QschP3mkth50BbWzgFS33ISIgBzUMuQ2IdahoEv/rXstr8Zhlz4B1Zg==", + "node_modules/jest-mock/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.26.0", - "eslint-visitor-keys": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=12" }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "@vscode/codicons": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.31.tgz", - "integrity": "sha512-fldpXy7pHsQAMlU1pnGI23ypQ6xLk5u6SiABMFoAmlj4f2MR0iwg7C19IB1xvAEGG+dkxOfRSrbKF8ry7QqGQA==" - }, - "@vscode/webview-ui-toolkit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.0.0.tgz", - "integrity": "sha512-/qaHYZXqvIKkao54b7bLzyNH8BC+X4rBmTUx1MvcIiCjqRMxml0BCpqJhnDpfrCb0IOxXRO8cAy1eB5ayzQfBA==", - "requires": { - "@microsoft/fast-element": "^1.6.2", - "@microsoft/fast-foundation": "^2.38.0", - "@microsoft/fast-react-wrapper": "^0.1.18" - }, - "dependencies": { - "@microsoft/fast-react-wrapper": { - "version": "0.1.48", - "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz", - "integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==", - "requires": { - "@microsoft/fast-element": "^1.9.0", - "@microsoft/fast-foundation": "^2.41.1" - } - } + "node_modules/jest-mock/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@xtuc/long": "4.2.2" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "engines": { + "node": ">=8" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "node_modules/jest-runner-vscode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jest-runner-vscode/-/jest-runner-vscode-3.0.1.tgz", + "integrity": "sha512-QTiOK2zcI4CLWa8Ejbigz/k8SYQsFLYY1KWNfR5qR2Ajs98P1yHZSBqVLIq+VRnxxT5dqKzTsg/StD8dWfHqHg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" + "dependencies": { + "@achrinza/node-ipc": "^9.2.5", + "@jest/core": "^29.2.1", + "@jest/reporters": "^29.2.1", + "@jest/test-result": "^29.2.1", + "@jest/types": "^29.2.1", + "@vscode/test-electron": "^2.1.5", + "cosmiconfig": "^7.0.1", + "jest-cli": "^29.2.1", + "jest-environment-node": "^29.2.1", + "jest-runner": "^29.2.1", + "js-message": "^1.0.7" + }, + "engines": { + "node": ">=16.14.2", + "vscode": ">=1.71.0" + }, + "funding": { + "url": "https://github.com/sponsors/adalinesimonian" } }, - "@webpack-cli/configtest": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz", - "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", + "node_modules/jest-runner-vscode/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.3.tgz", - "integrity": "sha512-lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" } }, - "@webpack-cli/serve": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz", - "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", + "node_modules/jest-runner-vscode/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true + "engines": { + "node": ">= 6" + } }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/jest-runner/node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, - "requires": { - "debug": "4" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": {} - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "engines": { + "node": ">=8" + } }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "node_modules/jest-runner/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, + "license": "MIT", "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "ansi-wrap": "0.1.0" + "engines": { + "node": ">=0.10.0" } }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, - "requires": { - "buffer-equal": "^1.0.0" + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "applicationinsights": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.8.7.tgz", - "integrity": "sha512-+HENzPBdSjnWL9mc+9o+j9pEaVNI4WsH5RNvfmRLfwQYvbJumcBi4S5bUzclug5KCcFP0S4bYJOmm9MV3kv2GA==", + "node_modules/jest-runtime/node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, - "requires": { - "cls-hooked": "^4.2.2", - "continuation-local-storage": "^3.2.1", - "diagnostic-channel": "0.3.1", - "diagnostic-channel-publishers": "0.4.1" + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archiver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", - "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "arr-diff": { + "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "make-iterator": "^1.0.0" + "engines": { + "node": ">=8" } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "node_modules/jest-runtime/node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "requires": { - "make-iterator": "^1.0.0" + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "is-number": "^4.0.0" - }, "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", - "requires": { - "stack-chain": "^1.3.7" + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "requires": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "async-done": "^1.2.2" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "azure-devops-node-api": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz", - "integrity": "sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "babel-plugin-styled-components": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz", - "integrity": "sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "before-after-hook": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz", - "integrity": "sha512-/6FKxSTWoJdbsLDF8tdIjaRiFXiE6UHsEHE3OPI/cwPURCVi1ukP0gmLn7XWEiFk5TcwQjjY5PWsU+j+tgXgmw==" - }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "binaryextensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-indexof-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", - "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=" - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "caniuse-lite": { - "version": "1.0.30001245", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", - "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==", - "dev": true - }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "check-error": "^1.0.2" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": ">=0.3.0 <0.4" + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dev": true, - "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" + "has-flag": "^4.0.0" }, - "dependencies": { - "tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, - "requires": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "child-process-promise": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz", - "integrity": "sha1-RzChHvYQ+tRQuPIjx50x172tgHQ=", - "requires": { - "cross-spawn": "^4.0.2", - "node-version": "^1.0.0", - "promise-polyfill": "^6.0.1" + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "node_modules/jest/node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, - "requires": { - "tslib": "^1.9.0" + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/jest/node_modules/@jest/core": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/jest/node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, - "requires": { - "restore-cursor": "^3.1.0" + "license": "MIT", + "dependencies": { + "expect": "30.2.0", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } + "node_modules/jest/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true + "node_modules/jest/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "node_modules/jest/node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest/node_modules/@jest/reporters": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "node_modules/jest/node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "requires": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" - }, + "node_modules/jest/node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, + "license": "MIT", "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "node_modules/jest/node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/jest/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" + "node_modules/jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "node_modules/jest/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true + "node_modules/jest/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } }, - "color2k": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/color2k/-/color2k-1.2.4.tgz", - "integrity": "sha512-DiwdBwc0BryPFFXoCrW8XQGXl2rEtMToODybxZjKnN5IJXt/tV/FsN02pCK/b7KcWvJEioz3c74lQSmayFvS4Q==" - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "commandpost": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz", - "integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==", - "dev": true - }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/jest/node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "requires": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" + "license": "MIT", + "dependencies": { + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/jest/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, - "requires": { - "safe-buffer": "~5.1.1" + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "node_modules/jest/node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, - "requires": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - }, + "license": "MIT", "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - } + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "core-js-pure": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/jest/node_modules/babel-preset-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "dependencies": { - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" - }, - "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, + "license": "MIT", "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "node_modules/jest/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "node_modules/jest/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, + "license": "MIT", "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - } + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - }, - "css-loader": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.1.0.tgz", - "integrity": "sha512-MuL8WsF/KSrHCBCYaozBKlx+r7vIfUaDTEreo7wR7Vv3J6N0z6fqWjRk3e/6wjneitXN1r/Y9FTK1psYNOBdJQ==", + "node_modules/jest/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.17", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.0", - "schema-utils": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "node_modules/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "css-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" + "node_modules/jest/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" } }, - "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "d3": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-6.7.0.tgz", - "integrity": "sha512-hNHRhe+yCDLUG6Q2LwvR/WdNFPOJQ5VWqsJcwIYVeI401+d2/rrCjxSXkiAdIlpx7/73eApFB4Olsmh3YN7a6g==", - "requires": { - "d3-array": "2", - "d3-axis": "2", - "d3-brush": "2", - "d3-chord": "2", - "d3-color": "2", - "d3-contour": "2", - "d3-delaunay": "5", - "d3-dispatch": "2", - "d3-drag": "2", - "d3-dsv": "2", - "d3-ease": "2", - "d3-fetch": "2", - "d3-force": "2", - "d3-format": "2", - "d3-geo": "2", - "d3-hierarchy": "2", - "d3-interpolate": "2", - "d3-path": "2", - "d3-polygon": "2", - "d3-quadtree": "2", - "d3-random": "2", - "d3-scale": "3", - "d3-scale-chromatic": "2", - "d3-selection": "2", - "d3-shape": "2", - "d3-time": "2", - "d3-time-format": "3", - "d3-timer": "2", - "d3-transition": "2", - "d3-zoom": "2" - } - }, - "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "requires": { - "internmap": "^1.0.0" - } - }, - "d3-axis": { + "node_modules/jest/node_modules/cjs-module-lexer": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz", - "integrity": "sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw==" + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", + "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", + "dev": true, + "license": "MIT" }, - "d3-brush": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", - "integrity": "sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "node_modules/jest/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "d3-chord": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-2.0.0.tgz", - "integrity": "sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig==", - "requires": { - "d3-path": "1 - 2" + "node_modules/jest/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" - }, - "d3-contour": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-2.0.0.tgz", - "integrity": "sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA==", - "requires": { - "d3-array": "2" + "node_modules/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", - "requires": { - "delaunator": "4" + "node_modules/jest/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" } }, - "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "d3-drag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", - "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-selection": "2" + "node_modules/jest/node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" } }, - "d3-dsv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", - "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", - "requires": { - "commander": "2", - "iconv-lite": "0.4", - "rw": "1" - }, + "node_modules/jest/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" - }, - "d3-fetch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-2.0.0.tgz", - "integrity": "sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw==", - "requires": { - "d3-dsv": "1 - 2" + "node_modules/jest/node_modules/jest-changed-files": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.2.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "d3-force": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", - "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-quadtree": "1 - 2", - "d3-timer": "1 - 2" + "node_modules/jest/node_modules/jest-circus": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "p-limit": "^3.1.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" - }, - "d3-geo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", - "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", - "requires": { - "d3-array": "^2.5.0" + "node_modules/jest/node_modules/jest-cli": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "d3-graphviz": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-2.6.1.tgz", - "integrity": "sha512-878AFSagQyr5tTOrM7YiVYeUC2/NoFcOB3/oew+LAML0xekyJSw9j3WOCUMBsc95KYe9XBYZ+SKKuObVya1tJQ==", - "requires": { - "d3-dispatch": "^1.0.3", - "d3-format": "^1.2.0", - "d3-interpolate": "^1.1.5", - "d3-path": "^1.0.5", - "d3-selection": "^1.1.0", - "d3-timer": "^1.0.6", - "d3-transition": "^1.1.1", - "d3-zoom": "^1.5.0", - "viz.js": "^1.8.2" - }, - "dependencies": { - "d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" - }, - "d3-dispatch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" - }, - "d3-drag": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", - "requires": { - "d3-dispatch": "1", - "d3-selection": "1" - } - }, - "d3-ease": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" - }, - "d3-format": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" - }, - "d3-interpolate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", - "requires": { - "d3-color": "1" - } - }, - "d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" - }, - "d3-selection": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" - }, - "d3-timer": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + "node_modules/jest/node_modules/jest-config": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", + "parse-json": "^5.2.0", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true }, - "d3-transition": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", - "requires": { - "d3-color": "1", - "d3-dispatch": "1", - "d3-ease": "1", - "d3-interpolate": "1", - "d3-selection": "^1.1.0", - "d3-timer": "1" - } + "esbuild-register": { + "optional": true }, - "d3-zoom": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", - "requires": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } + "ts-node": { + "optional": true } } }, - "d3-hierarchy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", - "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" - }, - "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", - "requires": { - "d3-color": "1 - 2" - } - }, - "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" - }, - "d3-polygon": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-2.0.0.tgz", - "integrity": "sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ==" - }, - "d3-quadtree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", - "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" - }, - "d3-random": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", - "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" - }, - "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", - "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" - } - }, - "d3-scale-chromatic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz", - "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==", - "requires": { - "d3-color": "1 - 2", - "d3-interpolate": "1 - 2" - } - }, - "d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" - }, - "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", - "requires": { - "d3-path": "1 - 2" + "node_modules/jest/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", - "requires": { - "d3-array": "2" + "node_modules/jest/node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", - "requires": { - "d3-time": "1 - 2" + "node_modules/jest/node_modules/jest-each": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", - "requires": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" + "node_modules/jest/node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "d3-zoom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", - "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", - "requires": { - "d3-dispatch": "1 - 2", - "d3-drag": "2", - "d3-interpolate": "1 - 2", - "d3-selection": "2", - "d3-transition": "2" + "node_modules/jest/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/jest/node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", "dev": true, - "requires": { - "ms": "2.0.0" + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "requires": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "node_modules/jest/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/jest/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, - "requires": { - "mimic-response": "^3.1.0" + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "node_modules/jest/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, - "requires": { - "type-detect": "^4.0.0" + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "node_modules/jest/node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", "dev": true, - "requires": { - "kind-of": "^5.0.2" - }, + "license": "MIT", "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/jest/node_modules/jest-resolve-dependencies": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", "dev": true, - "requires": { - "object-keys": "^1.0.12" + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/jest/node_modules/jest-runner": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest/node_modules/jest-runtime": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diagnostic-channel": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.3.1.tgz", - "integrity": "sha512-6eb9YRrimz8oTr5+JDzGmSYnXy5V7YnK5y/hd8AUDK1MssHjQKm9LlD6NSrHx4vMDF3+e/spI2hmWTviElgWZA==", + "node_modules/jest/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, - "requires": { - "semver": "^5.3.0" - }, + "license": "MIT", "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "diagnostic-channel-publishers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.4.1.tgz", - "integrity": "sha512-NpZ7IOVUfea/kAx4+ub4NIYZyRCSymjXM5BZxnThs3ul9gAKqjm7J8QDDQW3Ecuo2XxjNLoWLeKmrPUWKNZaYw==", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/jest/node_modules/jest-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, - "requires": { - "path-type": "^4.0.0" - }, + "license": "MIT", "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/jest/node_modules/jest-watcher": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", "dev": true, - "requires": { - "esutils": "^2.0.2" + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.2.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "node_modules/jest/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domhandler": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", - "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "node_modules/jest/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "requires": { - "domelementtype": "^2.2.0" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "domutils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", - "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "node_modules/jest/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } + "license": "ISC" }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "requires": { - "readable-stream": "^2.0.2" + "node_modules/jest/node_modules/minimatch": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz", + "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "node_modules/jest/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "node_modules/jest/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "node_modules/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, + "license": "MIT", "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "electron-to-chromium": { - "version": "1.3.775", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.775.tgz", - "integrity": "sha512-EGuiJW4yBPOTj2NtWGZcX93ZE8IGj33HJAx4d3ouE2zOfW2trbWU+t1e0yzLr1qQIw81++txbM3BH52QwSRE6Q==", - "dev": true - }, - "emitter-component": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", - "integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=" - }, - "emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "requires": { - "shimmer": "^1.2.0" + "node_modules/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "node_modules/jest/node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } + "node_modules/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, - "enhanced-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz", - "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==", + "node_modules/jest/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/jest/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "requires": { - "ansi-colors": "^4.1.1" + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "envinfo": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", - "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "node_modules/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "prr": "~1.0.1" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/jest/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "engines": { + "node": ">=0.6.0" } }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jschardet": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-3.1.3.tgz", + "integrity": "sha512-Q1PKVMK/uu+yjdlobgWIYkUOCR1SqUmW9m/eUJNNj4zI2N12i25v8fYpVf+zCakQeaTdBdhnZTFbVIAVZIVVOg==", "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "engines": { + "node": ">=0.1.90" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "node_modules/jsdom": { + "version": "27.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.1.tgz", + "integrity": "sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==", "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "license": "MIT", + "dependencies": { + "@asamuzakjp/dom-selector": "^6.7.2", + "cssstyle": "^5.3.1", + "data-urls": "^6.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "parse5": "^8.0.0", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^15.1.0", + "ws": "^8.18.3", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "node_modules/jsdom/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "node_modules/jsdom/node_modules/parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "node_modules/json-stable-stringify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz", + "integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==", "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "eslint-plugin-react": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", - "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "requires": { - "array-includes": "^3.1.1", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, + "license": "MIT", "dependencies": { - "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", - "dev": true - } + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz", + "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==", "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, + "license": "MIT", "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } + "jwa": "^1.4.2", + "safe-buffer": "^5.0.1" } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" } }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "exenv-es6": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz", - "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==" - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "node_modules/jszip/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "dev": true, - "requires": { - "type": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/katex": { + "version": "0.16.21", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz", + "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==", "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" } }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } + "graceful-fs": "^4.1.11" } }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true + "node_modules/koffi": { + "version": "2.15.5", + "resolved": "https://registry.npmjs.org/koffi/-/koffi-2.15.5.tgz", + "integrity": "sha512-4/35/oOpnH9tzrpWAC3ObjAERBSe0Q0Dh2NP1eBBPRGpohEj4vFw2+7tej9W9MTExvk0vtF0PjMqIGG4rf6feQ==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "url": "https://liberapay.com/Koromix" + } }, - "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", "dev": true, - "requires": { - "reusify": "^1.0.4" - } + "license": "CC0-1.0" }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, - "requires": { - "pend": "~1.2.0" + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/last-run": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", + "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==", "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" + "engines": { + "node": ">= 10.13.0" } }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, - "requires": { - "flat-cache": "^2.0.1" + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" } }, - "file-uri-to-path": { + "node_modules/lead": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz", - "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", "dev": true, - "requires": { - "is-object": "~1.0.1", - "merge-descriptors": "~1.0.0" + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "node_modules/less": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.3.0.tgz", + "integrity": "sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "requires": { - "semver-regex": "^3.1.2" + "engines": { + "node": ">=6" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "dependencies": { + "immediate": "~3.0.5" } }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "node_modules/liftoff": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.1.tgz", + "integrity": "sha512-wwLXMbuxSF8gMvubFcFRp56lkFV69twvbU5vDPbaw+Q+/rF8j0HKjGbIdlSi+LuJm9jf7k9PB+nTxnsLMPcv2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "focus-visible": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", - "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, - "requires": { - "for-in": "^1.0.1" + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" } }, - "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "node_modules/lint-staged": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.3.0.tgz", + "integrity": "sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==", "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "license": "MIT", + "dependencies": { + "chalk": "~5.4.1", + "commander": "~12.1.0", + "debug": "~4.4.0", + "execa": "~8.0.1", + "lilconfig": "~3.1.3", + "listr2": "~8.2.5", + "micromatch": "~4.0.8", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.6.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, - "requires": { - "map-cache": "^0.2.2" + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "node_modules/lint-staged/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "engines": { + "node": ">=18" } }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-stream": { + "node_modules/lint-staged/node_modules/npm-run-path": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-promise": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", - "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", - "requires": { - "@types/glob": "^7.1.3" + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "node_modules/lint-staged/node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "engines": { + "node": ">=12" }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "node_modules/listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" } }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "requires": { - "type-fest": "^0.8.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "engines": { + "node": ">=12" }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, - "requires": { - "sparkles": "^1.0.0" + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.7", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - } - } + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "gulp-replace": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", - "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, - "requires": { - "@types/node": "^14.14.41", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" - }, "dependencies": { - "@types/node": { - "version": "14.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", - "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", - "dev": true - } + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "gulp-sourcemaps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", - "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", - "dev": true, - "requires": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" - }, + "node_modules/lit": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "license": "BSD-3-Clause", "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" } }, - "gulp-typescript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", - "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.5", - "plugin-error": "^1.0.1", - "source-map": "^0.7.3", - "through2": "^3.0.0", - "vinyl": "^2.1.0", - "vinyl-fs": "^3.0.3" - }, + "node_modules/lit-element": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "license": "BSD-3-Clause", "dependencies": { - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - } + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" } }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" + "node_modules/lit-html": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, - "requires": { - "function-bind": "^1.1.1" + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "history": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", - "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", - "requires": { - "@babel/runtime": "^7.7.6" + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } + "license": "MIT" }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } + "license": "MIT" }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } + "license": "MIT" }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true + "license": "MIT" }, - "husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true, - "requires": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "license": "MIT" }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "license": "MIT" }, - "ignore": { + "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } + "license": "MIT" }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } + "license": "MIT" }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", "dev": true }, - "inquirer": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.2.tgz", - "integrity": "sha512-DF4osh1FM6l0RJc5YWYhSDB6TawiBRlbV9Cox8MWlidU218Tb7fm3lQTULyUJDfJ0tjbzl0W4q651mrCCEM55w==", + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.16", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "internal-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", - "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "requires": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, - "requires": { - "binary-extensions": "^1.0.0" + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "requires": { - "kind-of": "^3.0.2" + "engines": { + "node": ">=12" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "engines": { + "node": ">=12" }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, - "requires": { - "isobject": "^3.0.1" + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, - "requires": { - "has-symbols": "^1.0.1" + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "requires": { - "is-unc-path": "^1.0.0" + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, - "requires": { - "has-symbols": "^1.0.1" + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "dev": true, - "requires": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - } + "license": "MIT" }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "yallist": "^3.0.2" } }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, - "requires": { - "minimist": "^1.2.0" + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, - "jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "requires": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" } }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, - "just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "requires": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" + "dependencies": { + "tmpl": "1.0.5" } }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "requires": { - "readable-stream": "^2.0.5" + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, - "requires": { - "invert-kv": "^1.0.0" + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" } }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "node_modules/markdownlint": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.2.tgz", + "integrity": "sha512-m8QhYnRA1ptbhIjhVVBUkKQcUelVxuyO/yXyLewnc1+xs4eXhST/+hIy29goO+EYVLmWtknH4SmYQ4s0caoKqw==", "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" + "license": "MIT", + "dependencies": { + "markdown-it": "14.1.0", + "micromark": "4.0.1", + "micromark-extension-directive": "3.0.2", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.0", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/markdownlint-cli2": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.17.0.tgz", + "integrity": "sha512-8Xz7wkkkV4wJTf+pvryU3J/fT3BZWD3ZykcjYBR0GuH0GHvrCbswaCdurbuUuAPDGFZy4cxBGYCJSAOW8jM4aQ==", "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "license": "MIT", + "dependencies": { + "globby": "14.0.2", + "js-yaml": "4.1.0", + "jsonc-parser": "3.3.1", + "markdownlint": "0.37.2", + "markdownlint-cli2-formatter-default": "0.0.5", + "micromatch": "4.0.8" + }, + "bin": { + "markdownlint-cli2": "markdownlint-cli2-bin.mjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" } }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "node_modules/markdownlint-cli2-formatter-default": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.5.tgz", + "integrity": "sha512-4XKTwQ5m1+Txo2kuQ3Jgpo/KmnG+X90dWt4acufg6HVGadTUG5hzHF/wssp9b5MBYOMCnZ9RMPaU//uHsszF8Q==", "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" } }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "node_modules/markdownlint-cli2-formatter-pretty": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-pretty/-/markdownlint-cli2-formatter-pretty-0.0.9.tgz", + "integrity": "sha512-5zuqYonXTUu7yLP+f0ERcYu3c6tlWJVMkp+ovo6RNEvy8NEpkdUXRBAObbuJVSE3bJcaqderebfLSlEdUK8HDg==", "dev": true, - "requires": { - "uc.micro": "^1.0.1" + "license": "MIT", + "dependencies": { + "chalk": "5.6.2", + "terminal-link": "5.0.0" + }, + "engines": { + "node": ">=14.18.0" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" } }, - "lint-staged": { - "version": "10.2.11", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.2.11.tgz", - "integrity": "sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA==", + "node_modules/markdownlint-cli2-formatter-pretty/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "requires": { - "chalk": "^4.0.0", - "cli-truncate": "2.1.0", - "commander": "^5.1.0", - "cosmiconfig": "^6.0.0", - "debug": "^4.1.1", - "dedent": "^0.7.0", - "enquirer": "^2.3.5", - "execa": "^4.0.1", - "listr2": "^2.1.0", - "log-symbols": "^4.0.0", - "micromatch": "^4.0.2", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "^3.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" - }, - "listr2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-2.2.0.tgz", - "integrity": "sha512-Q8qbd7rgmEwDo1nSyHaWQeztfGsdL6rb4uh7BA+Q80AZiDET5rVntiU1+13mu2ZTDVaBVbvAD1Db11rnu3l9sg==", + "node_modules/markdownlint-cli2/node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, - "requires": { - "chalk": "^4.0.0", - "cli-truncate": "^2.1.0", - "figures": "^3.2.0", - "indent-string": "^4.0.0", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rxjs": "^6.5.5", - "through": "^2.3.8" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "node_modules/markdownlint-cli2/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "node_modules/markdownlint-cli2/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/markdownlint-cli2/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, - "requires": { - "p-locate": "^4.1.0" + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" } }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } + "node_modules/micromark": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", "dev": true, - "requires": { - "es5-ext": "~0.10.2" + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", "dev": true, - "requires": { - "kind-of": "^6.0.2" + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", "dev": true, - "requires": { - "object-visit": "^1.0.0" + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", "dev": true, - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, + "license": "MIT", "dependencies": { - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - } + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, - "memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", - "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", + "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "mime": { + "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "requires": { - "mime-db": "1.44.0" + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { + "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "mimic-response": { + "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, + "license": "ISC", "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "mkdirp-classic": { + "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "optional": true + }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", "dev": true }, - "mocha": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", - "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/msw": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.12.7.tgz", + "integrity": "sha512-retd5i3xCZDVWMYjHEVuKTmhqY8lSsxujjVrZiGbbdoxxIBg5S7rCuYy/YQpfrTYIxpd/o0Kyb/3H+1udBMoYg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.40.0", + "@open-draft/deferred-promise": "^2.2.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.0.2", + "graphql": "^16.12.0", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "rettime": "^0.7.0", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.0", + "type-fest": "^5.2.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { "optional": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } } } }, - "mocha-sinon": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mocha-sinon/-/mocha-sinon-2.1.2.tgz", - "integrity": "sha512-j6eIQGgOFddcgE1kUFKSvXR9oCuSEiRzv2XUK4iJcntObi2X2vYDvRwvOWxECUZl2dJ+Ciex5fYYni05Lx4azA==", + "node_modules/msw/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/msw/node_modules/type-fest": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.2.tgz", + "integrity": "sha512-FLEenlVYf7Zcd34ISMLo3ZzRE1gRjY1nMDTp+bQRBiPsaKyIW8K3Zr99ioHDUgA9OGuGGJPyYpNcffGmBhJfGg==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mute-stdout": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", + "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "module-not-found-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz", - "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=", + "node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true, + "optional": true + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "node_modules/node-abi": { + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", + "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "optional": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", + "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/patch-package": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz", + "integrity": "sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^10.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.2.4", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/playwright": { + "version": "1.58.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", + "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.58.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.58.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", + "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/plugin-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-2.0.1.tgz", + "integrity": "sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/plugin-error/node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.1.tgz", + "integrity": "sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qs": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-docgen": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-8.0.2.tgz", + "integrity": "sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.2", + "@types/babel__core": "^7.20.5", + "@types/babel__traverse": "^7.20.7", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", + "doctrine": "^3.0.0", + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": "^20.9.0 || >=22" + } + }, + "node_modules/react-docgen-typescript": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz", + "integrity": "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">= 4.3.x" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redent/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-bom-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/replace-homedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz", + "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", + "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/rettime": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.7.0.tgz", + "integrity": "sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==", + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/rollup": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.86.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.3.tgz", + "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz", + "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "sver": "^1.8.3" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sparkles": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", + "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stack-chain": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", + "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/storybook": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.3.5.tgz", + "integrity": "sha512-uBSZu/GZa9aEIW3QMGvdQPMZWhGxSe4dyRWU8B3/Vd47Gy/XLC7tsBxRr13txmmPOEDHZR94uLuq0H50fvuqBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/icons": "^2.0.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/user-event": "^14.6.1", + "@vitest/expect": "3.2.4", + "@vitest/spy": "3.2.4", + "@webcontainer/env": "^1.1.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0", + "open": "^10.2.0", + "recast": "^0.23.5", + "semver": "^7.7.3", + "use-sync-external-store": "^1.5.0", + "ws": "^8.18.0" + }, + "bin": { + "storybook": "dist/bin/dispatcher.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, + "node_modules/storybook/node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/storybook/node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/storybook/node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/storybook/node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/storybook/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/storybook/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/storybook/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/storybook/node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==" + }, + "node_modules/stream-composer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", + "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.13.2" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "node_modules/stream-json": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-components": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", + "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "dependencies": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + }, + "node_modules/stylus": { + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.62.0.tgz", + "integrity": "sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@adobe/css-tools": "~4.3.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.3.0", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus/node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "optional": true - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/supports-hyperlinks": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.3.0.tgz", + "integrity": "sha512-i6sWEzuwadSlcr2mOnb0ktlIl+K5FVxsPXmoPfknDd2gyw4ZBIAZ5coc0NQzYqDdEYXMHy8NaY9rWwa1Q1myiQ==", "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "license": "MIT", + "dependencies": { + "has-flag": "^5.0.1", + "supports-color": "^10.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } }, - "next-tick": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "node_modules/sver": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz", + "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "semver": "^6.3.0" + } }, - "nise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", - "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "node_modules/sver/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" } }, - "node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", + "node_modules/svg-element-attributes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz", + "integrity": "sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA==", "dev": true, - "requires": { - "semver": "^7.3.5" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" } }, - "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "node-version": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.2.0.tgz", - "integrity": "sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==" + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, + "license": "MIT", + "optional": true, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "optional": true }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "node_modules/tar-fs/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "requires": { - "once": "^1.3.2" + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "node_modules/tar-fs/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, + "optional": true, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" } }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/tar-stream": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", "dev": true, - "requires": { - "path-key": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - } + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "dependencies": { + "streamx": "^2.12.5" } }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "node_modules/terminal-link": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-5.0.0.tgz", + "integrity": "sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==", "dev": true, - "requires": { - "boolbase": "^1.0.0" + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "supports-hyperlinks": "^4.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "node_modules/terminal-link/node_modules/ansi-escapes": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", + "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "object-inspect": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz", - "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==", - "dev": true + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "node_modules/textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", "dev": true, - "requires": { - "isobject": "^3.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "dependencies": { + "readable-stream": "3" } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" } }, - "object.entries": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", - "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "node_modules/through2-filter/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "has": "^1.0.3" + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "object.fromentries": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", - "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } + "license": "MIT" }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, - "requires": { - "isobject": "^3.0.1" + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "node_modules/tldts": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.17.tgz", + "integrity": "sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.17" + }, + "bin": { + "tldts": "bin/cli.js" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" + "node_modules/tldts-core": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.17.tgz", + "integrity": "sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==", + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "license": "MIT", + "engines": { + "node": ">=14.14" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dependencies": { + "tmp": "^0.2.0" } }, - "opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", "dev": true, - "requires": { - "lcid": "^1.0.0" + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/to-through/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "requires": { - "p-try": "^2.0.0" + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" + "node_modules/tough-cookie": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", + "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" } }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", "dev": true, - "requires": { - "aggregate-error": "^3.0.0" + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "parse-json": { + "node_modules/ts-dedent": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", "dev": true, - "requires": { - "error-ex": "^1.2.0" + "engines": { + "node": ">=6.10" } }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse-semver": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", + "node_modules/ts-jest": { + "version": "29.4.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz", + "integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==", "dev": true, - "requires": { - "semver": "^5.1.0" - }, + "license": "MIT", "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.8", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.3", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true } } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, - "requires": { - "parse5": "^6.0.1" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "node_modules/ts-json-schema-generator": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz", + "integrity": "sha512-t4lBQAwZc0sOJq9LJt3NgbznIcslVnm0JeEMFq8qIRklpMRY8jlYD0YmnRWbqBKANxkby91P1XanSSlSOFpUmg==", "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" + "dependencies": { + "@types/json-schema": "^7.0.15", + "commander": "^12.0.0", + "glob": "^10.3.12", + "json5": "^2.2.3", + "normalize-path": "^3.0.0", + "safe-stable-stringify": "^2.4.3", + "tslib": "^2.6.2", + "typescript": "^5.4.5" + }, + "bin": { + "ts-json-schema-generator": "bin/ts-json-schema-generator.js" + }, + "engines": { + "node": ">=18.0.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "node_modules/ts-json-schema-generator/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "node_modules/ts-json-schema-generator/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, - "requires": { - "path-root-regex": "^0.1.0" + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true + "node_modules/ts-json-schema-generator/node_modules/commander": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "dev": true, + "engines": { + "node": ">=18" + } }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/ts-json-schema-generator/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, - "requires": { - "isarray": "0.0.1" - }, + "license": "ISC", "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "node_modules/ts-json-schema-generator/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "node_modules/ts-json-schema-generator/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/ts-json-schema-generator/node_modules/minimatch": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz", + "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==", "dev": true, - "requires": { - "find-up": "^4.0.0" - }, + "license": "ISC", "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "node_modules/ts-json-schema-generator/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "requires": { - "semver-compare": "^1.0.0" + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, + "license": "MIT", "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true } } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "node_modules/ts-unused-exports": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/ts-unused-exports/-/ts-unused-exports-11.0.1.tgz", + "integrity": "sha512-b1uIe0B8YfNZjeb+bx62LrB6qaO4CHT8SqMVBkwbwLj7Nh0xQ4J8uV0dS9E6AABId0U4LQ+3yB/HXZBMslGn2A==", "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, + "license": "MIT", "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "chalk": "^4.0.0", + "tsconfig-paths": "^3.9.0" + }, + "bin": { + "ts-unused-exports": "bin/ts-unused-exports" + }, + "funding": { + "url": "https://github.com/pzavolinsky/ts-unused-exports?sponsor=1" + }, + "peerDependencies": { + "typescript": ">=3.8.3" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": false } } }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "node_modules/ts-unused-exports/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "postcss": "^7.0.5" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "node_modules/ts-unused-exports/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.16", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "node_modules/ts-unused-exports/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "engines": { + "node": ">=8" } }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "node_modules/ts-unused-exports/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "prebuild-install": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", - "integrity": "sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", - "dev": true - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "promise-polyfill": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", - "integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=" + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "proxyquire": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", - "integrity": "sha512-BQWfCqYM+QINd+yawJz23tbBM40VIGXOdDw3X344KcclI/gtBbdWF6SlQ4nK/bYhF9d27KYug9WzljHC6B9Ysg==", + "node_modules/tsutils-etc": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tsutils-etc/-/tsutils-etc-1.4.2.tgz", + "integrity": "sha512-2Dn5SxTDOu6YWDNKcx1xu2YUy6PUeKrWZB/x2cQ8vY2+iz3JRembKn/iZ0JLT1ZudGNwQQvtFX9AwvRHbXuPUg==", "dev": true, - "requires": { - "fill-keys": "^1.0.2", - "module-not-found-error": "^1.0.1", - "resolve": "^1.11.1" + "dependencies": { + "@types/yargs": "^17.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "ts-flags": "bin/ts-flags", + "ts-kind": "bin/ts-kind" + }, + "peerDependencies": { + "tsutils": "^3.0.0", + "typescript": ">=4.0.0" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "requires": { - "side-channel": "^1.0.4" + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "requires": { - "safe-buffer": "^5.1.0" + "engines": { + "node": ">=4" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "engines": { + "node": ">=12.20" }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" } }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, - "requires": { - "mute-stream": "~0.0.4" + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "license": "MIT", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" } }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, - "readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", - "requires": { - "minimatch": "^3.0.4" + "node_modules/typescript-eslint": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.38.0.tgz", + "integrity": "sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.38.0", + "@typescript-eslint/parser": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/utils": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz", + "integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==", "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/type-utils": "8.38.0", + "@typescript-eslint/utils": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.38.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz", + "integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==", "dev": true, - "requires": { - "resolve": "^1.1.6" + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", + "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz", + "integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/utils": "8.38.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", + "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, + "license": "MIT", "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } + "@typescript-eslint/project-service": "8.38.0", + "@typescript-eslint/tsconfig-utils": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", + "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", + "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", "dev": true, - "requires": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "node_modules/typescript-eslint/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "requires": { - "path-parse": "^1.0.6" + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/typescript-eslint/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, + "license": "MIT", "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "node_modules/typescript-eslint/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, - "requires": { - "value-or-function": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz", + "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==", "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "license": "ISC", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" + "node_modules/typescript-plugin-css-modules": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typescript-plugin-css-modules/-/typescript-plugin-css-modules-5.2.0.tgz", + "integrity": "sha512-c5pAU5d+m3GciDr/WhkFldz1NIEGBafuP/3xhFt9BEXS2gmn/LvjkoZ11vEBIuP8LkXfPNhOt1BUhM5efFuwOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/postcss-modules-local-by-default": "^4.0.2", + "@types/postcss-modules-scope": "^3.0.4", + "dotenv": "^16.4.2", + "icss-utils": "^5.1.0", + "less": "^4.2.0", + "lodash.camelcase": "^4.3.0", + "postcss": "^8.4.35", + "postcss-load-config": "^3.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "reserved-words": "^0.1.2", + "sass": "^1.70.0", + "source-map-js": "^1.0.2", + "tsconfig-paths": "^4.2.0" + }, + "optionalDependencies": { + "stylus": "^0.62.0" + }, + "peerDependencies": { + "typescript": ">=4.0.0" } }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "node_modules/typescript-plugin-css-modules/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/typescript-plugin-css-modules/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, - "requires": { - "queue-microtask": "^1.2.2" + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" }, - "rxjs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", - "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, - "requires": { - "tslib": "^1.9.0" + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { + "node_modules/unbox-primitive": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, - "requires": { - "ret": "~0.1.10" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } + "license": "MIT" }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - }, + "node_modules/undertaker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz", + "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==", + "dev": true, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "bach": "^2.0.1", + "fast-levenshtein": "^3.0.0", + "last-run": "^2.0.0", + "undertaker-registry": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "node_modules/undertaker-registry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz", + "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==", "dev": true, - "requires": { - "sver-compat": "^1.5.0" + "engines": { + "node": ">= 10.13.0" } }, - "semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "node_modules/undertaker/node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", "dev": true, - "requires": { - "randombytes": "^2.1.0" + "dependencies": { + "fastest-levenshtein": "^1.0.7" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" }, - "set-value": { + "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, - "requires": { - "kind-of": "^6.0.2" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, - "requires": { - "shebang-regex": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true + "node_modules/universal-user-agent": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", + "license": "ISC" }, - "shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" } }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "node_modules/unplugin/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "sinon": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.1.tgz", - "integrity": "sha512-8yx2wIvkBjIq/MGY1D9h1LMraYW+z1X0mb648KZnKSdvLasvDu7maa0dFaNYdTDczFgbjNw2tOmWdTk9saVfwQ==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.0.0", - "@sinonjs/samsam": "^6.1.1", - "diff": "^5.0.0", - "nise": "^5.1.1", - "supports-color": "^7.2.0" - }, "dependencies": { - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "punycode": "^2.1.0" } }, - "sinon-chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.5.0.tgz", - "integrity": "sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, - "snapdragon-util": { + "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" } }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "node_modules/v8flags": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", + "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "license": "MIT", + "engines": { + "node": ">= 10.13.0" } }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">= 0.10" } }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { + "node_modules/vinyl": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz", + "integrity": "sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==", "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" } }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/vinyl-contents": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", + "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", "dev": true, - "requires": { - "extend-shallow": "^3.0.0" + "license": "MIT", + "dependencies": { + "bl": "^5.0.0", + "vinyl": "^3.0.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stack-chain": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true + "node_modules/vinyl-contents/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "node_modules/vinyl-contents/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", - "integrity": "sha1-f1Nj8Ff2WSxVlfALyAon9c7B8O8=", - "requires": { - "emitter-component": "^1.1.1" + "node_modules/vinyl-contents/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "stream-chain": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.4.tgz", - "integrity": "sha512-9lsl3YM53V5N/I1C2uJtc3Kavyi3kNYN83VkKb/bMWRk7D9imiFyUPYa0PoZbLohSVOX1mYE9YsmwObZUsth6Q==" - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-json": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.7.3.tgz", - "integrity": "sha512-Y6dXn9KKWSwxOqnvHGcdZy1PK+J+7alBwHCeU3W9oRqm4ilLRA0XSPmd1tWwhg7tv9EIxJTMWh7KF15tYelKJg==", - "requires": { - "stream-chain": "^2.2.4" + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" } }, - "stream-shift": { + "node_modules/vinyl-fs/node_modules/replace-ext": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" } }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "node_modules/vinyl-fs/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "string.prototype.matchall": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", - "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" } }, - "string.prototype.padend": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", - "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "node_modules/vinyl-sourcemap/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "string.prototype.trimstart": { + "node_modules/vinyl-sourcemap/node_modules/replace-ext": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "engines": { + "node": ">= 0.10" } }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "node_modules/vinyl-sourcemap/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/vite": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, + "license": "MIT", "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "node_modules/vite-node": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-5.3.0.tgz", + "integrity": "sha512-8f20COPYJujc3OKPX6OuyBy3ZIv2det4eRRU4GY1y2MjbeGSUmPjedxg1b72KnTagCofwvZ65ThzjxDW2AtQFQ==", "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "requires": {} - }, - "styled-components": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.3.tgz", - "integrity": "sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.8", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, + "license": "MIT", "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "cac": "^6.7.14", + "es-module-lexer": "^2.0.0", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "vite": "^7.3.1" + }, + "bin": { + "vite-node": "dist/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://opencollective.com/antfu" } }, - "styled-system": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz", - "integrity": "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==", - "requires": { - "@styled-system/background": "^5.1.2", - "@styled-system/border": "^5.1.5", - "@styled-system/color": "^5.1.2", - "@styled-system/core": "^5.1.2", - "@styled-system/flexbox": "^5.1.2", - "@styled-system/grid": "^5.1.2", - "@styled-system/layout": "^5.1.2", - "@styled-system/position": "^5.1.2", - "@styled-system/shadow": "^5.1.2", - "@styled-system/space": "^5.1.2", - "@styled-system/typography": "^5.1.2", - "@styled-system/variant": "^5.1.5", - "object-assign": "^4.1.1" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], "dev": true, - "requires": { - "has-flag": "^3.0.0" + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" } }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "tabbable": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "readable-stream": "3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", - "requires": { - "rimraf": "^2.6.3" + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "tmp-promise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", - "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", - "requires": { - "tmp": "^0.2.0" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - } + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], "dev": true, - "requires": { - "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - }, - "ts-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.1.0.tgz", - "integrity": "sha512-YiQipGGAFj2zBfqLhp28yUvPP9jUGqHxRzrGYuc82Z2wM27YIHbElXiaZDc93c3x0mz4zvBmS6q/DgExpdj37A==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "node_modules/vite/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", - "yn": "3.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - } + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "ts-protoc-gen": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/ts-protoc-gen/-/ts-protoc-gen-0.9.0.tgz", - "integrity": "sha512-cFEUTY9U9o6C4DPPfMHk2ZUdIAKL91hZN1fyx5Stz3g56BDVOC7hk+r5fEMCAGaaIgi2akkT1a2hrxu1wo2Phg==", - "dev": true - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "tslib": "^1.8.1" + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "safe-buffer": "^5.0.1" + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "prelude-ls": "~1.1.2" + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typed-rest-client": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true - }, - "typescript-formatter": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/typescript-formatter/-/typescript-formatter-7.2.2.tgz", - "integrity": "sha512-V7vfI9XArVhriOTYHPzMU2WUnm5IMdu9X/CPxs8mIMGxmTBFpDABlbkBka64PZJ9/xgQeRpK8KzzAG4MPzxBDQ==", + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "commandpost": "^1.0.0", - "editorconfig": "^0.15.0" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", - "dev": true - }, - "undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "dependencies": { - "fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true - } + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "node_modules/vite/node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "node_modules/vscode-extension-telemetry": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.7.tgz", + "integrity": "sha512-pZuZTHO9OpsrwlerOKotWBRLRYJ53DobYb7aWiRAXjlqkuqE+YJJaP+2WEy8GrLIF1EnitXTDMaTAKsmLQ5ORQ==", + "deprecated": "This package has been renamed to @vscode/extension-telemetry, please update to the new name", + "license": "MIT", + "dependencies": { + "applicationinsights": "1.7.4" + }, + "engines": { + "vscode": "^1.5.0" + } }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "node_modules/vscode-extension-telemetry/node_modules/applicationinsights": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.7.4.tgz", + "integrity": "sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A==", + "license": "MIT", + "dependencies": { + "cls-hooked": "^4.2.2", + "continuation-local-storage": "^3.2.1", + "diagnostic-channel": "0.2.0", + "diagnostic-channel-publishers": "^0.3.3" + } }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, + "node_modules/vscode-extension-telemetry/node_modules/diagnostic-channel": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.2.0.tgz", + "integrity": "sha512-awkcaaNNi0RfUGJf7r2+K4oJs1OyiIG2m/Jwvyi0OeQxdw+UU/iwbiejTPa3tUeyXtBcp2fef0JOJNdD62r/zg==", + "license": "MIT", "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } + "semver": "^5.3.0" } }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" + "node_modules/vscode-extension-telemetry/node_modules/diagnostic-channel-publishers": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.5.tgz", + "integrity": "sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ==", + "license": "MIT", + "peerDependencies": { + "diagnostic-channel": "*" } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true + "node_modules/vscode-extension-telemetry/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" + "node_modules/vscode-jsonrpc": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", + "integrity": "sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==", + "engines": { + "node": ">=14.0.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "node_modules/vscode-languageclient": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.3" + }, + "engines": { + "vscode": "^1.67.0" + } }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "dependencies": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" + } }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "engines": { + "node": ">=14.0.0" + } }, - "v8-compile-cache-lib": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", - "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", - "dev": true + "node_modules/vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "dependencies": { + "makeerror": "1.0.12" } }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "node_modules/webidl-conversions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", + "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" } }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } + "license": "MIT" }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" } }, - "viz.js": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/viz.js/-/viz.js-1.8.2.tgz", - "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==" + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } }, - "vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "node_modules/whatwg-url": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", + "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", "dev": true, - "requires": { - "azure-devops-node-api": "^11.0.1", - "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.9", - "commander": "^6.1.0", - "glob": "^7.0.6", - "hosted-git-info": "^4.0.2", - "keytar": "^7.7.0", - "leven": "^3.1.0", - "markdown-it": "^12.3.2", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "semver": "^5.1.0", - "tmp": "^0.2.1", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.4.23", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, + "license": "MIT", "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.0" + }, + "engines": { + "node": ">=20" } }, - "vscode-extension-telemetry": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.6.tgz", - "integrity": "sha512-rbzSg7k4NnsCdF4Lz0gI4jl3JLXR0hnlmfFgsY8CSDYhXgdoIxcre8jw5rjkobY0xhSDhbG7xCjP8zxskySJ/g==", - "requires": { - "applicationinsights": "1.7.4" - }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "dependencies": { - "applicationinsights": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.7.4.tgz", - "integrity": "sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A==", - "requires": { - "cls-hooked": "^4.2.2", - "continuation-local-storage": "^3.2.1", - "diagnostic-channel": "0.2.0", - "diagnostic-channel-publishers": "^0.3.3" - } - }, - "diagnostic-channel": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.2.0.tgz", - "integrity": "sha1-zJmvlhLCP7H/8TYSxy8sv6qNWhc=", - "requires": { - "semver": "^5.3.0" - } - }, - "diagnostic-channel-publishers": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.5.tgz", - "integrity": "sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "vscode-jsonrpc": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", - "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" - }, - "vscode-languageclient": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", - "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", - "requires": { - "semver": "^6.3.0", - "vscode-languageserver-protocol": "^3.15.3" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "vscode-languageserver-protocol": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", - "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", - "requires": { - "vscode-jsonrpc": "^5.0.1", - "vscode-languageserver-types": "3.15.1" + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" - }, - "vscode-test": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", - "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "requires": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, + "license": "MIT", "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "vscode-test-adapter-api": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-test-adapter-api/-/vscode-test-adapter-api-1.7.0.tgz", - "integrity": "sha512-X0rTcoDhDBmpmJuev2C5+GHGZD41nmcRYoSe7iw5e9/aIPTOFve1T1F5x9gb+zXoNQnkXSDibyMkeHDKtIkqCg==" - }, - "vscode-test-adapter-util": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/vscode-test-adapter-util/-/vscode-test-adapter-util-0.7.1.tgz", - "integrity": "sha512-OZZvLDDNhayVVISyTmgUntOhMzl6j9/wVGfNqI2zuR5bQIziTQlDs9W29dFXDTGXZOxazS6uiHkrr86BKDzYUA==", - "requires": { - "tslib": "^1.11.1", - "vscode-test-adapter-api": "^1.8.0" - }, - "dependencies": { - "vscode-test-adapter-api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/vscode-test-adapter-api/-/vscode-test-adapter-api-1.9.0.tgz", - "integrity": "sha512-lltjehUP0J9H3R/HBctjlqeUCwn2t9Lbhj2Y500ib+j5Y4H3hw+hVTzuSsfw16LtxY37knlU39QIlasa7svzOQ==" - } + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } + "license": "MIT" }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - } + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "webpack-cli": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.6.0.tgz", - "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.2", - "@webpack-cli/info": "^1.2.3", - "@webpack-cli/serve": "^1.3.1", - "colorette": "^1.2.1", - "commander": "^7.0.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^5.7.3" + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" } }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "license": "MIT", + "engines": { + "node": ">=10.0.0" }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "utf-8-validate": { + "optional": true } } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, - "requires": { - "mkdirp": "^0.5.1" + "license": "Apache-2.0", + "engines": { + "node": ">=18" } }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dev": true, - "requires": { + "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, - "xmlbuilder": { + "node_modules/xmlbuilder": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true - }, - "xregexp": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", - "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", "dev": true, - "requires": { - "@babel/runtime-corejs3": "^7.8.3" + "engines": { + "node": ">=4.0" } }, - "xtend": { + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4" + } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "node_modules/yaml": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - } + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" } }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - } + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { + "node_modules/yauzl": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", + "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", + "license": "MIT", + "dependencies": { "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" } }, - "yazl": { + "node_modules/yazl": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", "dev": true, - "requires": { + "dependencies": { "buffer-crc32": "~0.2.3" } }, - "yn": { + "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "zip-a-folder": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-1.1.3.tgz", - "integrity": "sha512-V4mXL1iSsgr/2kqKw0hxzZM9ibuGeW4b0wjKp8CAjXMl+WdSQ8npTBNN/+X7Q50h3KTwnmgLlgqMqEOOMkLCqQ==", - "requires": { - "archiver": "^5.3.0" + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "node_modules/zip-a-folder": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/zip-a-folder/-/zip-a-folder-4.0.4.tgz", + "integrity": "sha512-sVqxEtf6cTMrdnw7XCS5ktV3h9fRSrVZ78h9ehrtcVs5hQ0th5dyT5NCH/7WAQQC3IkKFHWNvamY06JRCNHU5g==", + "license": "MIT", + "dependencies": { + "glob": "^12.0.0" + } + }, + "node_modules/zip-a-folder/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/zip-a-folder/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/zip-a-folder/node_modules/glob": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-12.0.0.tgz", + "integrity": "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/zip-a-folder/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/zod": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" } } } diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index b7bef27646f..89157837781 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -4,7 +4,7 @@ "description": "CodeQL for Visual Studio Code", "author": "GitHub", "private": true, - "version": "1.6.11", + "version": "1.17.8", "publisher": "GitHub", "license": "MIT", "icon": "media/VS-marketplace-CodeQL-icon.png", @@ -13,15 +13,15 @@ "url": "https://github.com/github/vscode-codeql" }, "engines": { - "vscode": "^1.59.0", - "node": "^16.13.0", + "vscode": "^1.90.0", + "node": "^22.21.1", "npm": ">=7.20.6" }, "categories": [ "Programming Languages" ], "extensionDependencies": [ - "hbenl.vscode-test-explorer" + "vscode.git" ], "capabilities": { "untrustedWorkspaces": { @@ -34,54 +34,76 @@ } }, "activationEvents": [ - "onLanguage:ql", - "onLanguage:ql-summary", - "onView:codeQLDatabases", - "onView:codeQLQueryHistory", - "onView:codeQLAstViewer", - "onView:codeQLEvalLogViewer", "onView:test-explorer", - "onCommand:codeQL.checkForUpdatesToCLI", - "onCommand:codeQL.authenticateToGitHub", - "onCommand:codeQLDatabases.chooseDatabaseFolder", - "onCommand:codeQLDatabases.chooseDatabaseArchive", - "onCommand:codeQLDatabases.chooseDatabaseInternet", - "onCommand:codeQLDatabases.chooseDatabaseGithub", - "onCommand:codeQLDatabases.chooseDatabaseLgtm", - "onCommand:codeQL.setCurrentDatabase", - "onCommand:codeQL.viewAst", - "onCommand:codeQL.viewCfg", - "onCommand:codeQL.openReferencedFile", - "onCommand:codeQL.previewQueryHelp", - "onCommand:codeQL.chooseDatabaseFolder", - "onCommand:codeQL.chooseDatabaseArchive", - "onCommand:codeQL.chooseDatabaseInternet", - "onCommand:codeQL.chooseDatabaseGithub", - "onCommand:codeQL.chooseDatabaseLgtm", - "onCommand:codeQLDatabases.chooseDatabase", - "onCommand:codeQLDatabases.setCurrentDatabase", - "onCommand:codeQL.quickQuery", - "onCommand:codeQL.restartQueryServer", "onWebviewPanel:resultsView", - "onFileSystem:codeql-zip-archive" + "onWebviewPanel:codeQL.variantAnalysis", + "onWebviewPanel:codeQL.dataFlowPaths", + "onFileSystem:codeql-zip-archive", + "workspaceContains:.git" ], "main": "./out/extension", - "files": [ - "gen/*.js", - "media/**", - "out/**", - "package.json", - "language-configuration.json" - ], "contributes": { "configurationDefaults": { "[ql]": { - "editor.wordBasedSuggestions": false + "debug.saveBeforeStart": "nonUntitledEditorsInActiveGroup", + "editor.wordBasedSuggestions": "off" }, "[dbscheme]": { - "editor.wordBasedSuggestions": false + "editor.wordBasedSuggestions": "off" } }, + "debuggers": [ + { + "type": "codeql", + "label": "CodeQL Debugger", + "languages": [ + "ql" + ], + "configurationAttributes": { + "launch": { + "properties": { + "query": { + "type": "string", + "description": "Path to query file (.ql)", + "default": "${file}" + }, + "database": { + "type": "string", + "description": "Path to the target database" + }, + "additionalPacks": { + "type": [ + "array", + "string" + ], + "description": "Additional folders to search for library packs. Defaults to searching all workspace folders." + }, + "extensionPacks": { + "type": [ + "array", + "string" + ], + "description": "Names of extension packs to include in the evaluation. These are resolved from the locations specified in `additionalPacks`." + }, + "additionalRunQueryArgs": { + "type": "object", + "description": "**Internal use only**. Additional arguments to pass to the `runQuery` command of the query server, without validation." + } + } + } + }, + "variables": { + "currentDatabase": "codeQL.getCurrentDatabase", + "currentQuery": "codeQL.getCurrentQuery" + } + } + ], + "jsonValidation": [ + { + "fileMatch": "GitHub.vscode-codeql/databases.json", + "url": "./databases-schema.json" + } + ], "languages": [ { "id": "ql", @@ -138,160 +160,361 @@ "path": "./snippets.json" } ], - "configuration": { - "type": "object", - "title": "CodeQL", - "properties": { - "codeQL.cli.executablePath": { - "scope": "machine-overridable", - "type": "string", - "default": "", - "markdownDescription": "Path to the CodeQL executable that should be used by the CodeQL extension. The executable is named `codeql` on Linux/Mac and `codeql.exe` on Windows. If empty, the extension will look for a CodeQL executable on your shell PATH, or if CodeQL is not on your PATH, download and manage its own CodeQL executable." - }, - "codeQL.runningQueries.numberOfThreads": { - "type": "integer", - "default": 1, - "minimum": 0, - "maximum": 1024, - "description": "Number of threads for running queries." - }, - "codeQL.runningQueries.saveCache": { - "type": "boolean", - "default": false, - "scope": "window", - "description": "Aggressively save intermediate results to the disk cache. This may speed up subsequent queries if they are similar. Be aware that using this option will greatly increase disk usage and initial evaluation time." - }, - "codeQL.runningQueries.cacheSize": { - "type": [ - "integer", - "null" - ], - "default": null, - "minimum": 1024, - "description": "Maximum size of the disk cache (in MB). Leave blank to allow the evaluator to automatically adjust the size of the disk cache based on the size of the codebase and the complexity of the queries being executed." - }, - "codeQL.runningQueries.timeout": { - "type": [ - "integer", - "null" - ], - "default": null, - "minimum": 0, - "maximum": 2147483647, - "description": "Timeout (in seconds) for running queries. Leave blank or set to zero for no timeout." - }, - "codeQL.runningQueries.memory": { - "type": [ - "integer", - "null" - ], - "default": null, - "minimum": 1024, - "description": "Memory (in MB) to use for running queries. Leave blank for CodeQL to choose a suitable value based on your system's available memory." - }, - "codeQL.runningQueries.debug": { - "type": "boolean", - "default": false, - "description": "Enable debug logging and tuple counting when running CodeQL queries. This information is useful for debugging query performance." - }, - "codeQL.runningQueries.maxPaths": { - "type": "integer", - "default": 4, - "minimum": 1, - "maximum": 256, - "markdownDescription": "Max number of paths to display for each alert found by a path query (`@kind path-problem`)." - }, - "codeQL.runningQueries.autoSave": { - "type": "boolean", - "default": false, - "description": "Enable automatically saving a modified query file when running a query." - }, - "codeQL.runningQueries.maxQueries": { - "type": "integer", - "default": 20, - "description": "Max number of simultaneous queries to run using the 'CodeQL: Run Queries' command." - }, - "codeQL.runningQueries.customLogDirectory": { - "type": [ - "string", - null - ], - "default": null, - "description": "Path to a directory where the CodeQL extension should store query server logs. If empty, the extension stores logs in a temporary workspace folder and deletes the contents after each run.", - "markdownDeprecationMessage": "This property is deprecated and no longer has any effect. All query logs are stored in the query history folder next to the query results." - }, - "codeQL.runningQueries.quickEvalCodelens": { - "type": "boolean", - "default": true, - "description": "Enable the 'Quick Evaluation' CodeLens." - }, - "codeQL.resultsDisplay.pageSize": { - "type": "integer", - "default": 200, - "description": "Max number of query results to display per page in the results view." - }, - "codeQL.queryHistory.format": { - "type": "string", - "default": "%q on %d - %s %r [%t]", - "markdownDescription": "Default string for how to label query history items.\n* %t is the time of the query\n* %q is the human-readable query name\n* %f is the query file name\n* %d is the database name\n* %r is the number of results\n* %s is a status string" - }, - "codeQL.queryHistory.ttl": { - "type": "number", - "default": 30, - "description": "Number of days to retain queries in the query history before being automatically deleted.", - "scope": "machine" - }, - "codeQL.runningTests.additionalTestArguments": { - "scope": "window", - "type": "array", - "default": [], - "markdownDescription": "Additional command line arguments to pass to the CLI when [running tests](https://codeql.github.com/docs/codeql-cli/manual/test-run/). This setting should be an array of strings, each containing an argument to be passed." - }, - "codeQL.runningTests.numberOfThreads": { - "scope": "window", - "type": "integer", - "default": 1, - "minimum": 0, - "maximum": 1024, - "description": "Number of threads for running CodeQL tests." - }, - "codeQL.telemetry.enableTelemetry": { - "type": "boolean", - "default": false, - "scope": "application", - "markdownDescription": "Specifies whether to send CodeQL usage telemetry. This setting AND the global `#telemetry.enableTelemetry#` setting must be checked for telemetry to be sent to GitHub. For more information, see the [telemetry documentation](https://codeql.github.com/docs/codeql-for-visual-studio-code/about-telemetry-in-codeql-for-visual-studio-code)" - }, - "codeQL.telemetry.logTelemetry": { - "type": "boolean", - "default": false, - "scope": "application", - "description": "Specifies whether or not to write telemetry events to the extension log." - }, - "codeQL.variantAnalysis.repositoryLists": { - "type": [ - "object", - null - ], - "patternProperties": { - ".*": { - "type": "array", - "items": { - "type": "string" - } - } + "configuration": [ + { + "type": "object", + "title": "CLI", + "id": "codeQL.cli", + "order": 0, + "properties": { + "codeQL.cli.executablePath": { + "scope": "machine-overridable", + "type": "string", + "default": "", + "markdownDescription": "Path to the CodeQL executable that should be used by the CodeQL extension. The executable is named `codeql` on Linux/Mac and `codeql.exe` on Windows. If empty, the extension will look for a CodeQL executable on your shell PATH, or if CodeQL is not on your PATH, download and manage its own CodeQL executable (note: if you later introduce CodeQL on your PATH, the extension will prefer a CodeQL executable it has downloaded itself)." + }, + "codeQL.cli.downloadTimeout": { + "type": "integer", + "default": 10, + "description": "Download timeout in seconds for downloading the CLI distribution." + } + } + }, + { + "type": "object", + "title": "Running queries", + "id": "codeQL.runningQueries", + "order": 1, + "properties": { + "codeQL.runningQueries.numberOfThreads": { + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 1024, + "description": "Number of threads for running queries." + }, + "codeQL.runningQueries.saveCache": { + "type": "boolean", + "default": false, + "scope": "window", + "deprecationMessage": "This setting no longer has any effect.", + "description": "Aggressively save intermediate results to the disk cache. This may speed up subsequent queries if they are similar. Be aware that using this option will greatly increase disk usage and initial evaluation time." }, - "default": null, - "markdownDescription": "[For internal use only] Lists of GitHub repositories that you want to run variant analysis against. This should be a JSON object where each key is a user-specified name for this repository list, and the value is an array of GitHub repositories (of the form `/`)." - }, - "codeQL.variantAnalysis.controllerRepo": { - "type": "string", - "default": "", - "pattern": "^$|^(?:[a-zA-Z0-9]+-)*[a-zA-Z0-9]+/[a-zA-Z0-9-_]+$", - "patternErrorMessage": "Please enter a valid GitHub repository", - "markdownDescription": "[For internal use only] The name of the GitHub repository where you can view the progress and results of the \"Run Variant Analysis\" command. The repository should be of the form `/`)." + "codeQL.runningQueries.cacheSize": { + "type": [ + "integer", + "null" + ], + "default": null, + "minimum": 1024, + "description": "Maximum size of the disk cache (in MB). Leave blank to allow the evaluator to automatically adjust the size of the disk cache based on the size of the codebase and the complexity of the queries being executed." + }, + "codeQL.runningQueries.timeout": { + "type": [ + "integer", + "null" + ], + "default": null, + "minimum": 0, + "maximum": 2147483647, + "description": "Timeout (in seconds) for running queries. Leave blank or set to zero for no timeout." + }, + "codeQL.runningQueries.memory": { + "type": [ + "integer", + "null" + ], + "default": null, + "minimum": 1024, + "description": "Memory (in MB) to use for running queries. Leave blank for CodeQL to choose a suitable value based on your system's available memory." + }, + "codeQL.runningQueries.debug": { + "type": "boolean", + "default": false, + "description": "Enable debug logging and tuple counting when running CodeQL queries. This information is useful for debugging query performance." + }, + "codeQL.runningQueries.maxPaths": { + "type": "integer", + "default": 4, + "minimum": 1, + "maximum": 256, + "markdownDescription": "Max number of paths to display for each alert found by a path query (`@kind path-problem`)." + }, + "codeQL.runningQueries.autoSave": { + "type": "boolean", + "description": "Enable automatically saving a modified query file when running a query.", + "markdownDeprecationMessage": "This property is deprecated and no longer has any effect. To control automatic saving of documents before running queries, use the `debug.saveBeforeStart` setting." + }, + "codeQL.runningQueries.maxQueries": { + "type": "integer", + "default": 20, + "description": "Max number of simultaneous queries to run using the 'CodeQL: Run Queries' command." + }, + "codeQL.runningQueries.customLogDirectory": { + "type": [ + "string", + null + ], + "default": null, + "description": "Path to a directory where the CodeQL extension should store query server logs. If empty, the extension stores logs in a temporary workspace folder and deletes the contents after each run.", + "markdownDeprecationMessage": "This property is deprecated and no longer has any effect. All query logs are stored in the query history folder next to the query results." + }, + "codeQL.runningQueries.quickEvalCodelens": { + "type": "boolean", + "default": true, + "description": "Enable the 'Quick Evaluation' CodeLens." + }, + "codeQL.runningQueries.useExtensionPacks": { + "type": "string", + "default": "none", + "enum": [ + "none", + "all" + ], + "enumDescriptions": [ + "Do not use extension packs.", + "Use all extension packs found in the workspace." + ], + "description": "Choose whether or not to run queries using extension packs. Requires CodeQL CLI v2.12.3 or later." + } + } + }, + { + "type": "object", + "title": "Results", + "id": "codeQL.resultsDisplay", + "order": 2, + "properties": { + "codeQL.resultsDisplay.pageSize": { + "type": "integer", + "default": 200, + "description": "Max number of query results to display per page in the results view." + } + } + }, + { + "type": "object", + "title": "Query history", + "id": "codeQL.queryHistory", + "order": 3, + "properties": { + "codeQL.queryHistory.format": { + "type": "string", + "default": "${queryName} on ${databaseName} - ${status} ${resultCount} [${startTime}]", + "markdownDescription": "Default string for how to label query history items.\n\nThe following variables are supported:\n* **${startTime}** - the time of the query\n* **${queryName}** - the human-readable query name\n* **${queryFileBasename}** - the query file's base name\n* **${queryLanguage}** - the query language\n* **${databaseName}** - the database name\n* **${resultCount}** - the number of results\n* **${status}** - a status string" + }, + "codeQL.queryHistory.ttl": { + "type": "number", + "default": 30, + "description": "Number of days to retain queries in the query history before being automatically deleted.", + "scope": "machine" + } + } + }, + { + "type": "object", + "title": "Running tests", + "id": "codeQL.runningTests", + "order": 4, + "properties": { + "codeQL.runningTests.additionalTestArguments": { + "scope": "window", + "type": "array", + "default": [], + "markdownDescription": "Additional command line arguments to pass to the CLI when [running tests](https://codeql.github.com/docs/codeql-cli/manual/test-run/). This setting should be an array of strings, each containing an argument to be passed." + }, + "codeQL.runningTests.numberOfThreads": { + "scope": "window", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 1024, + "description": "Number of threads for running CodeQL tests." + } + } + }, + { + "type": "object", + "title": "Variant analysis", + "id": "codeQL.variantAnalysis", + "order": 5, + "properties": { + "codeQL.variantAnalysis.controllerRepo": { + "type": "string", + "default": "", + "pattern": "^$|^(?:[a-zA-Z0-9]+-)*[a-zA-Z0-9]+/[a-zA-Z0-9-_]+$", + "patternErrorMessage": "Please enter a valid GitHub repository", + "markdownDescription": "[For internal use only] The name of the GitHub repository in which the GitHub Actions workflow is run when using the \"Run Variant Analysis\" command. The repository should be of the form `/`)." + }, + "codeQL.variantAnalysis.defaultResultsFilter": { + "type": "string", + "default": "all", + "enum": [ + "all", + "withResults" + ], + "enumDescriptions": [ + "Show all repositories in the results view.", + "Show only repositories with results in the results view." + ], + "description": "The default filter to apply to the variant analysis results view." + }, + "codeQL.variantAnalysis.defaultResultsSort": { + "type": "string", + "default": "numberOfResults", + "enum": [ + "alphabetically", + "popularity", + "numberOfResults" + ], + "enumDescriptions": [ + "Sort repositories alphabetically in the results view.", + "Sort repositories by popularity in the results view.", + "Sort repositories by number of results in the results view." + ], + "description": "The default sorting order for repositories in the variant analysis results view." + } + } + }, + { + "type": "object", + "title": "Adding databases", + "id": "codeQL.addingDatabases", + "order": 6, + "properties": { + "codeQL.addingDatabases.downloadTimeout": { + "type": "integer", + "default": 10, + "description": "Download timeout in seconds for adding a CodeQL database." + }, + "codeQL.addingDatabases.allowHttp": { + "type": "boolean", + "default": false, + "description": "Allow databases to be downloaded via HTTP. Warning: enabling this option will allow downloading from insecure servers." + }, + "codeQL.databaseDownload.allowHttp": { + "type": "boolean", + "markdownDeprecationMessage": "**Deprecated**: Please use `#codeQL.addingDatabases.allowHttp#` instead.", + "deprecationMessage": "Deprecated: Please use codeQL.addingDatabases.allowHttp instead." + }, + "codeQL.addingDatabases.addDatabaseSourceToWorkspace": { + "type": "boolean", + "default": false, + "markdownDescription": "When adding a CodeQL database, automatically add the database's source folder as a workspace folder. Warning: enabling this option in a single-folder workspace will cause the workspace to reload as a [multi-root workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces). This may cause query history and database lists to be reset." + } + } + }, + { + "type": "object", + "title": "Creating queries", + "id": "codeQL.createQuery", + "order": 7, + "properties": { + "codeQL.createQuery.qlPackLocation": { + "type": "string", + "patternErrorMessage": "Please enter a valid folder", + "markdownDescription": "The name of the folder where we want to create queries and QL packs via the \"CodeQL: Create Query\" command. The folder should exist." + }, + "codeQL.createQuery.autogenerateQlPacks": { + "type": "string", + "default": "ask", + "enum": [ + "ask", + "never" + ], + "enumDescriptions": [ + "Ask to create a QL pack when a new CodeQL database is added.", + "Never create a QL pack when a new CodeQL database is added." + ], + "description": "Ask the user to generate a QL pack when a new CodeQL database is downloaded." + } + } + }, + { + "type": "object", + "title": "GitHub Databases", + "id": "codeQL.githubDatabase", + "order": 8, + "properties": { + "codeQL.githubDatabase.download": { + "type": "string", + "default": "ask", + "enum": [ + "ask", + "never" + ], + "enumDescriptions": [ + "Ask to download a GitHub database when a workspace is opened.", + "Never download a GitHub databases when a workspace is opened." + ], + "description": "Ask to download a GitHub database when a workspace is opened." + }, + "codeQL.githubDatabase.update": { + "type": "string", + "default": "ask", + "enum": [ + "ask", + "never" + ], + "enumDescriptions": [ + "Ask to download an updated GitHub database when a new version is available.", + "Never download an updated GitHub database when a new version is available." + ], + "description": "Ask to download an updated GitHub database when a new version is available." + } + } + }, + { + "type": "object", + "title": "Model Editor", + "id": "codeQL.model", + "order": 9, + "properties": { + "codeQL.model.packLocation": { + "type": "string", + "default": ".github/codeql/extensions/${name}-${language}", + "markdownDescription": "Location for newly created CodeQL model packs. The location can be either absolute or relative. If relative, it is relative to the workspace root.\n\nThe following variables are supported:\n* **${database}** - the name of the database\n* **${language}** - the name of the language\n* **${name}** - the name of the GitHub repository, or the name of the database if the database was not downloaded from GitHub\n* **${owner}** - the owner of the GitHub repository, or an empty string if the database was not downloaded from GitHub" + }, + "codeQL.model.packName": { + "type": "string", + "default": "${owner}/${name}-${language}", + "markdownDescription": "Name of newly created CodeQL model packs. If the result is not a valid pack name, it will be converted to a valid pack name.\n\nThe following variables are supported:\n* **${database}** - the name of the database\n* **${language}** - the name of the language\n* **${name}** - the name of the GitHub repository, or the name of the database if the database was not downloaded from GitHub\n* **${owner}** - the owner of the GitHub repository, or an empty string if the database was not downloaded from GitHub" + } + } + }, + { + "type": "object", + "title": "Log insights", + "id": "codeQL.logInsights", + "order": 10, + "properties": { + "codeQL.logInsights.joinOrderWarningThreshold": { + "type": "number", + "default": 50, + "scope": "window", + "minimum": 0, + "description": "Report a warning for any join order whose metric exceeds this value." + } + } + }, + { + "type": "object", + "title": "Telemetry", + "id": "codeQL.telemetry", + "order": 11, + "properties": { + "codeQL.telemetry.logTelemetry": { + "type": "boolean", + "default": false, + "scope": "application", + "description": "Specifies whether or not to write telemetry events to the extension log.", + "tags": [ + "telemetry" + ] + } } } - }, + ], "commands": [ { "command": "codeQL.authenticateToGitHub", @@ -299,40 +522,132 @@ }, { "command": "codeQL.runQuery", - "title": "CodeQL: Run Query" + "title": "CodeQL: Run Query on Selected Database" + }, + { + "command": "codeQL.runQueryContextEditor", + "title": "CodeQL: Run Query on Selected Database" + }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQuery", + "title": "CodeQL: Warm Overlay-Base Cache for Query" + }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQueryContextEditor", + "title": "CodeQL: Warm Overlay-Base Cache for Query" + }, + { + "command": "codeQL.debugQuery", + "title": "CodeQL: Debug Query" + }, + { + "command": "codeQL.debugQueryContextEditor", + "title": "CodeQL: Debug Query" + }, + { + "command": "codeQL.startDebuggingSelection", + "title": "CodeQL: Debug Selection" + }, + { + "command": "codeQL.startDebuggingSelectionContextEditor", + "title": "CodeQL: Debug Selection" + }, + { + "command": "codeQL.continueDebuggingSelection", + "title": "CodeQL: Debug Selection" + }, + { + "command": "codeQL.continueDebuggingSelectionContextEditor", + "title": "CodeQL: Debug Selection" }, { "command": "codeQL.runQueryOnMultipleDatabases", "title": "CodeQL: Run Query on Multiple Databases" }, + { + "command": "codeQL.runQueryOnMultipleDatabasesContextEditor", + "title": "CodeQL: Run Query on Multiple Databases" + }, { "command": "codeQL.runVariantAnalysis", "title": "CodeQL: Run Variant Analysis" }, { - "command": "codeQL.exportVariantAnalysisResults", + "command": "codeQL.runVariantAnalysisContextEditor", + "title": "CodeQL: Run Variant Analysis" + }, + { + "command": "codeQL.runVariantAnalysisContextExplorer", + "title": "CodeQL: Run Variant Analysis" + }, + { + "command": "codeQL.runVariantAnalysisPublishedPack", + "title": "CodeQL: Run Variant Analysis against published pack" + }, + { + "command": "codeQL.exportSelectedVariantAnalysisResults", "title": "CodeQL: Export Variant Analysis Results" }, { "command": "codeQL.runQueries", "title": "CodeQL: Run Queries in Selected Files" }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQueries", + "title": "CodeQL: Warm Overlay-Base Cache for Queries in Selected Files" + }, + { + "command": "codeQL.runQuerySuite", + "title": "CodeQL: Run Selected Query Suite" + }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQuerySuite", + "title": "CodeQL: Warm Overlay-Base Cache for Query Suite" + }, { "command": "codeQL.quickEval", "title": "CodeQL: Quick Evaluation" }, + { + "command": "codeQL.quickEvalCount", + "title": "CodeQL: Quick Evaluation Count" + }, + { + "command": "codeQL.quickEvalContextEditor", + "title": "CodeQL: Quick Evaluation" + }, { "command": "codeQL.openReferencedFile", "title": "CodeQL: Open Referenced File" }, + { + "command": "codeQL.openReferencedFileContextEditor", + "title": "CodeQL: Open Referenced File" + }, + { + "command": "codeQL.openReferencedFileContextExplorer", + "title": "CodeQL: Open Referenced File" + }, { "command": "codeQL.previewQueryHelp", "title": "CodeQL: Preview Query Help" }, + { + "command": "codeQL.previewQueryHelpContextExplorer", + "title": "CodeQL: Preview Query Help" + }, + { + "command": "codeQL.previewQueryHelpContextEditor", + "title": "CodeQL: Preview Query Help" + }, { "command": "codeQL.quickQuery", "title": "CodeQL: Quick Query" }, + { + "command": "codeQL.createQuery", + "title": "CodeQL: Create Query" + }, { "command": "codeQL.openDocumentation", "title": "CodeQL: Open Documentation" @@ -341,6 +656,81 @@ "command": "codeQL.copyVersion", "title": "CodeQL: Copy Version Information" }, + { + "command": "codeQLLanguageSelection.setSelectedItem", + "title": "Select" + }, + { + "command": "codeQLQueries.runLocalQueryFromQueriesPanel", + "title": "Run local query", + "icon": "$(run)" + }, + { + "command": "codeQLQueries.runLocalQueriesFromPanel", + "title": "Run local queries", + "icon": "$(run-all)" + }, + { + "command": "codeQL.runLocalQueryFromFileTab", + "title": "CodeQL: Run local query", + "icon": "$(run)" + }, + { + "command": "codeQLQueries.runLocalQueryContextMenu", + "title": "Run against local database" + }, + { + "command": "codeQLQueries.runLocalQueriesContextMenu", + "title": "Run against local database" + }, + { + "command": "codeQLQueries.runVariantAnalysisContextMenu", + "title": "Run against variant analysis repositories" + }, + { + "command": "codeQLQueries.createQuery", + "title": "Create query", + "icon": "$(new-file)" + }, + { + "command": "codeQLVariantAnalysisRepositories.openConfigFile", + "title": "Open database configuration file", + "icon": "$(json)" + }, + { + "command": "codeQLVariantAnalysisRepositories.addNewDatabase", + "title": "Add new database", + "icon": "$(add)" + }, + { + "command": "codeQLVariantAnalysisRepositories.addNewList", + "title": "Add new list", + "icon": "$(new-folder)" + }, + { + "command": "codeQLVariantAnalysisRepositories.importFromCodeSearch", + "title": "Add repositories with GitHub Code Search" + }, + { + "command": "codeQLVariantAnalysisRepositories.setSelectedItem", + "title": "Select" + }, + { + "command": "codeQLVariantAnalysisRepositories.setSelectedItemContextMenu", + "title": "Select" + }, + { + "command": "codeQLVariantAnalysisRepositories.renameItemContextMenu", + "title": "Rename" + }, + { + "command": "codeQLVariantAnalysisRepositories.openOnGitHubContextMenu", + "title": "Open on GitHub" + }, + { + "command": "codeQLVariantAnalysisRepositories.removeItemContextMenu", + "title": "Delete" + }, { "command": "codeQLDatabases.chooseDatabaseFolder", "title": "Choose Database from Folder", @@ -377,26 +767,46 @@ "dark": "media/dark/github.svg" } }, - { - "command": "codeQLDatabases.chooseDatabaseLgtm", - "title": "Download from LGTM", - "icon": { - "light": "media/light/lgtm-plus.svg", - "dark": "media/dark/lgtm-plus.svg" - } - }, { "command": "codeQL.setCurrentDatabase", "title": "CodeQL: Set Current Database" }, + { + "command": "codeQL.importTestDatabase", + "title": "CodeQL: (Re-)Import Test Database" + }, + { + "command": "codeQL.getCurrentDatabase", + "title": "CodeQL: Get Current Database" + }, + { + "command": "codeQL.getCurrentQuery", + "title": "CodeQL: Get Current Query" + }, { "command": "codeQL.viewAst", "title": "CodeQL: View AST" }, + { + "command": "codeQL.viewAstContextExplorer", + "title": "CodeQL: View AST" + }, + { + "command": "codeQL.viewAstContextEditor", + "title": "CodeQL: View AST" + }, { "command": "codeQL.viewCfg", "title": "CodeQL: View CFG" }, + { + "command": "codeQL.viewCfgContextExplorer", + "title": "CodeQL: View CFG" + }, + { + "command": "codeQL.viewCfgContextEditor", + "title": "CodeQL: View CFG" + }, { "command": "codeQL.upgradeCurrentDatabase", "title": "CodeQL: Upgrade Current Database" @@ -405,6 +815,14 @@ "command": "codeQL.clearCache", "title": "CodeQL: Clear Cache" }, + { + "command": "codeQL.trimCache", + "title": "CodeQL: Trim Cache" + }, + { + "command": "codeQL.trimOverlayBaseCache", + "title": "CodeQL: Trim Cache to Overlay-Base" + }, { "command": "codeQL.installPackDependencies", "title": "CodeQL: Install Pack Dependencies" @@ -415,7 +833,7 @@ }, { "command": "codeQLDatabases.setCurrentDatabase", - "title": "Set Current Database" + "title": "Select" }, { "command": "codeQLDatabases.removeDatabase", @@ -441,6 +859,10 @@ "command": "codeQL.chooseDatabaseFolder", "title": "CodeQL: Choose Database from Folder" }, + { + "command": "codeQL.chooseDatabaseFoldersParent", + "title": "CodeQL: Import All Databases Directly Contained in a Parent Folder" + }, { "command": "codeQL.chooseDatabaseArchive", "title": "CodeQL: Choose Database from Archive" @@ -454,84 +876,60 @@ "title": "CodeQL: Download Database from GitHub" }, { - "command": "codeQL.chooseDatabaseLgtm", - "title": "CodeQL: Download Database from LGTM" + "command": "codeQLDatabases.sortByName", + "title": "Sort by Name" }, { - "command": "codeQLDatabases.sortByName", - "title": "Sort by Name", - "icon": { - "light": "media/light/sort-alpha.svg", - "dark": "media/dark/sort-alpha.svg" - } + "command": "codeQLDatabases.sortByLanguage", + "title": "Sort by Language" }, { "command": "codeQLDatabases.sortByDateAdded", - "title": "Sort by Date Added", - "icon": { - "light": "media/light/sort-date.svg", - "dark": "media/dark/sort-date.svg" - } + "title": "Sort by Date Added" }, { "command": "codeQL.checkForUpdatesToCLI", "title": "CodeQL: Check for CLI Updates" }, { - "command": "codeQLQueryHistory.openQuery", - "title": "Open the Query that Produced these Results", - "icon": { - "light": "media/light/edit.svg", - "dark": "media/dark/edit.svg" - } + "command": "codeQLQueryHistory.openQueryContextMenu", + "title": "View Query", + "icon": "$(edit)" }, { "command": "codeQLQueryHistory.itemClicked", "title": "Open Query Results", - "icon": { - "light": "media/light/preview.svg", - "dark": "media/dark/preview.svg" - } + "icon": "$(preview)" }, { - "command": "codeQLQueryHistory.removeHistoryItem", - "title": "Remove History Item(s)", - "icon": { - "light": "media/light/trash.svg", - "dark": "media/dark/trash.svg" - } + "command": "codeQLQueryHistory.removeHistoryItemContextMenu", + "title": "Delete", + "icon": "$(trash)" + }, + { + "command": "codeQLQueryHistory.removeHistoryItemContextInline", + "title": "Delete", + "icon": "$(trash)" }, { "command": "codeQLQueryHistory.sortByName", - "title": "Sort by Name", - "icon": { - "light": "media/light/sort-alpha.svg", - "dark": "media/dark/sort-alpha.svg" - } + "title": "Sort by Name" }, { "command": "codeQLQueryHistory.sortByDate", - "title": "Sort by Query Date", - "icon": { - "light": "media/light/sort-date.svg", - "dark": "media/dark/sort-date.svg" - } + "title": "Sort by Date" }, { "command": "codeQLQueryHistory.sortByCount", - "title": "Sort by Results Count", - "icon": { - "light": "media/light/sort-num.svg", - "dark": "media/dark/sort-num.svg" - } + "title": "Sort by Results Count" }, { "command": "codeQLQueryHistory.showQueryLog", - "title": "Show Query Log" + "title": "View Query Log" }, { "command": "codeQLQueryHistory.openQueryDirectory", - "title": "Open Query Directory" + "title": "Open Results Directory" }, { "command": "codeQLQueryHistory.showEvalLog", @@ -551,7 +949,7 @@ }, { "command": "codeQLQueryHistory.showQueryText", - "title": "Show Query Text" + "title": "View Query Text" }, { "command": "codeQLQueryHistory.exportResults", @@ -574,28 +972,44 @@ "title": "View DIL" }, { - "command": "codeQLQueryHistory.setLabel", - "title": "Set Label" + "command": "codeQLQueryHistory.renameItem", + "title": "Rename" }, { "command": "codeQLQueryHistory.compareWith", "title": "Compare Results" }, + { + "command": "codeQLQueryHistory.comparePerformanceWith", + "title": "Compare Performance" + }, { "command": "codeQLQueryHistory.openOnGithub", - "title": "Open Variant Analysis on GitHub" + "title": "View Logs" }, { "command": "codeQLQueryHistory.copyRepoList", "title": "Copy Repository List" }, { - "command": "codeQLQueryResults.nextPathStep", - "title": "CodeQL: Show Next Step on Path" + "command": "codeQLQueryHistory.viewAutofixes", + "title": "View Autofixes" + }, + { + "command": "codeQLQueryResults.down", + "title": "CodeQL: Navigate Down in Local Result Viewer" + }, + { + "command": "codeQLQueryResults.up", + "title": "CodeQL: Navigate Up in Local Result Viewer" }, { - "command": "codeQLQueryResults.previousPathStep", - "title": "CodeQL: Show Previous Step on Path" + "command": "codeQLQueryResults.right", + "title": "CodeQL: Navigate Right in Local Result Viewer" + }, + { + "command": "codeQLQueryResults.left", + "title": "CodeQL: Navigate Left in Local Result Viewer" }, { "command": "codeQL.restartQueryServer", @@ -609,6 +1023,10 @@ "command": "codeQLTests.acceptOutput", "title": "Accept Test Output" }, + { + "command": "codeQLTests.acceptOutputContextTestItem", + "title": "Accept Test Output" + }, { "command": "codeQLAstViewer.gotoCode", "title": "Go To Code" @@ -633,20 +1051,46 @@ "command": "codeQL.gotoQL", "title": "CodeQL: Go to QL Code", "enablement": "codeql.hasQLSource" + }, + { + "command": "codeQL.gotoQLContextEditor", + "title": "CodeQL: Go to QL Code", + "enablement": "codeql.hasQLSource" + }, + { + "command": "codeQL.openModelEditor", + "title": "CodeQL: Open CodeQL Model Editor (Beta)" + }, + { + "command": "codeQL.mockGitHubApiServer.startRecording", + "title": "CodeQL: Mock GitHub API Server: Start Scenario Recording" + }, + { + "command": "codeQL.mockGitHubApiServer.saveScenario", + "title": "CodeQL: Mock GitHub API Server: Save Scenario" + }, + { + "command": "codeQL.mockGitHubApiServer.cancelRecording", + "title": "CodeQL: Mock GitHub API Server: Cancel Scenario Recording" + }, + { + "command": "codeQL.mockGitHubApiServer.loadScenario", + "title": "CodeQL: Mock GitHub API Server: Load Scenario" + }, + { + "command": "codeQL.mockGitHubApiServer.unloadScenario", + "title": "CodeQL: Mock GitHub API Server: Unload Scenario" } ], "menus": { - "view/title": [ + "editor/title": [ { - "command": "codeQLDatabases.sortByName", - "when": "view == codeQLDatabases", - "group": "navigation" - }, - { - "command": "codeQLDatabases.sortByDateAdded", - "when": "view == codeQLDatabases", - "group": "navigation" - }, + "command": "codeQL.runLocalQueryFromFileTab", + "group": "navigation", + "when": "resourceExtname == .ql && codeQL.currentDatabaseItem" + } + ], + "view/title": [ { "command": "codeQLDatabases.chooseDatabaseFolder", "when": "view == codeQLDatabases", @@ -664,43 +1108,43 @@ }, { "command": "codeQLDatabases.chooseDatabaseGithub", - "when": "config.codeQL.canary && view == codeQLDatabases", + "when": "view == codeQLDatabases", "group": "navigation" }, { - "command": "codeQLDatabases.chooseDatabaseLgtm", + "command": "codeQLDatabases.sortByName", "when": "view == codeQLDatabases", - "group": "navigation" + "group": "1_databases@0" }, { - "command": "codeQLQueryHistory.openQuery", - "when": "view == codeQLQueryHistory", - "group": "navigation" + "command": "codeQLDatabases.sortByLanguage", + "when": "view == codeQLDatabases", + "group": "1_databases@1" }, { - "command": "codeQLQueryHistory.itemClicked", - "when": "view == codeQLQueryHistory", - "group": "navigation" + "command": "codeQLDatabases.sortByDateAdded", + "when": "view == codeQLDatabases", + "group": "1_databases@2" }, { - "command": "codeQLQueryHistory.removeHistoryItem", - "when": "view == codeQLQueryHistory", + "command": "codeQLQueries.createQuery", + "when": "view == codeQLQueries", "group": "navigation" }, { "command": "codeQLQueryHistory.sortByName", "when": "view == codeQLQueryHistory", - "group": "navigation" + "group": "1_queryHistory@0" }, { "command": "codeQLQueryHistory.sortByDate", "when": "view == codeQLQueryHistory", - "group": "navigation" + "group": "1_queryHistory@1" }, { "command": "codeQLQueryHistory.sortByCount", "when": "view == codeQLQueryHistory", - "group": "navigation" + "group": "1_queryHistory@2" }, { "command": "codeQLAstViewer.clear", @@ -711,9 +1155,54 @@ "command": "codeQLEvalLogViewer.clear", "when": "view == codeQLEvalLogViewer", "group": "navigation" + }, + { + "command": "codeQLVariantAnalysisRepositories.openConfigFile", + "when": "view == codeQLVariantAnalysisRepositories", + "group": "navigation" + }, + { + "command": "codeQLVariantAnalysisRepositories.addNewDatabase", + "when": "view == codeQLVariantAnalysisRepositories && codeQLVariantAnalysisRepositories.configError == false", + "group": "navigation" + }, + { + "command": "codeQLVariantAnalysisRepositories.addNewList", + "when": "view == codeQLVariantAnalysisRepositories && codeQLVariantAnalysisRepositories.configError == false", + "group": "navigation" } ], "view/item/context": [ + { + "command": "codeQLVariantAnalysisRepositories.removeItemContextMenu", + "when": "view == codeQLVariantAnalysisRepositories && viewItem =~ /canBeRemoved/", + "group": "2_qlContextMenu@3" + }, + { + "command": "codeQLVariantAnalysisRepositories.setSelectedItemContextMenu", + "when": "view == codeQLVariantAnalysisRepositories && viewItem =~ /canBeSelected/", + "group": "1_qlContextMenu@1" + }, + { + "command": "codeQLVariantAnalysisRepositories.renameItemContextMenu", + "when": "view == codeQLVariantAnalysisRepositories && viewItem =~ /canBeRenamed/", + "group": "2_qlContextMenu@2" + }, + { + "command": "codeQLVariantAnalysisRepositories.openOnGitHubContextMenu", + "when": "view == codeQLVariantAnalysisRepositories && viewItem =~ /canBeOpenedOnGitHub/", + "group": "2_qlContextMenu@1" + }, + { + "command": "codeQLVariantAnalysisRepositories.importFromCodeSearch", + "when": "view == codeQLVariantAnalysisRepositories && viewItem =~ /canImportCodeSearch/", + "group": "2_qlContextMenu@1" + }, + { + "command": "codeQLLanguageSelection.setSelectedItem", + "when": "view == codeQLLanguageSelection && viewItem =~ /canBeSelected/", + "group": "inline" + }, { "command": "codeQLDatabases.setCurrentDatabase", "group": "inline", @@ -724,11 +1213,6 @@ "group": "9_qlCommands", "when": "view == codeQLDatabases" }, - { - "command": "codeQLDatabases.upgradeDatabase", - "group": "9_qlCommands", - "when": "view == codeQLDatabases" - }, { "command": "codeQLDatabases.renameDatabase", "group": "9_qlCommands", @@ -745,58 +1229,73 @@ "when": "view == codeQLDatabases" }, { - "command": "codeQLQueryHistory.openQuery", - "group": "9_qlCommands", + "command": "codeQLVariantAnalysisRepositories.setSelectedItem", + "when": "view == codeQLVariantAnalysisRepositories && viewItem =~ /canBeSelected/", + "group": "inline" + }, + { + "command": "codeQLQueryHistory.openQueryContextMenu", + "group": "2_queryHistory@0", "when": "view == codeQLQueryHistory" }, { - "command": "codeQLQueryHistory.removeHistoryItem", - "group": "9_qlCommands", - "when": "viewItem == interpretedResultsItem || viewItem == rawResultsItem || viewItem == remoteResultsItem || viewItem == cancelledResultsItem" + "command": "codeQLQueryHistory.removeHistoryItemContextMenu", + "group": "7_queryHistory@0", + "when": "viewItem == interpretedResultsItem || viewItem == rawResultsItem || viewItem == remoteResultsItem || viewItem == cancelledRemoteResultsItemWithoutLogs || viewItem == cancelledResultsItem || viewItem == cancelledRemoteResultsItem" }, { - "command": "codeQLQueryHistory.setLabel", - "group": "9_qlCommands", + "command": "codeQLQueryHistory.removeHistoryItemContextInline", + "group": "inline", + "when": "viewItem == interpretedResultsItem || viewItem == rawResultsItem || viewItem == remoteResultsItem || viewItem == cancelledRemoteResultsItemWithoutLogs || viewItem == cancelledResultsItem || viewItem == cancelledRemoteResultsItem" + }, + { + "command": "codeQLQueryHistory.renameItem", + "group": "6_queryHistory@0", "when": "view == codeQLQueryHistory" }, { "command": "codeQLQueryHistory.compareWith", - "group": "9_qlCommands", + "group": "3_queryHistory@0", "when": "viewItem == rawResultsItem || viewItem == interpretedResultsItem" }, + { + "command": "codeQLQueryHistory.comparePerformanceWith", + "group": "3_queryHistory@1", + "when": "viewItem == rawResultsItem && config.codeQL.canary || viewItem == interpretedResultsItem && config.codeQL.canary" + }, { "command": "codeQLQueryHistory.showQueryLog", - "group": "9_qlCommands", + "group": "4_queryHistory@4", "when": "viewItem == rawResultsItem || viewItem == interpretedResultsItem" }, { "command": "codeQLQueryHistory.openQueryDirectory", - "group": "9_qlCommands", + "group": "2_queryHistory@4", "when": "view == codeQLQueryHistory && !hasRemoteServer" }, { "command": "codeQLQueryHistory.showEvalLog", - "group": "9_qlCommands", - "when": "codeql.supportsEvalLog && viewItem == rawResultsItem || codeql.supportsEvalLog && viewItem == interpretedResultsItem || codeql.supportsEvalLog && viewItem == cancelledResultsItem" + "group": "4_queryHistory@1", + "when": "viewItem == rawResultsItem || viewItem == interpretedResultsItem || viewItem == cancelledResultsItem" }, { "command": "codeQLQueryHistory.showEvalLogSummary", - "group": "9_qlCommands", - "when": "codeql.supportsEvalLog && viewItem == rawResultsItem || codeql.supportsEvalLog && viewItem == interpretedResultsItem || codeql.supportsEvalLog && viewItem == cancelledResultsItem" + "group": "4_queryHistory@2", + "when": "viewItem == rawResultsItem || viewItem == interpretedResultsItem || viewItem == cancelledResultsItem" }, { "command": "codeQLQueryHistory.showEvalLogViewer", - "group": "9_qlCommands", - "when": "config.codeQL.canary && codeql.supportsEvalLog && viewItem == rawResultsItem || config.codeQL.canary && codeql.supportsEvalLog && viewItem == interpretedResultsItem || config.codeQL.canary && codeql.supportsEvalLog && viewItem == cancelledResultsItem" + "group": "4_queryHistory@3", + "when": "config.codeQL.canary && viewItem == rawResultsItem || config.codeQL.canary && viewItem == interpretedResultsItem || config.codeQL.canary && viewItem == cancelledResultsItem" }, { "command": "codeQLQueryHistory.showQueryText", - "group": "9_qlCommands", + "group": "2_queryHistory@2", "when": "view == codeQLQueryHistory" }, { "command": "codeQLQueryHistory.exportResults", - "group": "9_qlCommands", + "group": "1_queryHistory@0", "when": "view == codeQLQueryHistory && viewItem == remoteResultsItem" }, { @@ -806,17 +1305,17 @@ }, { "command": "codeQLQueryHistory.viewCsvAlerts", - "group": "9_qlCommands", + "group": "5_queryHistory@0", "when": "viewItem == interpretedResultsItem" }, { "command": "codeQLQueryHistory.viewSarifAlerts", - "group": "9_qlCommands", + "group": "5_queryHistory@1", "when": "viewItem == interpretedResultsItem" }, { "command": "codeQLQueryHistory.viewDil", - "group": "9_qlCommands", + "group": "5_queryHistory@2", "when": "viewItem == rawResultsItem || viewItem == interpretedResultsItem" }, { @@ -826,14 +1325,44 @@ }, { "command": "codeQLQueryHistory.openOnGithub", - "group": "9_qlCommands", - "when": "viewItem == remoteResultsItem || viewItem == inProgressRemoteResultsItem || viewItem == cancelledResultsItem" + "group": "2_queryHistory@3", + "when": "viewItem == remoteResultsItem || viewItem == inProgressRemoteResultsItem || viewItem == cancelledRemoteResultsItem" }, { "command": "codeQLQueryHistory.copyRepoList", - "group": "9_qlCommands", + "group": "1_queryHistory@1", "when": "viewItem == remoteResultsItem" }, + { + "command": "codeQLQueryHistory.viewAutofixes", + "group": "1_queryHistory@2", + "when": "viewItem == remoteResultsItem && config.codeQL.canary" + }, + { + "command": "codeQLQueries.runLocalQueryFromQueriesPanel", + "group": "inline", + "when": "view == codeQLQueries && viewItem == queryFile && codeQL.currentDatabaseItem" + }, + { + "command": "codeQLQueries.runLocalQueryContextMenu", + "group": "queriesPanel@1", + "when": "view == codeQLQueries && viewItem == queryFile && codeQL.currentDatabaseItem" + }, + { + "command": "codeQLQueries.runLocalQueriesContextMenu", + "group": "queriesPanel@1", + "when": "view == codeQLQueries && viewItem == queryFolder && codeQL.currentDatabaseItem" + }, + { + "command": "codeQLQueries.runVariantAnalysisContextMenu", + "group": "queriesPanel@1", + "when": "view == codeQLQueries && viewItem == queryFile" + }, + { + "command": "codeQLQueries.runLocalQueriesFromPanel", + "group": "inline", + "when": "view == codeQLQueries && viewItem == queryFolder && codeQL.currentDatabaseItem" + }, { "command": "codeQLTests.showOutputDifferences", "group": "qltest@1", @@ -845,19 +1374,31 @@ "when": "viewItem == testWithSource" } ], + "testing/item/context": [ + { + "command": "codeQLTests.acceptOutputContextTestItem", + "group": "qltest@1", + "when": "controllerId == codeql && testId =~ /^test /" + } + ], "explorer/context": [ { "command": "codeQL.setCurrentDatabase", "group": "9_qlCommands", - "when": "resourceScheme == codeql-zip-archive || explorerResourceIsFolder || resourceExtname == .zip" + "when": "resourceExtname != .testproj && (resourceScheme == codeql-zip-archive || explorerResourceIsFolder || resourceExtname == .zipz)" }, { - "command": "codeQL.viewAst", + "command": "codeQL.importTestDatabase", + "group": "9_qlCommands", + "when": "explorerResourceIsFolder && resourceExtname == .testproj" + }, + { + "command": "codeQL.viewAstContextExplorer", "group": "9_qlCommands", "when": "resourceScheme == codeql-zip-archive && !explorerResourceIsFolder && !listMultiSelection" }, { - "command": "codeQL.viewCfg", + "command": "codeQL.viewCfgContextExplorer", "group": "9_qlCommands", "when": "resourceScheme == codeql-zip-archive && config.codeQL.canary" }, @@ -867,12 +1408,32 @@ "when": "resourceScheme != codeql-zip-archive" }, { - "command": "codeQL.openReferencedFile", + "command": "codeQL.runWarmOverlayBaseCacheForQueries", + "group": "9_qlCommands", + "when": "resourceScheme != codeql-zip-archive && config.codeQL.canary" + }, + { + "command": "codeQL.runQuerySuite", + "group": "9_qlCommands", + "when": "resourceScheme != codeql-zip-archive && resourceExtname == .qls && !explorerResourceIsFolder && !listMultiSelection && config.codeQL.canary" + }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQuerySuite", + "group": "9_qlCommands", + "when": "resourceScheme != codeql-zip-archive && resourceExtname == .qls && !explorerResourceIsFolder && !listMultiSelection && config.codeQL.canary" + }, + { + "command": "codeQL.runVariantAnalysisContextExplorer", + "group": "9_qlCommands", + "when": "resourceExtname == .ql && config.codeQL.canary && config.codeQL.variantAnalysis.multiQuery" + }, + { + "command": "codeQL.openReferencedFileContextExplorer", "group": "9_qlCommands", "when": "resourceExtname == .qlref" }, { - "command": "codeQL.previewQueryHelp", + "command": "codeQL.previewQueryHelpContextExplorer", "group": "9_qlCommands", "when": "resourceExtname == .qhelp && isWorkspaceTrusted" } @@ -886,49 +1447,228 @@ "command": "codeQL.runQuery", "when": "resourceLangId == ql && resourceExtname == .ql" }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQuery", + "when": "resourceLangId == ql && resourceExtname == .ql && config.codeQL.canary" + }, + { + "command": "codeQLQueries.runLocalQueryFromQueriesPanel", + "when": "false" + }, + { + "command": "codeQLQueries.runLocalQueriesFromPanel", + "when": "false" + }, + { + "command": "codeQLQueries.createQuery", + "when": "false" + }, + { + "command": "codeQL.runLocalQueryFromFileTab", + "when": "false" + }, + { + "command": "codeQL.runQueryContextEditor", + "when": "false" + }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQueryContextEditor", + "when": "false" + }, + { + "command": "codeQL.debugQuery", + "when": "config.codeQL.canary && editorLangId == ql && resourceExtname == .ql && !inDebugMode" + }, + { + "command": "codeQL.debugQueryContextEditor", + "when": "false" + }, + { + "command": "codeQL.startDebuggingSelection", + "when": "config.codeQL.canary && editorLangId == ql && debugState == inactive && debugConfigurationType == codeql" + }, + { + "command": "codeQL.startDebuggingSelectionContextEditor", + "when": "false" + }, + { + "command": "codeQL.continueDebuggingSelection", + "when": "config.codeQL.canary && editorLangId == ql && debugState == stopped && debugType == codeql" + }, + { + "command": "codeQL.continueDebuggingSelectionContextEditor", + "when": "false" + }, { "command": "codeQL.runQueryOnMultipleDatabases", "when": "resourceLangId == ql && resourceExtname == .ql" }, + { + "command": "codeQL.runQueryOnMultipleDatabasesContextEditor", + "when": "false" + }, { "command": "codeQL.runVariantAnalysis", - "when": "config.codeQL.canary && editorLangId == ql && resourceExtname == .ql" + "when": "editorLangId == ql && resourceExtname == .ql" }, { - "command": "codeQL.exportVariantAnalysisResults", - "when": "config.codeQL.canary" + "command": "codeQL.runVariantAnalysisContextExplorer", + "when": "false" + }, + { + "command": "codeQL.runVariantAnalysisPublishedPack", + "when": "config.codeQL.canary && config.codeQL.variantAnalysis.multiQuery" + }, + { + "command": "codeQL.runVariantAnalysisContextEditor", + "when": "false" }, { "command": "codeQL.runQueries", "when": "false" }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQueries", + "when": "false" + }, + { + "command": "codeQL.runQuerySuite", + "when": "false" + }, + { + "command": "codeQL.runWarmOverlayBaseCacheForQuerySuite", + "when": "false" + }, { "command": "codeQL.quickEval", "when": "editorLangId == ql" }, + { + "command": "codeQL.quickEvalCount", + "when": "editorLangId == ql" + }, + { + "command": "codeQL.quickEvalContextEditor", + "when": "false" + }, { "command": "codeQL.openReferencedFile", "when": "resourceExtname == .qlref" }, + { + "command": "codeQL.openReferencedFileContextEditor", + "when": "false" + }, + { + "command": "codeQL.openReferencedFileContextExplorer", + "when": "false" + }, { "command": "codeQL.previewQueryHelp", "when": "resourceExtname == .qhelp && isWorkspaceTrusted" }, + { + "command": "codeQL.previewQueryHelpContextEditor", + "when": "false" + }, + { + "command": "codeQL.previewQueryHelpContextExplorer", + "when": "false" + }, { "command": "codeQL.setCurrentDatabase", "when": "false" }, + { + "command": "codeQL.importTestDatabase", + "when": "false" + }, + { + "command": "codeQL.getCurrentDatabase", + "when": "false" + }, + { + "command": "codeQL.getCurrentQuery", + "when": "false" + }, { "command": "codeQL.viewAst", "when": "resourceScheme == codeql-zip-archive" }, + { + "command": "codeQL.viewAstContextEditor", + "when": "false" + }, + { + "command": "codeQL.viewAstContextExplorer", + "when": "false" + }, { "command": "codeQL.viewCfg", "when": "resourceScheme == codeql-zip-archive && config.codeQL.canary" }, { - "command": "codeQL.chooseDatabaseGithub", - "when": "config.codeQL.canary" + "command": "codeQL.viewCfgContextExplorer", + "when": "false" + }, + { + "command": "codeQL.viewCfgContextEditor", + "when": "false" + }, + { + "command": "codeQL.openModelEditor" + }, + { + "command": "codeQLLanguageSelection.setSelectedItem", + "when": "false" + }, + { + "command": "codeQLQueries.runLocalQueryContextMenu", + "when": "false" + }, + { + "command": "codeQLQueries.runLocalQueriesContextMenu", + "when": "false" + }, + { + "command": "codeQLQueries.runVariantAnalysisContextMenu", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.openConfigFile", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.addNewDatabase", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.addNewList", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.setSelectedItem", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.setSelectedItemContextMenu", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.renameItemContextMenu", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.openOnGitHubContextMenu", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.removeItemContextMenu", + "when": "false" + }, + { + "command": "codeQLVariantAnalysisRepositories.importFromCodeSearch", + "when": "false" }, { "command": "codeQLDatabases.setCurrentDatabase", @@ -950,6 +1690,10 @@ "command": "codeQLDatabases.sortByName", "when": "false" }, + { + "command": "codeQLDatabases.sortByLanguage", + "when": "false" + }, { "command": "codeQLDatabases.sortByDateAdded", "when": "false" @@ -979,19 +1723,19 @@ "when": "false" }, { - "command": "codeQLDatabases.chooseDatabaseLgtm", + "command": "codeQLDatabases.upgradeDatabase", "when": "false" }, { - "command": "codeQLDatabases.upgradeDatabase", + "command": "codeQLQueryHistory.openQueryContextMenu", "when": "false" }, { - "command": "codeQLQueryHistory.openQuery", + "command": "codeQLQueryHistory.removeHistoryItemContextMenu", "when": "false" }, { - "command": "codeQLQueryHistory.removeHistoryItem", + "command": "codeQLQueryHistory.removeHistoryItemContextInline", "when": "false" }, { @@ -1030,6 +1774,10 @@ "command": "codeQLQueryHistory.copyRepoList", "when": "false" }, + { + "command": "codeQLQueryHistory.viewAutofixes", + "when": "false" + }, { "command": "codeQLQueryHistory.showQueryText", "when": "false" @@ -1055,13 +1803,17 @@ "when": "false" }, { - "command": "codeQLQueryHistory.setLabel", + "command": "codeQLQueryHistory.renameItem", "when": "false" }, { "command": "codeQLQueryHistory.compareWith", "when": "false" }, + { + "command": "codeQLQueryHistory.comparePerformanceWith", + "when": "false" + }, { "command": "codeQLQueryHistory.sortByName", "when": "false" @@ -1093,43 +1845,94 @@ { "command": "codeQLTests.showOutputDifferences", "when": "false" + }, + { + "command": "codeQL.mockGitHubApiServer.startRecording", + "when": "config.codeQL.mockGitHubApiServer.enabled && !codeQL.mockGitHubApiServer.recording" + }, + { + "command": "codeQL.mockGitHubApiServer.saveScenario", + "when": "config.codeQL.mockGitHubApiServer.enabled && codeQL.mockGitHubApiServer.recording" + }, + { + "command": "codeQL.mockGitHubApiServer.cancelRecording", + "when": "config.codeQL.mockGitHubApiServer.enabled && codeQL.mockGitHubApiServer.recording" + }, + { + "command": "codeQL.mockGitHubApiServer.loadScenario", + "when": "config.codeQL.mockGitHubApiServer.enabled && !codeQL.mockGitHubApiServer.recording" + }, + { + "command": "codeQL.mockGitHubApiServer.unloadScenario", + "when": "config.codeQL.mockGitHubApiServer.enabled && codeQL.mockGitHubApiServer.scenarioLoaded" + }, + { + "command": "codeQLTests.acceptOutputContextTestItem", + "when": "false" + }, + { + "command": "codeQL.gotoQLContextEditor", + "when": "false" + }, + { + "command": "codeQL.trimCache" + }, + { + "command": "codeQL.trimOverlayBaseCache", + "when": "codeQL.cliFeatures.queryServerTrimCacheWithMode" } ], "editor/context": [ { - "command": "codeQL.runQuery", - "when": "editorLangId == ql && resourceExtname == .ql" + "command": "codeQL.runQueryContextEditor", + "when": "editorLangId == ql && resourceExtname == .ql && !inDebugMode" }, { - "command": "codeQL.runQueryOnMultipleDatabases", + "command": "codeQL.runWarmOverlayBaseCacheForQueryContextEditor", + "when": "editorLangId == ql && resourceExtname == .ql && !inDebugMode && config.codeQL.canary" + }, + { + "command": "codeQL.runQueryOnMultipleDatabasesContextEditor", "when": "editorLangId == ql && resourceExtname == .ql" }, { - "command": "codeQL.runVariantAnalysis", - "when": "config.codeQL.canary && editorLangId == ql && resourceExtname == .ql" + "command": "codeQL.runVariantAnalysisContextEditor", + "when": "editorLangId == ql && resourceExtname == .ql" }, { - "command": "codeQL.viewAst", + "command": "codeQL.viewAstContextEditor", "when": "resourceScheme == codeql-zip-archive" }, { - "command": "codeQL.viewCfg", + "command": "codeQL.viewCfgContextEditor", "when": "resourceScheme == codeql-zip-archive && config.codeQL.canary" }, { - "command": "codeQL.quickEval", - "when": "editorLangId == ql" + "command": "codeQL.quickEvalContextEditor", + "when": "editorLangId == ql && debugState == inactive" }, { - "command": "codeQL.openReferencedFile", + "command": "codeQL.debugQueryContextEditor", + "when": "config.codeQL.canary && editorLangId == ql && resourceExtname == .ql && !inDebugMode" + }, + { + "command": "codeQL.startDebuggingSelectionContextEditor", + "when": "config.codeQL.canary && editorLangId == ql && debugState == inactive && debugConfigurationType == codeql" + }, + { + "command": "codeQL.continueDebuggingSelectionContextEditor", + "when": "config.codeQL.canary && editorLangId == ql && debugState == stopped && debugType == codeql" + }, + { + "command": "codeQL.openReferencedFileContextEditor", "when": "resourceExtname == .qlref" }, { - "command": "codeQL.previewQueryHelp", + "command": "codeQL.previewQueryHelpContextEditor", "when": "resourceExtname == .qhelp && isWorkspaceTrusted" }, { - "command": "codeQL.gotoQL", + "command": "codeQL.gotoQLContextEditor", "when": "editorLangId == ql-summary && config.codeQL.canary" } ] @@ -1141,14 +1944,33 @@ "title": "CodeQL", "icon": "media/logo.svg" } + ], + "panel": [ + { + "id": "codeql-methods-usage", + "title": "CodeQL Methods Usage", + "icon": "media/logo.svg" + } ] }, "views": { "ql-container": [ + { + "id": "codeQLLanguageSelection", + "name": "Language" + }, { "id": "codeQLDatabases", "name": "Databases" }, + { + "id": "codeQLQueries", + "name": "Queries" + }, + { + "id": "codeQLVariantAnalysisRepositories", + "name": "Variant Analysis Repositories" + }, { "id": "codeQLQueryHistory", "name": "Query History" @@ -1161,168 +1983,218 @@ "id": "codeQLEvalLogViewer", "name": "Evaluator Log Viewer", "when": "config.codeQL.canary" + }, + { + "id": "codeQLMethodModeling", + "type": "webview", + "name": "CodeQL Method Modeling" + } + ], + "codeql-methods-usage": [ + { + "id": "codeQLMethodsUsage", + "name": "CodeQL Methods Usage", + "when": "codeql.modelEditorOpen" } ] }, "viewsWelcome": [ + { + "view": "codeQLMethodsUsage", + "contents": "Loading..." + }, { "view": "codeQLAstViewer", "contents": "Run the 'CodeQL: View AST' command on an open source file from a CodeQL database.\n[View AST](command:codeQL.viewAst)" }, { "view": "codeQLQueryHistory", - "contents": "Run the 'CodeQL: Run Query' command on a QL query.\n[Run Query](command:codeQL.runQuery)" + "contents": "You have no query history items at the moment.\n\nSelect a database to run a CodeQL query and get your first results." + }, + { + "view": "codeQLQueries", + "contents": "We didn't find any CodeQL queries in this workspace. [Create one to get started](command:codeQLQueries.createQuery).", + "when": "codeQL.noQueries" }, { "view": "codeQLDatabases", - "contents": "Add a CodeQL database:\n[From a folder](command:codeQLDatabases.chooseDatabaseFolder)\n[From an archive](command:codeQLDatabases.chooseDatabaseArchive)\n[From a URL (as a zip file)](command:codeQLDatabases.chooseDatabaseInternet)\n[From LGTM](command:codeQLDatabases.chooseDatabaseLgtm)" + "contents": "Add a CodeQL database:\n[From a folder](command:codeQLDatabases.chooseDatabaseFolder)\n[From an archive](command:codeQLDatabases.chooseDatabaseArchive)\n[From a URL (as a zip file)](command:codeQLDatabases.chooseDatabaseInternet)\n[From GitHub](command:codeQLDatabases.chooseDatabaseGithub)" }, { "view": "codeQLEvalLogViewer", "contents": "Run the 'Show Evaluator Log (UI)' command on a CodeQL query run in the Query History view." + }, + { + "view": "codeQLVariantAnalysisRepositories", + "contents": "Set up a controller repository to start using variant analysis. [Learn more](https://codeql.github.com/docs/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva#controller-repository) about controller repositories. \n[Set up controller repository](command:codeQLVariantAnalysisRepositories.setupControllerRepository)", + "when": "!config.codeQL.variantAnalysis.controllerRepo" } ] }, "scripts": { "build": "gulp", - "watch": "npm-run-all -p watch:*", - "watch:extension": "tsc --watch", - "watch:webpack": "gulp watchView", - "watch:css": "gulp watchCss", - "test": "mocha --exit -r ts-node/register test/pure-tests/**/*.ts", - "preintegration": "rm -rf ./out/vscode-tests && gulp", - "integration": "node ./out/vscode-tests/run-integration-tests.js no-workspace,minimal-workspace", - "cli-integration": "npm run preintegration && node ./out/vscode-tests/run-integration-tests.js cli-integration", + "watch": "gulp watch", + "test": "npm-run-all test:*", + "test:unit": "cross-env TZ=UTC LANG=en-US NODE_OPTIONS=--no-experimental-strip-types jest --projects test/unit-tests", + "test:view": "cross-env NODE_ENV=test NODE_OPTIONS=--no-experimental-strip-types jest --projects src/view", + "test:vscode-integration": "npm-run-all test:vscode-integration:*", + "test:vscode-integration:activated-extension": "cross-env NODE_OPTIONS=--no-experimental-strip-types jest --projects test/vscode-tests/activated-extension", + "test:vscode-integration:no-workspace": "cross-env NODE_OPTIONS=--no-experimental-strip-types jest --projects test/vscode-tests/no-workspace", + "test:vscode-integration:minimal-workspace": "cross-env NODE_OPTIONS=--no-experimental-strip-types jest --projects test/vscode-tests/minimal-workspace", + "test:cli-integration": "cross-env NODE_OPTIONS=--no-experimental-strip-types jest --projects test/vscode-tests/cli-integration --verbose", + "clean-test-dir": "find . -type d -name .vscode-test -exec rm -r {} +", "update-vscode": "node ./node_modules/vscode/bin/install", - "format": "tsfmt -r && eslint src test --ext .ts,.tsx --fix", - "lint": "eslint src test --ext .ts,.tsx --max-warnings=0", - "format-staged": "lint-staged" + "format": "prettier --write **/*.{ts,tsx} && eslint . --fix", + "lint": "eslint . --max-warnings=0", + "lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint . --max-warnings=0 --format @microsoft/eslint-formatter-sarif --output-file=build/eslint.sarif", + "lint:markdown": "markdownlint-cli2 \"../../**/*.{md,mdx}\" \"!**/node_modules/**\" \"!**/.vscode-test/**\" \"!**/build/cli/v*/**\"", + "find-deadcode": "vite-node scripts/find-deadcode.ts", + "format-staged": "lint-staged", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build", + "lint:scenarios": "vite-node scripts/lint-scenarios.ts", + "generate": "npm-run-all -p generate:*", + "generate:schemas": "vite-node scripts/generate-schemas.ts", + "generate:chromium-version": "vite-node scripts/generate-chromium-version.ts", + "check-types": "find . -type f -name \"tsconfig.json\" -not -path \"./node_modules/*\" -not -path \"*/.vscode-test/*\" | sed -r 's|/[^/]+$||' | sort | uniq | xargs -I {} sh -c \"echo Checking types in {} && cd {} && npx tsc --noEmit\"", + "postinstall": "patch-package", + "prepare": "cd ../.. && husky" }, "dependencies": { - "@octokit/rest": "^18.5.6", - "@octokit/plugin-retry": "^3.0.9", - "@primer/octicons-react": "^16.3.0", - "@primer/react": "^35.0.0", - "@vscode/codicons": "^0.0.31", - "@vscode/webview-ui-toolkit": "^1.0.0", - "child-process-promise": "^2.2.1", - "classnames": "~2.2.6", - "d3": "^6.3.1", - "d3-graphviz": "^2.6.1", - "fs-extra": "^10.0.1", - "glob-promise": "^4.2.2", - "js-yaml": "^4.1.0", - "minimist": "~1.2.6", - "nanoid": "^3.2.0", - "node-fetch": "~2.6.7", - "path-browserify": "^1.0.1", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "semver": "~7.3.2", - "source-map": "^0.7.4", + "@floating-ui/react": "^0.27.19", + "@octokit/plugin-retry": "^7.2.0", + "@octokit/plugin-throttling": "^9.6.0", + "@octokit/rest": "^22.0.1", + "@vscode-elements/react-elements": "^0.9.0", + "@vscode/codicons": "^0.0.44", + "@vscode/debugadapter": "^1.68.0", + "@vscode/debugprotocol": "^1.68.0", + "ajv": "^8.18.0", + "chokidar": "^3.6.0", + "d3": "^7.9.0", + "d3-graphviz": "^5.6.0", + "@hpcc-js/wasm-graphviz": "^1.21.1", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.1", + "koffi": "^2.15.5", + "msw": "^2.12.7", + "nanoid": "^5.0.7", + "p-queue": "^8.0.1", + "proper-lockfile": "^4.1.2", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "semver": "^7.6.2", + "source-map": "^0.7.6", "source-map-support": "^0.5.21", - "stream": "^0.0.2", - "stream-chain": "~2.2.4", - "stream-json": "~1.7.3", - "styled-components": "^5.3.3", - "tmp": "^0.1.0", - "tmp-promise": "~3.0.2", - "tree-kill": "~1.2.2", - "unzipper": "~0.10.5", + "stream-json": "^1.9.1", + "styled-components": "^6.1.13", + "tmp": "^0.2.5", + "tmp-promise": "^3.0.2", + "tree-kill": "^1.2.2", "vscode-extension-telemetry": "^0.1.6", - "vscode-jsonrpc": "^5.0.1", - "vscode-languageclient": "^6.1.3", - "vscode-test-adapter-api": "~1.7.0", - "vscode-test-adapter-util": "~0.7.0", - "zip-a-folder": "~1.1.3" + "vscode-jsonrpc": "^8.2.1", + "vscode-languageclient": "^8.0.2", + "yauzl": "^3.3.0", + "zip-a-folder": "^4.0.4" }, "devDependencies": { - "@types/chai": "^4.1.7", - "@types/chai-as-promised": "~7.1.2", - "@types/child-process-promise": "^2.2.1", - "@types/classnames": "~2.2.9", - "@types/d3": "^6.2.0", + "@babel/core": "^7.28.3", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/preset-env": "^7.29.0", + "@babel/preset-react": "^7.27.1", + "@babel/preset-typescript": "^7.28.5", + "@eslint/js": "^9.39.2", + "@faker-js/faker": "^10.3.0", + "@github/markdownlint-github": "^0.8.0", + "@jest/environment": "^30.2.0", + "@jest/environment-jsdom-abstract": "^30.2.0", + "@microsoft/eslint-formatter-sarif": "^3.1.0", + "@playwright/test": "^1.58.2", + "@storybook/addon-a11y": "^10.3.5", + "@storybook/addon-docs": "^10.3.5", + "@storybook/addon-links": "^10.3.5", + "@storybook/csf": "^0.1.13", + "@storybook/icons": "^2.0.1", + "@storybook/react": "^10.3.5", + "@storybook/react-vite": "^10.3.5", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^14.6.1", + "@types/cross-spawn": "^6.0.6", + "@types/d3": "^7.4.0", "@types/d3-graphviz": "^2.6.6", - "@types/del": "^4.0.0", - "@types/fs-extra": "^9.0.6", - "@types/glob": "^7.1.1", - "@types/google-protobuf": "^3.2.7", - "@types/gulp": "^4.0.9", - "@types/gulp-replace": "^1.1.0", - "@types/gulp-sourcemaps": "0.0.32", - "@types/js-yaml": "^3.12.5", - "@types/jszip": "~3.1.6", - "@types/mocha": "^9.0.0", - "@types/nanoid": "^3.0.0", - "@types/node": "^16.11.25", - "@types/node-fetch": "~2.5.2", - "@types/proxyquire": "~1.3.28", - "@types/react": "^17.0.2", - "@types/react-dom": "^17.0.2", - "@types/sarif": "~2.1.2", - "@types/semver": "~7.2.0", - "@types/sinon": "~7.5.2", - "@types/sinon-chai": "~3.2.3", - "@types/stream-chain": "~2.0.1", - "@types/stream-json": "~1.7.1", + "@types/fs-extra": "^11.0.1", + "@types/gulp": "^4.0.18", + "@types/jest": "^30.0.0", + "@types/js-yaml": "^4.0.6", + "@types/node": "22.19.*", + "@types/proper-lockfile": "^4.1.4", + "@types/react": "^19.2.3", + "@types/react-dom": "^19.2.3", + "@types/sarif": "^2.1.2", + "@types/semver": "^7.5.8", + "@types/stream-json": "^1.7.8", + "@types/styled-components": "^5.1.11", + "@types/tar-stream": "^3.1.4", "@types/through2": "^2.0.36", - "@types/tmp": "^0.1.0", - "@types/unzipper": "~0.10.1", - "@types/vscode": "^1.59.0", - "@types/webpack": "^5.28.0", - "@types/xml2js": "~0.4.4", - "@typescript-eslint/eslint-plugin": "^4.26.0", - "@typescript-eslint/parser": "^4.26.0", + "@types/tmp": "^0.2.6", + "@types/vscode": "1.90.0", + "@types/yauzl": "^2.10.3", + "@typescript-eslint/eslint-plugin": "^8.58.2", + "@typescript-eslint/parser": "^8.58.2", + "@vscode/test-electron": "^2.5.2", + "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", - "applicationinsights": "^1.8.7", - "chai": "^4.2.0", - "chai-as-promised": "~7.1.1", - "css-loader": "~3.1.0", + "applicationinsights": "^2.9.8", + "cosmiconfig": "^9.0.0", + "cross-env": "^10.1.0", + "cross-spawn": "^7.0.6", "del": "^6.0.0", - "eslint": "~6.8.0", - "eslint-plugin-react": "~7.19.0", - "glob": "^7.1.4", - "gulp": "^4.0.2", + "eslint": "^9.28.0", + "eslint-config-prettier": "^10.1.8", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-etc": "^2.0.2", + "eslint-plugin-github": "^6.0.0", + "eslint-plugin-jest-dom": "^5.5.0", + "eslint-plugin-prettier": "^5.2.6", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-storybook": "^10.3.3", + "glob": "^11.1.0", + "gulp": "^5.0.1", + "gulp-esbuild": "^0.14.1", "gulp-replace": "^1.1.3", - "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^5.0.1", - "husky": "~4.3.8", - "lint-staged": "~10.2.2", - "mocha": "^10.0.0", - "mocha-sinon": "~2.1.2", + "husky": "^9.1.7", + "jest": "^30.2.0", + "jest-runner-vscode": "^3.0.1", + "jsdom": "^27.0.1", + "lint-staged": "^15.3.0", + "markdownlint-cli2": "^0.17.0", + "markdownlint-cli2-formatter-pretty": "^0.0.9", "npm-run-all": "^4.1.5", - "prettier": "~2.0.5", - "proxyquire": "~2.1.3", - "sinon": "~13.0.1", - "sinon-chai": "~3.5.0", - "style-loader": "~3.3.1", + "patch-package": "^8.0.1", + "prettier": "^3.6.1", + "storybook": "^10.3.5", + "tar-stream": "^3.1.8", "through2": "^4.0.2", - "ts-loader": "^8.1.0", - "ts-node": "^10.7.0", - "ts-protoc-gen": "^0.9.0", - "typescript": "^4.5.5", - "typescript-formatter": "^7.2.2", - "vsce": "^2.7.0", - "vscode-test": "^1.4.0", - "webpack": "^5.62.2", - "webpack-cli": "^4.6.0" - }, - "husky": { - "hooks": { - "pre-commit": "npm run format-staged", - "pre-push": "npm run lint && scripts/forbid-mocha-only" - } + "ts-jest": "^29.4.6", + "ts-json-schema-generator": "^2.3.0", + "ts-node": "^10.9.2", + "ts-unused-exports": "^11.0.1", + "typescript": "^5.9.3", + "typescript-plugin-css-modules": "^5.2.0", + "vite": "^7.3.2", + "vite-node": "^5.3.0" }, "lint-staged": { "./**/*.{json,css,scss}": [ "prettier --write" ], "./**/*.{ts,tsx}": [ - "tsfmt -r", + "prettier --write", "eslint --fix" ] - }, - "resolutions": { - "glob-parent": "6.0.0" } } diff --git a/extensions/ql-vscode/patches/jest-runner-vscode+3.0.1.patch b/extensions/ql-vscode/patches/jest-runner-vscode+3.0.1.patch new file mode 100644 index 00000000000..f71e37b268e --- /dev/null +++ b/extensions/ql-vscode/patches/jest-runner-vscode+3.0.1.patch @@ -0,0 +1,139 @@ +diff --git a/node_modules/jest-runner-vscode/dist/child/runner.js b/node_modules/jest-runner-vscode/dist/child/runner.js +index 0663c5c..bdf4a8b 100644 +--- a/node_modules/jest-runner-vscode/dist/child/runner.js ++++ b/node_modules/jest-runner-vscode/dist/child/runner.js +@@ -18,10 +18,13 @@ async function run() { + const ipc = new ipc_client_1.default('child'); + const disconnected = new Promise(resolve => ipc.on('disconnect', resolve)); + try { +- const { PARENT_JEST_OPTIONS } = process_1.default.env; ++ const { PARENT_JEST_OPTIONS, PARENT_CWD } = process_1.default.env; + if (!PARENT_JEST_OPTIONS) { + throw new Error('PARENT_JEST_OPTIONS is not defined'); + } ++ if (PARENT_CWD) { ++ process_1.default.chdir(PARENT_CWD); ++ } + const options = JSON.parse(PARENT_JEST_OPTIONS); + const jestOptions = [ + ...options.args, +@@ -39,6 +42,9 @@ async function run() { + ...(argv.projects?.map(project => path_1.default.resolve(project)) || []), + options.workspacePath, + ]); ++ const testPaths = new Set(argv._.map(testPath => path_1.default.resolve(testPath))); ++ argv._ = [...testPaths]; ++ + await (0, core_1.runCLI)(argv, [...projects]); + } + catch (error) { +diff --git a/node_modules/jest-runner-vscode/dist/public-types.d.ts b/node_modules/jest-runner-vscode/dist/public-types.d.ts +index 57716e5..d8614af 100644 +--- a/node_modules/jest-runner-vscode/dist/public-types.d.ts ++++ b/node_modules/jest-runner-vscode/dist/public-types.d.ts +@@ -59,4 +59,5 @@ export interface RunnerOptions { + * code, or download progress. Defaults to `false`. + */ + quiet?: boolean; ++ retries?: number; + } +diff --git a/node_modules/jest-runner-vscode/dist/run-vscode.d.ts b/node_modules/jest-runner-vscode/dist/run-vscode.d.ts +index 8657ace..4d35409 100644 +--- a/node_modules/jest-runner-vscode/dist/run-vscode.d.ts ++++ b/node_modules/jest-runner-vscode/dist/run-vscode.d.ts +@@ -16,5 +16,7 @@ export declare type RunVSCodeOptions = { + onFailure: JestRunner.OnTestFailure; + ipc: InstanceType; + quiet?: boolean; ++ attempt?: number; ++ maxRetries?: number; + }; +-export default function runVSCode({ vscodePath, args, jestArgs, env, tests, globalConfig, filterOutput, onStart, onResult, onFailure, ipc, quiet, }: RunVSCodeOptions): Promise; ++export default function runVSCode(options: RunVSCodeOptions): Promise; +diff --git a/node_modules/jest-runner-vscode/dist/run-vscode.js b/node_modules/jest-runner-vscode/dist/run-vscode.js +index 5d8e513..7e556ee 100644 +--- a/node_modules/jest-runner-vscode/dist/run-vscode.js ++++ b/node_modules/jest-runner-vscode/dist/run-vscode.js +@@ -5,8 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) { + Object.defineProperty(exports, "__esModule", { value: true }); + const child_process_1 = __importDefault(require("child_process")); + const console_1 = __importDefault(require("console")); +-async function runVSCode({ vscodePath, args, jestArgs, env, tests, globalConfig, filterOutput, onStart, onResult, onFailure, ipc, quiet, }) { +- return await new Promise(resolve => { ++const fs_1 = __importDefault(require("fs")); ++const path_1 = __importDefault(require("path")); ++const os_1 = __importDefault(require("os")); ++async function runVSCode(options) { ++ const { vscodePath, args, jestArgs, env, tests, globalConfig, filterOutput, onStart, onResult, onFailure, ipc, quiet, attempt, maxRetries, } = options; ++ const tempUserDir = await fs_1.default.promises.mkdtemp(path_1.default.resolve(os_1.default.tmpdir(), 'jest-runner-vscode-user-data-')); ++ return await new Promise(promiseResolve => { ++ const resolve = () => { ++ fs_1.default.rm(tempUserDir, { recursive: true }, () => { ++ promiseResolve(); ++ }); ++ }; + const useStdErr = globalConfig.json || globalConfig.useStderr; + const log = useStdErr + ? console_1.default.error.bind(console_1.default) +@@ -82,7 +92,11 @@ async function runVSCode({ vscodePath, args, jestArgs, env, tests, globalConfig, + ipc.server.on('stdout', onStdout); + ipc.server.on('stderr', onStderr); + ipc.server.on('error', onError); +- const vscode = child_process_1.default.spawn(vscodePath, args, { env: environment }); ++ const launchArgs = args; ++ if (!hasArg('user-data-dir', launchArgs)) { ++ launchArgs.push(`--user-data-dir=${tempUserDir}`); ++ } ++ const vscode = child_process_1.default.spawn(vscodePath, launchArgs, { env: environment }); + if (!silent && !filterOutput) { + vscode.stdout.pipe(process.stdout); + vscode.stderr.pipe(process.stderr); +@@ -99,6 +113,29 @@ async function runVSCode({ vscodePath, args, jestArgs, env, tests, globalConfig, + exited = true; + const exit = code ?? signal ?? ''; + const message = `VS Code exited with exit code ${exit}`; ++ const currentAttempt = attempt ?? 0; ++ const incompleteTests = tests.some(test => !completedTests.has(test)); ++ if (maxRetries && ++ maxRetries > 0 && ++ currentAttempt < maxRetries && ++ incompleteTests) { ++ silent || quiet || log(message); ++ const newAttempt = currentAttempt + 1; ++ const newTests = tests.filter(test => !completedTests.has(test)); ++ ipc.server.off('testFileResult', onTestFileResult); ++ ipc.server.off('testStart', onTestStart); ++ ipc.server.off('testFileStart', onTestStart); ++ ipc.server.off('stdout', onStdout); ++ ipc.server.off('stderr', onStderr); ++ ipc.server.off('error', onError); ++ await runVSCode({ ++ ...options, ++ tests: newTests, ++ attempt: newAttempt, ++ }); ++ resolve(); ++ return; ++ } + if (typeof code !== 'number' || code !== 0) { + silent || quiet || console_1.default.error(message); + const error = vscodeError ?? childError ?? new Error(message); +@@ -138,3 +175,6 @@ async function runVSCode({ vscodePath, args, jestArgs, env, tests, globalConfig, + }); + } + exports.default = runVSCode; ++function hasArg(argName, argList) { ++ return argList.some(a => a === `--${argName}` || a.startsWith(`--${argName}=`)); ++} +diff --git a/node_modules/jest-runner-vscode/dist/runner.js b/node_modules/jest-runner-vscode/dist/runner.js +index e24c976..c374022 100644 +--- a/node_modules/jest-runner-vscode/dist/runner.js ++++ b/node_modules/jest-runner-vscode/dist/runner.js +@@ -107,6 +107,7 @@ class VSCodeTestRunner { + onFailure, + ipc, + quiet: vscodeOptions.quiet, ++ maxRetries: vscodeOptions.retries, + }); + } + catch (error) { diff --git a/extensions/ql-vscode/scripts/add-fields-to-scenarios.ts b/extensions/ql-vscode/scripts/add-fields-to-scenarios.ts new file mode 100644 index 00000000000..b6081136a8c --- /dev/null +++ b/extensions/ql-vscode/scripts/add-fields-to-scenarios.ts @@ -0,0 +1,148 @@ +/** + * This scripts helps after adding a new field in the GitHub API. You will + * need to modify this script to add the new field to the scenarios. This + * is just a template and should not be used as-is since it has already been + * applied. + * + * Depending on the actual implementation of the script, you might run into + * rate limits. If that happens, you can set a `GITHUB_TOKEN` environment + * variable. For example, use: ``export GITHUB_TOKEN=`gh auth token```. + * + * Usage: npx ts-node scripts/add-fields-to-scenarios.ts + */ + +import { pathExists, readJson, writeJson } from "fs-extra"; +import { resolve, relative } from "path"; + +import type { Octokit } from "@octokit/core"; +import type { EndpointDefaults } from "@octokit/types"; +import type { RestEndpointMethodTypes } from "@octokit/rest"; +import { throttling } from "@octokit/plugin-throttling"; + +import { getFiles } from "./util/files"; +import type { GitHubApiRequest } from "../src/common/mock-gh-api/gh-api-request"; +import { isGetVariantAnalysisRequest } from "../src/common/mock-gh-api/gh-api-request"; +import type { VariantAnalysis } from "../src/variant-analysis/gh-api/variant-analysis"; +import type { RepositoryWithMetadata } from "../src/variant-analysis/gh-api/repository"; +import { AppOctokit } from "../src/common/octokit"; + +const extensionDirectory = resolve(__dirname, ".."); +const scenariosDirectory = resolve( + extensionDirectory, + "src/common/mock-gh-api/scenarios", +); + +// Make sure we don't run into rate limits by automatically waiting until we can +// make another request. +const MyOctokit = AppOctokit.plugin(throttling); + +const auth = process.env.GITHUB_TOKEN; + +const octokit = new MyOctokit({ + auth, + throttle: { + onRateLimit: ( + retryAfter: number, + options: EndpointDefaults, + octokit: Octokit, + ): boolean => { + octokit.log.warn( + `Request quota exhausted for request ${options.method} ${options.url}. Retrying after ${retryAfter} seconds!`, + ); + + return true; + }, + onSecondaryRateLimit: ( + _retryAfter: number, + options: EndpointDefaults, + octokit: Octokit, + ): void => { + octokit.log.warn( + `SecondaryRateLimit detected for request ${options.method} ${options.url}`, + ); + }, + }, +}); +const repositories = new Map< + number, + RestEndpointMethodTypes["repos"]["get"]["response"]["data"] +>(); + +async function addFieldsToRepository(repository: RepositoryWithMetadata) { + if (!repositories.has(repository.id)) { + const [owner, repo] = repository.full_name.split("/"); + + const apiRepository = await octokit.repos.get({ + owner, + repo, + }); + + repositories.set(repository.id, apiRepository.data); + } + + const apiRepository = repositories.get(repository.id)!; + + repository.stargazers_count = apiRepository.stargazers_count; + repository.updated_at = apiRepository.updated_at; +} + +async function addFieldsToScenarios() { + if (!(await pathExists(scenariosDirectory))) { + console.error(`Scenarios directory does not exist: ${scenariosDirectory}`); + return; + } + + for await (const file of getFiles(scenariosDirectory)) { + if (!file.endsWith(".json")) { + continue; + } + + const data: GitHubApiRequest = await readJson(file); + + if (!isGetVariantAnalysisRequest(data)) { + continue; + } + + if (!data.response.body || !("controller_repo" in data.response.body)) { + continue; + } + + console.log(`Adding fields to '${relative(scenariosDirectory, file)}'`); + + const variantAnalysis = data.response.body as VariantAnalysis; + + if (variantAnalysis.scanned_repositories) { + for (const item of variantAnalysis.scanned_repositories) { + await addFieldsToRepository(item.repository); + } + } + + if (variantAnalysis.skipped_repositories?.access_mismatch_repos) { + for (const item of variantAnalysis.skipped_repositories + .access_mismatch_repos.repositories) { + await addFieldsToRepository(item); + } + } + + if (variantAnalysis.skipped_repositories?.no_codeql_db_repos) { + for (const item of variantAnalysis.skipped_repositories.no_codeql_db_repos + .repositories) { + await addFieldsToRepository(item); + } + } + + if (variantAnalysis.skipped_repositories?.over_limit_repos) { + for (const item of variantAnalysis.skipped_repositories.over_limit_repos + .repositories) { + await addFieldsToRepository(item); + } + } + + await writeJson(file, data, { spaces: 2 }); + } +} + +addFieldsToScenarios().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); diff --git a/extensions/ql-vscode/scripts/bump-supported-cli-versions.ts b/extensions/ql-vscode/scripts/bump-supported-cli-versions.ts new file mode 100644 index 00000000000..12985cf4bdb --- /dev/null +++ b/extensions/ql-vscode/scripts/bump-supported-cli-versions.ts @@ -0,0 +1,95 @@ +import { spawnSync } from "child_process"; +import { resolve } from "path"; +import { appendFile, outputJson, readJson } from "fs-extra"; +import { SemVer } from "semver"; + +const supportedCliVersionsPath = resolve( + __dirname, + "..", + "supported_cli_versions.json", +); + +async function bumpSupportedCliVersions() { + const existingVersions = (await readJson( + supportedCliVersionsPath, + )) as string[]; + + const release = runGhJSON([ + "release", + "view", + "--json", + "id,name", + "--repo", + "github/codeql-cli-binaries", + ]); + + // There are two cases: + // - Replace the version if it's the same major and minor version + // - Prepend the version if it's a new major or minor version + + const latestSupportedVersion = new SemVer(existingVersions[0]); + const latestReleaseVersion = new SemVer(release.name); + + if (latestSupportedVersion.compare(latestReleaseVersion) === 0) { + console.log("No need to update supported CLI versions"); + return; + } + + if (process.env.GITHUB_OUTPUT) { + await appendFile( + process.env.GITHUB_OUTPUT, + `PREVIOUS_VERSION=${existingVersions[0]}\n`, + { + encoding: "utf-8", + }, + ); + } + + if ( + latestSupportedVersion.major === latestReleaseVersion.major && + latestSupportedVersion.minor === latestReleaseVersion.minor + ) { + existingVersions[0] = release.name; + console.log(`Replaced latest supported CLI version with ${release.name}`); + } else { + existingVersions.unshift(release.name); + console.log(`Added latest supported CLI version ${release.name}`); + } + + await outputJson(supportedCliVersionsPath, existingVersions, { + spaces: 2, + finalEOL: true, + }); + + if (process.env.GITHUB_OUTPUT) { + await appendFile( + process.env.GITHUB_OUTPUT, + `LATEST_VERSION=${existingVersions[0]}\n`, + { + encoding: "utf-8", + }, + ); + } +} + +bumpSupportedCliVersions().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); + +function runGh(args: readonly string[]): string { + const gh = spawnSync("gh", args); + if (gh.status !== 0) { + throw new Error(`Failed to run gh ${args.join(" ")}: ${gh.stderr}`); + } + return gh.stdout.toString("utf-8"); +} + +function runGhJSON(args: readonly string[]): T { + return JSON.parse(runGh(args)); +} + +type Release = { + id: string; + name: string; +}; diff --git a/extensions/ql-vscode/scripts/find-deadcode.ts b/extensions/ql-vscode/scripts/find-deadcode.ts new file mode 100644 index 00000000000..bfe732d53bc --- /dev/null +++ b/extensions/ql-vscode/scripts/find-deadcode.ts @@ -0,0 +1,52 @@ +import { basename, join, relative, resolve } from "path"; +import { analyzeTsConfig } from "ts-unused-exports"; +import { containsPath, pathsEqual } from "../src/common/files"; +import { exit } from "process"; + +function ignoreFile(file: string): boolean { + return ( + containsPath("gulpfile.ts", file) || + containsPath(".storybook", file) || + containsPath(join("src", "stories"), file) || + pathsEqual( + join("test", "vscode-tests", "jest-runner-vscode-codeql-cli.ts"), + file, + ) || + pathsEqual(join("src", "view", "jest-environment-jsdom.ts"), file) || + basename(file) === "jest.config.ts" || + basename(file) === "index.tsx" || + basename(file) === "index.ts" || + basename(file) === "playwright.config.ts" + ); +} + +function main() { + const repositoryRoot = resolve(join(__dirname, "..")); + + const result = analyzeTsConfig("tsconfig.deadcode.json"); + let foundUnusedExports = false; + + for (const [filepath, exportNameAndLocations] of Object.entries( + result.unusedExports, + )) { + const relativeFilepath = relative(repositoryRoot, filepath); + + if (ignoreFile(relativeFilepath)) { + continue; + } + + foundUnusedExports = true; + + console.log(relativeFilepath); + for (const exportNameAndLocation of exportNameAndLocations) { + console.log(` ${exportNameAndLocation.exportName}`); + } + console.log(); + } + + if (foundUnusedExports) { + exit(1); + } +} + +main(); diff --git a/extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts b/extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts new file mode 100644 index 00000000000..138fb28d645 --- /dev/null +++ b/extensions/ql-vscode/scripts/fix-scenario-file-numbering.ts @@ -0,0 +1,81 @@ +/** + * This scripts helps after recording a scenario to be used for replaying + * with the mock GitHub API server. + * + * Once the scenario has been recorded, it's often useful to remove some of + * the requests to speed up the replay, particularly ones that fetch the + * variant analysis status. Once some of the requests have manually been + * removed, this script can be used to update the numbering of the files. + * + * Usage: npx ts-node scripts/fix-scenario-file-numbering.ts + */ + +import { pathExists, readdir, rename, readJson, writeJSON } from "fs-extra"; +import { resolve, extname, basename, join } from "path"; + +if (process.argv.length !== 3) { + console.error("Expected 1 argument - the scenario name"); +} + +const scenarioName = process.argv[2]; + +const extensionDirectory = resolve(__dirname, ".."); +const scenariosDirectory = resolve( + extensionDirectory, + "src/common/mock-gh-api/scenarios", +); +const scenarioDirectory = resolve(scenariosDirectory, scenarioName); + +async function fixScenarioFiles() { + console.log(scenarioDirectory); + if (!(await pathExists(scenarioDirectory))) { + console.error(`Scenario directory does not exist: ${scenarioDirectory}`); + return; + } + + const files = await readdir(scenarioDirectory); + + const orderedFiles = files.sort((a, b) => { + const aNum = parseInt(a.split("-")[0]); + const bNum = parseInt(b.split("-")[0]); + return aNum - bNum; + }); + + let index = 0; + for (const file of orderedFiles) { + const ext = extname(file); + if (ext === ".json") { + const fileName = basename(file, ext); + const fileCurrentIndex = parseInt(fileName.split("-")[0]); + const fileNameWithoutIndex = fileName.split("-")[1]; + if (fileCurrentIndex !== index) { + const newFileName = `${index}-${fileNameWithoutIndex}${ext}`; + const oldFilePath = join(scenarioDirectory, file); + const newFilePath = join(scenarioDirectory, newFileName); + console.log(`Rename: ${oldFilePath} -> ${newFilePath}`); + await rename(oldFilePath, newFilePath); + + if (fileNameWithoutIndex === "getVariantAnalysisRepoResult") { + const oldZipFileName = `${fileCurrentIndex}-getVariantAnalysisRepoResult.body.zip`; + const newZipFileName = `${index}-getVariantAnalysisRepoResult.body.zip`; + const oldZipFilePath = join(scenarioDirectory, oldZipFileName); + const newZipFilePath = join(scenarioDirectory, newZipFileName); + console.log(`Rename: ${oldZipFilePath} -> ${newZipFilePath}`); + await rename(oldZipFilePath, newZipFilePath); + + const json = await readJson(newFilePath); + json.response.body = `file:${newZipFileName}`; + console.log(`Response.body change to ${json.response.body}`); + await writeJSON(newFilePath, json); + } + } + + index++; + } + } +} + +fixScenarioFiles().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); diff --git a/extensions/ql-vscode/scripts/forbid-mocha-only b/extensions/ql-vscode/scripts/forbid-test-only similarity index 100% rename from extensions/ql-vscode/scripts/forbid-mocha-only rename to extensions/ql-vscode/scripts/forbid-test-only diff --git a/extensions/ql-vscode/scripts/generate-chromium-version.ts b/extensions/ql-vscode/scripts/generate-chromium-version.ts new file mode 100644 index 00000000000..c5e3c7e449b --- /dev/null +++ b/extensions/ql-vscode/scripts/generate-chromium-version.ts @@ -0,0 +1,42 @@ +import { join, resolve } from "path"; +import { outputFile, readJSON } from "fs-extra"; +import { minVersion } from "semver"; +import { getVersionInformation } from "./util/vscode-versions"; + +const extensionDirectory = resolve(__dirname, ".."); + +async function generateChromiumVersion() { + const packageJson = await readJSON( + resolve(extensionDirectory, "package.json"), + ); + + const minimumVsCodeVersion = minVersion(packageJson.engines.vscode)?.version; + if (!minimumVsCodeVersion) { + throw new Error("Could not find minimum VS Code version"); + } + + const versionInformation = await getVersionInformation(minimumVsCodeVersion); + + const chromiumMajorVersion = versionInformation.chromiumVersion.split(".")[0]; + + console.log( + `VS Code ${minimumVsCodeVersion} uses Chromium ${chromiumMajorVersion}`, + ); + + await outputFile( + join(extensionDirectory, "gulpfile.ts", "chromium-version.json"), + `${JSON.stringify( + { + chromiumVersion: chromiumMajorVersion, + electronVersion: versionInformation.electronVersion, + }, + null, + 2, + )}\n`, + ); +} + +generateChromiumVersion().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); diff --git a/extensions/ql-vscode/scripts/generate-schemas.ts b/extensions/ql-vscode/scripts/generate-schemas.ts new file mode 100644 index 00000000000..8d4562d5442 --- /dev/null +++ b/extensions/ql-vscode/scripts/generate-schemas.ts @@ -0,0 +1,82 @@ +import { createGenerator } from "ts-json-schema-generator"; +import { join, resolve } from "path"; +import { outputFile } from "fs-extra"; +import { format, resolveConfig } from "prettier"; + +const extensionDirectory = resolve(__dirname, ".."); + +const schemas = [ + { + path: join(extensionDirectory, "src", "packaging", "qlpack-file.ts"), + type: "QlPackFile", + schemaPath: join( + extensionDirectory, + "src", + "packaging", + "qlpack-file.schema.json", + ), + }, + { + path: join( + extensionDirectory, + "src", + "model-editor", + "extension-pack-metadata.ts", + ), + type: "ExtensionPackMetadata", + schemaPath: join( + extensionDirectory, + "src", + "model-editor", + "extension-pack-metadata.schema.json", + ), + }, + { + path: join( + extensionDirectory, + "src", + "model-editor", + "model-extension-file.ts", + ), + type: "ModelExtensionFile", + schemaPath: join( + extensionDirectory, + "src", + "model-editor", + "model-extension-file.schema.json", + ), + }, +]; + +async function generateSchema( + schemaDefinition: (typeof schemas)[number], +): Promise { + const schema = createGenerator({ + path: schemaDefinition.path, + tsconfig: resolve(extensionDirectory, "tsconfig.json"), + type: schemaDefinition.type, + skipTypeCheck: true, + topRef: true, + additionalProperties: true, + }).createSchema(schemaDefinition.type); + + const schemaJson = JSON.stringify(schema, null, 2); + + const prettierOptions = await resolveConfig(schemaDefinition.schemaPath); + + const formattedSchemaJson = await format(schemaJson, { + ...prettierOptions, + filepath: schemaDefinition.schemaPath, + }); + + await outputFile(schemaDefinition.schemaPath, formattedSchemaJson); +} + +async function generateSchemas() { + await Promise.all(schemas.map(generateSchema)); +} + +generateSchemas().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); diff --git a/extensions/ql-vscode/scripts/lint-scenarios.ts b/extensions/ql-vscode/scripts/lint-scenarios.ts new file mode 100644 index 00000000000..85b8273681f --- /dev/null +++ b/extensions/ql-vscode/scripts/lint-scenarios.ts @@ -0,0 +1,78 @@ +import { pathExists, readFile } from "fs-extra"; +import { resolve, relative } from "path"; + +import Ajv from "ajv"; +import { createGenerator } from "ts-json-schema-generator"; + +import { getFiles } from "./util/files"; + +const extensionDirectory = resolve(__dirname, ".."); +const rootDirectory = resolve(extensionDirectory, "../.."); +const scenariosDirectory = resolve( + extensionDirectory, + "src/common/mock-gh-api/scenarios", +); + +const debug = process.env.RUNNER_DEBUG || process.argv.includes("--debug"); + +async function lintScenarios() { + const schema = createGenerator({ + path: resolve( + extensionDirectory, + "src/common/mock-gh-api/gh-api-request.ts", + ), + tsconfig: resolve(extensionDirectory, "tsconfig.json"), + type: "GitHubApiRequest", + skipTypeCheck: true, + topRef: true, + additionalProperties: true, + }).createSchema("GitHubApiRequest"); + + const ajv = new Ajv(); + + if (!ajv.validateSchema(schema)) { + throw new Error(`Invalid schema: ${ajv.errorsText()}`); + } + + const validate = ajv.compile(schema); + + let invalidFiles = 0; + + if (!(await pathExists(scenariosDirectory))) { + console.error(`Scenarios directory does not exist: ${scenariosDirectory}`); + // Do not exit with a non-zero status code, as this is not a fatal error. + return; + } + + for await (const file of getFiles(scenariosDirectory)) { + if (!file.endsWith(".json")) { + continue; + } + + const contents = await readFile(file, "utf8"); + const data = JSON.parse(contents); + + if (!validate(data)) { + validate.errors?.forEach((error) => { + // https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-error-message + console.log( + `::error file=${relative(rootDirectory, file)}::${ + error.instancePath + }: ${error.message}`, + ); + }); + invalidFiles++; + } else if (debug) { + console.log(`File '${relative(rootDirectory, file)}' is valid`); + } + } + + if (invalidFiles > 0) { + process.exit(1); + } +} + +lintScenarios().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); diff --git a/extensions/ql-vscode/scripts/source-map.ts b/extensions/ql-vscode/scripts/source-map.ts new file mode 100644 index 00000000000..f0e6af88923 --- /dev/null +++ b/extensions/ql-vscode/scripts/source-map.ts @@ -0,0 +1,258 @@ +/** + * This scripts helps finding the original source file and line number for a + * given file and line number in the compiled extension. It currently only + * works with released extensions. + * + * Usage: npx ts-node scripts/source-map.ts :: + * For example: npx ts-node scripts/source-map.ts v1.7.8 "/Users/user/.vscode/extensions/github.vscode-codeql-1.7.8/out/extension.js:131164:13" + * + * Alternative usage: npx ts-node scripts/source-map.ts + * For example: npx ts-node scripts/source-map.ts v1.7.8 'Error: Failed to find CodeQL distribution. + * at CodeQLCliServer.getCodeQlPath (/Users/user/.vscode/extensions/github.vscode-codeql-1.7.8/out/extension.js:131164:13) + * at CodeQLCliServer.launchProcess (/Users/user/.vscode/extensions/github.vscode-codeql-1.7.8/out/extension.js:131169:24) + * at CodeQLCliServer.runCodeQlCliInternal (/Users/user/.vscode/extensions/github.vscode-codeql-1.7.8/out/extension.js:131194:24) + * at CodeQLCliServer.runJsonCodeQlCliCommand (/Users/user/.vscode/extensions/github.vscode-codeql-1.7.8/out/extension.js:131330:20) + * at CodeQLCliServer.resolveRam (/Users/user/.vscode/extensions/github.vscode-codeql-1.7.8/out/extension.js:131455:12) + * at QueryServerClient2.startQueryServerImpl (/Users/user/.vscode/extensions/github.vscode-codeql-1.7.8/out/extension.js:138618:21)' + */ + +import { spawnSync } from "child_process"; +import { basename, resolve } from "path"; +import { pathExists, readJSON } from "fs-extra"; +import type { RawSourceMap } from "source-map"; +import { SourceMapConsumer } from "source-map"; +import { unzipToDirectorySequentially } from "../src/common/unzip"; + +if (process.argv.length !== 4) { + console.error( + "Expected 2 arguments - the version number and the filename:line number", + ); +} + +const stackLineRegex = + /at (?.*)? \((?.*):(?\d+):(?\d+)\)/gm; + +const versionNumber = process.argv[2].startsWith("v") + ? process.argv[2] + : `v${process.argv[2]}`; +const stacktrace = process.argv[3]; + +async function extractSourceMap() { + const releaseAssetsDirectory = resolve( + __dirname, + "..", + "artifacts", + "release-assets", + versionNumber, + ); + const sourceMapsDirectory = resolve( + __dirname, + "..", + "artifacts", + "source-maps", + versionNumber, + ); + + if (!(await pathExists(sourceMapsDirectory))) { + console.log("Downloading source maps..."); + + const release = runGhJSON([ + "release", + "view", + versionNumber, + "--json", + "id,name,assets", + ]); + + const sourcemapAsset = release.assets.find( + (asset) => + asset.label === `vscode-codeql-sourcemaps-${versionNumber}.zip` || + asset.name === "vscode-codeql-sourcemaps.zip", + ); + + if (sourcemapAsset) { + // This downloads a ZIP file of the source maps + runGh([ + "release", + "download", + versionNumber, + "--pattern", + sourcemapAsset.name, + "--dir", + releaseAssetsDirectory, + ]); + + await unzipToDirectorySequentially( + resolve(releaseAssetsDirectory, sourcemapAsset.name), + sourceMapsDirectory, + ); + } else { + const workflowRuns = runGhJSON([ + "run", + "list", + "--workflow", + "release.yml", + "--branch", + versionNumber, + "--json", + "databaseId,number", + ]); + + if (workflowRuns.length !== 1) { + throw new Error( + `Expected exactly one workflow run for ${versionNumber}, got ${workflowRuns.length}`, + ); + } + + const workflowRun = workflowRuns[0]; + + runGh([ + "run", + "download", + workflowRun.databaseId.toString(), + "--name", + "vscode-codeql-sourcemaps", + "--dir", + sourceMapsDirectory, + ]); + } + } + + if (stacktrace.includes("at")) { + const rawSourceMaps = new Map(); + + const mappedStacktrace = await replaceAsync( + stacktrace, + stackLineRegex, + async (match, name, file, line, column) => { + if (!rawSourceMaps.has(file)) { + try { + const rawSourceMap: RawSourceMap = await readJSON( + resolve(sourceMapsDirectory, `${basename(file)}.map`), + ); + rawSourceMaps.set(file, rawSourceMap); + } catch (e) { + // If the file is not found, we will not decode it and not try reading this source map again + if (e instanceof Error && "code" in e && e.code === "ENOENT") { + rawSourceMaps.set(file, null); + } else { + throw e; + } + } + } + + const sourceMap = rawSourceMaps.get(file); + if (!sourceMap) { + return match; + } + + const originalPosition = await SourceMapConsumer.with( + sourceMap, + null, + async function (consumer) { + return consumer.originalPositionFor({ + line: parseInt(line, 10), + column: parseInt(column, 10), + }); + }, + ); + + if (!originalPosition.source) { + return match; + } + + const originalFilename = resolve(file, "..", originalPosition.source); + + return `at ${originalPosition.name ?? name} (${originalFilename}:${ + originalPosition.line + }:${originalPosition.column})`; + }, + ); + + console.log(mappedStacktrace); + } else { + // This means it's just a filename:line:column + const [filename, line, column] = stacktrace.split(":", 3); + + const fileBasename = basename(filename); + + const sourcemapName = `${fileBasename}.map`; + const sourcemapPath = resolve(sourceMapsDirectory, sourcemapName); + + if (!(await pathExists(sourcemapPath))) { + throw new Error(`No source map found for ${fileBasename}`); + } + + const rawSourceMap: RawSourceMap = await readJSON(sourcemapPath); + + const originalPosition = await SourceMapConsumer.with( + rawSourceMap, + null, + async function (consumer) { + return consumer.originalPositionFor({ + line: parseInt(line, 10), + column: parseInt(column, 10), + }); + }, + ); + + if (!originalPosition.source) { + throw new Error(`No source found for ${stacktrace}`); + } + + const originalFilename = resolve(filename, "..", originalPosition.source); + + console.log( + `${originalFilename}:${originalPosition.line}:${originalPosition.column}`, + ); + } +} + +extractSourceMap().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); + +function runGh(args: readonly string[]): string { + const gh = spawnSync("gh", args); + if (gh.status !== 0) { + throw new Error(`Failed to run gh ${args.join(" ")}: ${gh.stderr}`); + } + return gh.stdout.toString("utf-8"); +} + +function runGhJSON(args: readonly string[]): T { + return JSON.parse(runGh(args)); +} + +type ReleaseAsset = { + id: string; + name: string; + label: string; +}; + +type Release = { + id: string; + name: string; + assets: ReleaseAsset[]; +}; + +type WorkflowRunListItem = { + databaseId: number; + number: number; +}; + +async function replaceAsync( + str: string, + regex: RegExp, + replacer: (substring: string, ...args: string[]) => Promise, +) { + const promises: Array> = []; + str.replace(regex, (match, ...args) => { + const promise = replacer(match, ...args); + promises.push(promise); + return match; + }); + const data = await Promise.all(promises); + return str.replace(regex, () => data.shift() as string); +} diff --git a/extensions/ql-vscode/scripts/tsconfig.json b/extensions/ql-vscode/scripts/tsconfig.json new file mode 100644 index 00000000000..94f63982c47 --- /dev/null +++ b/extensions/ql-vscode/scripts/tsconfig.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["**/*.ts"], + "exclude": [], + "compilerOptions": { + "rootDir": "..", + "noEmit": true + } +} diff --git a/extensions/ql-vscode/scripts/update-node-version.ts b/extensions/ql-vscode/scripts/update-node-version.ts new file mode 100644 index 00000000000..8f412a3a683 --- /dev/null +++ b/extensions/ql-vscode/scripts/update-node-version.ts @@ -0,0 +1,144 @@ +import { join, resolve } from "path"; +import { execSync } from "child_process"; +import { outputFile, readJSON } from "fs-extra"; +import { getVersionInformation } from "./util/vscode-versions"; +import { fetchJson } from "./util/fetch"; +import { SemVer } from "semver"; + +const extensionDirectory = resolve(__dirname, ".."); + +interface Release { + tag_name: string; +} + +interface NpmViewError { + error: { + code: string; + summary: string; + detail: string; + }; +} + +interface ExecError extends Error { + status: number; + stdout: string; +} + +function isExecError(e: unknown): e is ExecError { + return ( + e instanceof Error && + "status" in e && + typeof e.status === "number" && + "stdout" in e && + typeof e.stdout === "string" + ); +} + +async function updateNodeVersion() { + const latestVsCodeRelease = await fetchJson( + "https://api.github.com/repos/microsoft/vscode/releases/latest", + ); + const latestVsCodeVersion = latestVsCodeRelease.tag_name; + + console.log(`Latest VS Code version is ${latestVsCodeVersion}`); + + const versionInformation = await getVersionInformation(latestVsCodeVersion); + console.log( + `VS Code ${versionInformation.vscodeVersion} uses Electron ${versionInformation.electronVersion} and Node ${versionInformation.nodeVersion}`, + ); + + console.log("Updating files related to the Node version"); + + await outputFile( + join(extensionDirectory, ".nvmrc"), + `v${versionInformation.nodeVersion}\n`, + ); + + console.log("Updated .nvmrc"); + + const packageJson = await readJSON( + join(extensionDirectory, "package.json"), + "utf8", + ); + + const nodeVersion = new SemVer(versionInformation.nodeVersion); + + // The @types/node version needs to match the first two parts of the Node + // version, e.g. if the Node version is 18.17.3, the @types/node version + // should be 18.17.*. This corresponds with the documentation at + // https://github.com/definitelytyped/definitelytyped#how-do-definitely-typed-package-versions-relate-to-versions-of-the-corresponding-library + // "The patch version of the type declaration package is unrelated to the library patch version. This allows + // Definitely Typed to safely update type declarations for the same major/minor version of a library." + // 18.17.* is equivalent to >=18.17.0 <18.18.0 + // In some cases, the @types/node version matching the exact Node version may not exist, in which case we'll try + // the next lower minor version, and so on, until we find a version that exists. + const typesNodeSemver = new SemVer(nodeVersion); + typesNodeSemver.patch = 0; + + // eslint-disable-next-line no-constant-condition + while (true) { + const typesNodeVersion = `${typesNodeSemver.major}.${typesNodeSemver.minor}.*`; + + try { + // Check that this version actually exists + console.log(`Checking if @types/node@${typesNodeVersion} exists`); + + execSync(`npm view --json "@types/node@${typesNodeVersion}"`, { + encoding: "utf-8", + stdio: "pipe", + maxBuffer: 10 * 1024 * 1024, + }); + + console.log(`@types/node@${typesNodeVersion} exists`); + + // If it exists, we can break out of this loop + break; + } catch (e) { + if (!isExecError(e)) { + throw e; + } + + const error = JSON.parse(e.stdout) as NpmViewError; + if (error.error.code !== "E404") { + throw new Error(error.error.detail); + } + + console.log( + `@types/node package doesn't exist for ${typesNodeVersion}, trying a lower version (${error.error.summary})`, + ); + + // This means the version doesn't exist, so we'll try decrementing the minor version + typesNodeSemver.minor -= 1; + if (typesNodeSemver.minor < 0) { + throw new Error( + `Could not find a suitable @types/node version for Node ${nodeVersion.format()}`, + ); + } + } + } + + packageJson.engines.node = `^${versionInformation.nodeVersion}`; + packageJson.devDependencies["@types/node"] = + `${typesNodeSemver.major}.${typesNodeSemver.minor}.*`; + + await outputFile( + join(extensionDirectory, "package.json"), + `${JSON.stringify(packageJson, null, 2)}\n`, + ); + + console.log("Updated package.json, now running npm install"); + + execSync("npm install", { cwd: extensionDirectory, stdio: "inherit" }); + // Always use the latest patch version of @types/node + execSync("npm upgrade @types/node", { + cwd: extensionDirectory, + stdio: "inherit", + }); + + console.log("Node version updated successfully"); +} + +updateNodeVersion().catch((e: unknown) => { + console.error(e); + process.exit(2); +}); diff --git a/extensions/ql-vscode/scripts/util/fetch.ts b/extensions/ql-vscode/scripts/util/fetch.ts new file mode 100644 index 00000000000..a7ab7fd234d --- /dev/null +++ b/extensions/ql-vscode/scripts/util/fetch.ts @@ -0,0 +1,10 @@ +export async function fetchJson(url: string): Promise { + const response = await fetch(url); + if (!response.ok) { + throw new Error( + `Could not fetch ${url}: ${response.status} ${response.statusText}`, + ); + } + + return (await response.json()) as T; +} diff --git a/extensions/ql-vscode/scripts/util/files.ts b/extensions/ql-vscode/scripts/util/files.ts new file mode 100644 index 00000000000..b1798eaa4ac --- /dev/null +++ b/extensions/ql-vscode/scripts/util/files.ts @@ -0,0 +1,15 @@ +import { readdir } from "fs-extra"; +import { resolve } from "path"; + +// https://stackoverflow.com/a/45130990 +export async function* getFiles(dir: string): AsyncGenerator { + const dirents = await readdir(dir, { withFileTypes: true }); + for (const dirent of dirents) { + const res = resolve(dir, dirent.name); + if (dirent.isDirectory()) { + yield* getFiles(res); + } else { + yield res; + } + } +} diff --git a/extensions/ql-vscode/scripts/util/vscode-versions.ts b/extensions/ql-vscode/scripts/util/vscode-versions.ts new file mode 100644 index 00000000000..ce7853620be --- /dev/null +++ b/extensions/ql-vscode/scripts/util/vscode-versions.ts @@ -0,0 +1,70 @@ +import { minVersion } from "semver"; +import { fetchJson } from "./fetch"; + +type VsCodePackageJson = { + devDependencies: { + electron: string; + }; +}; + +async function getVsCodePackageJson( + version: string, +): Promise { + return await fetchJson( + `https://raw.githubusercontent.com/microsoft/vscode/${version}/package.json`, + ); +} + +interface ElectronVersion { + version: string; + date: string; + node: string; + v8: string; + uv: string; + zlib: string; + openssl: string; + modules: string; + chrome: string; + files: string[]; + body?: string; + apm?: string; +} + +async function getElectronReleases(): Promise { + return await fetchJson("https://releases.electronjs.org/releases.json"); +} + +type VersionInformation = { + vscodeVersion: string; + electronVersion: string; + nodeVersion: string; + chromiumVersion: string; +}; + +export async function getVersionInformation( + vscodeVersion: string, +): Promise { + const vsCodePackageJson = await getVsCodePackageJson(vscodeVersion); + const electronVersion = minVersion( + vsCodePackageJson.devDependencies.electron, + )?.version; + if (!electronVersion) { + throw new Error("Could not find Electron version"); + } + + const electronReleases = await getElectronReleases(); + + const electronRelease = electronReleases.find( + (release) => release.version === electronVersion, + ); + if (!electronRelease) { + throw new Error(`Could not find Electron release ${electronVersion}`); + } + + return { + vscodeVersion, + electronVersion, + nodeVersion: electronRelease.node, + chromiumVersion: electronRelease.chrome, + }; +} diff --git a/extensions/ql-vscode/snippets.json b/extensions/ql-vscode/snippets.json index 5ad3f5a67fb..198e4eec9f6 100644 --- a/extensions/ql-vscode/snippets.json +++ b/extensions/ql-vscode/snippets.json @@ -30,34 +30,34 @@ "Dataflow Tracking Class": { "prefix": "dataflowtracking", "body": [ - "class $1 extends DataFlow::Configuration {", - "\t$1() { this = \"$1\" }", - "\t", - "\toverride predicate isSource(DataFlow::Node node) {", + "module $1 implements DataFlow::ConfigSig {", + "\tpredicate isSource(DataFlow::Node node) {", "\t\t${2:none()}", "\t}", - "\t", - "\toverride predicate isSink(DataFlow::Node node) {", + "", + "\tpredicate isSink(DataFlow::Node node) {", "\t\t${3:none()}", "\t}", - "}" + "}", + "", + "module ${4:Flow} = DataFlow::Global<$1>;" ], "description": "Boilerplate for a dataflow tracking class" }, "Taint Tracking Class": { "prefix": "tainttracking", "body": [ - "class $1 extends TaintTracking::Configuration {", - "\t$1() { this = \"$1\" }", - "\t", - "\toverride predicate isSource(DataFlow::Node node) {", + "module $1 implements DataFlow::ConfigSig {", + "\tpredicate isSource(DataFlow::Node node) {", "\t\t${2:none()}", "\t}", - "\t", - "\toverride predicate isSink(DataFlow::Node node) {", + "", + "\tpredicate isSink(DataFlow::Node node) {", "\t\t${3:none()}", "\t}", - "}" + "}", + "", + "module ${4:Flow} = TaintTracking::Global<$1>;" ], "description": "Boilerplate for a taint tracking class" }, diff --git a/extensions/ql-vscode/src/additional-typings.d.ts b/extensions/ql-vscode/src/additional-typings.d.ts deleted file mode 100644 index d5a10a5f0c8..00000000000 --- a/extensions/ql-vscode/src/additional-typings.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * The d3 library is designed to work in both the browser and - * node. Consequently their typings files refer to both node - * types like `Buffer` (which don't exist in the browser), and browser - * types like `Blob` (which don't exist in node). Instead of sticking - * all of `dom` in `compilerOptions.lib`, it suffices just to put in a - * stub definition of the affected types so that compilation - * succeeds. - */ - -declare type RequestInit = Record; -declare type ElementTagNameMap = any; -declare type NodeListOf = Record; -declare type Node = Record; -declare type XMLDocument = Record; diff --git a/extensions/ql-vscode/src/archive-filesystem-provider.ts b/extensions/ql-vscode/src/archive-filesystem-provider.ts deleted file mode 100644 index c1c75759f33..00000000000 --- a/extensions/ql-vscode/src/archive-filesystem-provider.ts +++ /dev/null @@ -1,304 +0,0 @@ -import * as fs from 'fs-extra'; -import * as unzipper from 'unzipper'; -import * as vscode from 'vscode'; -import { logger } from './logging'; - -// All path operations in this file must be on paths *within* the zip -// archive. -import * as _path from 'path'; -const path = _path.posix; - -export class File implements vscode.FileStat { - type: vscode.FileType; - ctime: number; - mtime: number; - size: number; - - constructor(public name: string, public data: Uint8Array) { - this.type = vscode.FileType.File; - this.ctime = Date.now(); - this.mtime = Date.now(); - this.size = data.length; - this.name = name; - } -} - -export class Directory implements vscode.FileStat { - type: vscode.FileType; - ctime: number; - mtime: number; - size: number; - entries: Map = new Map(); - - constructor(public name: string) { - this.type = vscode.FileType.Directory; - this.ctime = Date.now(); - this.mtime = Date.now(); - this.size = 0; - } -} - -export type Entry = File | Directory; - -/** - * A map containing directory hierarchy information in a convenient form. - * - * For example, if dirMap : DirectoryHierarchyMap, and /foo/bar/baz.c is a file in the - * directory structure being represented, then - * - * dirMap['/foo'] = {'bar': vscode.FileType.Directory} - * dirMap['/foo/bar'] = {'baz': vscode.FileType.File} - */ -export type DirectoryHierarchyMap = Map>; - -export type ZipFileReference = { - sourceArchiveZipPath: string; - pathWithinSourceArchive: string; -}; - -/** Encodes a reference to a source file within a zipped source archive into a single URI. */ -export function encodeSourceArchiveUri(ref: ZipFileReference): vscode.Uri { - const { sourceArchiveZipPath, pathWithinSourceArchive } = ref; - - // These two paths are put into a single URI with a custom scheme. - // The path and authority components of the URI encode the two paths. - - // The path component of the URI contains both paths, joined by a slash. - let encodedPath = path.join(sourceArchiveZipPath, pathWithinSourceArchive); - - // If a URI contains an authority component, then the path component - // must either be empty or begin with a slash ("/") character. - // (Source: https://tools.ietf.org/html/rfc3986#section-3.3) - // Since we will use an authority component, we add a leading slash if necessary - // (paths on Windows usually start with the drive letter). - let sourceArchiveZipPathStartIndex: number; - if (encodedPath.startsWith('/')) { - sourceArchiveZipPathStartIndex = 0; - } else { - encodedPath = '/' + encodedPath; - sourceArchiveZipPathStartIndex = 1; - } - - // The authority component of the URI records the 0-based inclusive start and exclusive end index - // of the source archive zip path within the path component of the resulting URI. - // This lets us separate the paths, ignoring the leading slash if we added one. - const sourceArchiveZipPathEndIndex = sourceArchiveZipPathStartIndex + sourceArchiveZipPath.length; - const authority = `${sourceArchiveZipPathStartIndex}-${sourceArchiveZipPathEndIndex}`; - return vscode.Uri.parse(zipArchiveScheme + ':/', true).with({ - path: encodedPath, - authority, - }); -} - -/** - * Convenience method to create a codeql-zip-archive with a path to the root - * archive - * - * @param pathToArchive the filesystem path to the root of the archive - */ -export function encodeArchiveBasePath(sourceArchiveZipPath: string) { - return encodeSourceArchiveUri({ - sourceArchiveZipPath, - pathWithinSourceArchive: '' - }); -} - -const sourceArchiveUriAuthorityPattern = /^(\d+)-(\d+)$/; - -class InvalidSourceArchiveUriError extends Error { - constructor(uri: vscode.Uri) { - super(`Can't decode uri ${uri}: authority should be of the form startIndex-endIndex (where both indices are integers).`); - } -} - -/** Decodes an encoded source archive URI into its corresponding paths. Inverse of `encodeSourceArchiveUri`. */ -export function decodeSourceArchiveUri(uri: vscode.Uri): ZipFileReference { - if (!uri.authority) { - // Uri is malformed, but this is recoverable - void logger.log(`Warning: ${new InvalidSourceArchiveUriError(uri).message}`); - return { - pathWithinSourceArchive: '/', - sourceArchiveZipPath: uri.path - }; - } - const match = sourceArchiveUriAuthorityPattern.exec(uri.authority); - if (match === null) - throw new InvalidSourceArchiveUriError(uri); - const zipPathStartIndex = parseInt(match[1]); - const zipPathEndIndex = parseInt(match[2]); - if (isNaN(zipPathStartIndex) || isNaN(zipPathEndIndex)) - throw new InvalidSourceArchiveUriError(uri); - return { - pathWithinSourceArchive: uri.path.substring(zipPathEndIndex) || '/', - sourceArchiveZipPath: uri.path.substring(zipPathStartIndex, zipPathEndIndex), - }; -} - -/** - * Make sure `file` and all of its parent directories are represented in `map`. - */ -function ensureFile(map: DirectoryHierarchyMap, file: string) { - const dirname = path.dirname(file); - if (dirname === '.') { - const error = `Ill-formed path ${file} in zip archive (expected absolute path)`; - void logger.log(error); - throw new Error(error); - } - ensureDir(map, dirname); - map.get(dirname)!.set(path.basename(file), vscode.FileType.File); -} - -/** - * Make sure `dir` and all of its parent directories are represented in `map`. - */ -function ensureDir(map: DirectoryHierarchyMap, dir: string) { - const parent = path.dirname(dir); - if (!map.has(dir)) { - map.set(dir, new Map); - if (dir !== parent) { // not the root directory - ensureDir(map, parent); - map.get(parent)!.set(path.basename(dir), vscode.FileType.Directory); - } - } -} - -type Archive = { - unzipped: unzipper.CentralDirectory; - dirMap: DirectoryHierarchyMap; -}; - -export class ArchiveFileSystemProvider implements vscode.FileSystemProvider { - private readOnlyError = vscode.FileSystemError.NoPermissions('write operation attempted, but source archive filesystem is readonly'); - private archives: Map = new Map; - - private async getArchive(zipPath: string): Promise { - if (!this.archives.has(zipPath)) { - if (!await fs.pathExists(zipPath)) - throw vscode.FileSystemError.FileNotFound(zipPath); - const archive: Archive = { unzipped: await unzipper.Open.file(zipPath), dirMap: new Map }; - archive.unzipped.files.forEach(f => { ensureFile(archive.dirMap, path.resolve('/', f.path)); }); - this.archives.set(zipPath, archive); - } - return this.archives.get(zipPath)!; - } - - root = new Directory(''); - - // metadata - - async stat(uri: vscode.Uri): Promise { - return await this._lookup(uri); - } - - async readDirectory(uri: vscode.Uri): Promise<[string, vscode.FileType][]> { - const ref = decodeSourceArchiveUri(uri); - const archive = await this.getArchive(ref.sourceArchiveZipPath); - const contents = archive.dirMap.get(ref.pathWithinSourceArchive); - const result = contents === undefined ? undefined : Array.from(contents.entries()); - if (result === undefined) { - throw vscode.FileSystemError.FileNotFound(uri); - } - return result; - } - - // file contents - - async readFile(uri: vscode.Uri): Promise { - const data = (await this._lookupAsFile(uri)).data; - if (data) { - return data; - } - throw vscode.FileSystemError.FileNotFound(); - } - - // write operations, all disabled - - writeFile(_uri: vscode.Uri, _content: Uint8Array, _options: { create: boolean; overwrite: boolean }): void { - throw this.readOnlyError; - } - - rename(_oldUri: vscode.Uri, _newUri: vscode.Uri, _options: { overwrite: boolean }): void { - throw this.readOnlyError; - } - - delete(_uri: vscode.Uri): void { - throw this.readOnlyError; - } - - createDirectory(_uri: vscode.Uri): void { - throw this.readOnlyError; - } - - // content lookup - - private async _lookup(uri: vscode.Uri): Promise { - const ref = decodeSourceArchiveUri(uri); - const archive = await this.getArchive(ref.sourceArchiveZipPath); - - // this is a path inside the archive, so don't use `.fsPath`, and - // use '/' as path separator throughout - const reqPath = ref.pathWithinSourceArchive; - - const file = archive.unzipped.files.find( - f => { - const absolutePath = path.resolve('/', f.path); - return absolutePath === reqPath - || absolutePath === path.join('/src_archive', reqPath); - } - ); - if (file !== undefined) { - if (file.type === 'File') { - return new File(reqPath, await file.buffer()); - } - else { // file.type === 'Directory' - // I haven't observed this case in practice. Could it happen - // with a zip file that contains empty directories? - return new Directory(reqPath); - } - } - if (archive.dirMap.has(reqPath)) { - return new Directory(reqPath); - } - throw vscode.FileSystemError.FileNotFound(`uri '${uri.toString()}', interpreted as '${reqPath}' in archive '${ref.sourceArchiveZipPath}'`); - } - - private async _lookupAsFile(uri: vscode.Uri): Promise { - const entry = await this._lookup(uri); - if (entry instanceof File) { - return entry; - } - throw vscode.FileSystemError.FileIsADirectory(uri); - } - - // file events - - private _emitter = new vscode.EventEmitter(); - - readonly onDidChangeFile: vscode.Event = this._emitter.event; - - watch(_resource: vscode.Uri): vscode.Disposable { - // ignore, fires for all changes... - return new vscode.Disposable(() => { /**/ }); - } -} - -/** - * Custom uri scheme for referring to files inside zip archives stored - * in the filesystem. See `encodeSourceArchiveUri`/`decodeSourceArchiveUri` for - * how these uris are constructed. - * - * (cf. https://www.ietf.org/rfc/rfc2396.txt (Appendix A, page 26) for - * the fact that hyphens are allowed in uri schemes) - */ -export const zipArchiveScheme = 'codeql-zip-archive'; - -export function activate(ctx: vscode.ExtensionContext) { - ctx.subscriptions.push(vscode.workspace.registerFileSystemProvider( - zipArchiveScheme, - new ArchiveFileSystemProvider(), - { - isCaseSensitive: true, - isReadonly: true, - } - )); -} diff --git a/extensions/ql-vscode/src/astViewer.ts b/extensions/ql-vscode/src/astViewer.ts deleted file mode 100644 index 28527763aed..00000000000 --- a/extensions/ql-vscode/src/astViewer.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { - window, - TreeDataProvider, - EventEmitter, - Event, - ProviderResult, - TreeItemCollapsibleState, - TreeItem, - TreeView, - TextEditorSelectionChangeEvent, - TextEditorSelectionChangeKind, - Location, - Range, - Uri -} from 'vscode'; -import * as path from 'path'; - -import { DatabaseItem } from './databases'; -import { UrlValue, BqrsId } from './pure/bqrs-cli-types'; -import { showLocation } from './interface-utils'; -import { isStringLoc, isWholeFileLoc, isLineColumnLoc } from './pure/bqrs-utils'; -import { commandRunner } from './commandRunner'; -import { DisposableObject } from './pure/disposable-object'; -import { showAndLogErrorMessage } from './helpers'; - -export interface AstItem { - id: BqrsId; - label?: string; - location?: UrlValue; - fileLocation?: Location; - children: ChildAstItem[]; - order: number; -} - -export interface ChildAstItem extends AstItem { - parent: ChildAstItem | AstItem; -} - -class AstViewerDataProvider extends DisposableObject implements TreeDataProvider { - - public roots: AstItem[] = []; - public db: DatabaseItem | undefined; - - private _onDidChangeTreeData = - this.push(new EventEmitter()); - readonly onDidChangeTreeData: Event = - this._onDidChangeTreeData.event; - - constructor() { - super(); - this.push( - commandRunner('codeQLAstViewer.gotoCode', - async (item: AstItem) => { - await showLocation(item.fileLocation); - }) - ); - } - - refresh(): void { - this._onDidChangeTreeData.fire(undefined); - } - getChildren(item?: AstItem): ProviderResult { - const children = item ? item.children : this.roots; - return children.sort((c1, c2) => (c1.order - c2.order)); - } - - getParent(item: ChildAstItem): ProviderResult { - return item.parent; - } - - getTreeItem(item: AstItem): TreeItem { - const line = this.extractLineInfo(item?.location); - - const state = item.children.length - ? TreeItemCollapsibleState.Collapsed - : TreeItemCollapsibleState.None; - const treeItem = new TreeItem(item.label || '', state); - treeItem.description = line ? `Line ${line}` : ''; - treeItem.id = String(item.id); - treeItem.tooltip = `${treeItem.description} ${treeItem.label}`; - treeItem.command = { - command: 'codeQLAstViewer.gotoCode', - title: 'Go To Code', - tooltip: `Go To ${item.location}`, - arguments: [item] - }; - return treeItem; - } - - private extractLineInfo(loc?: UrlValue) { - if (!loc) { - return ''; - } else if (isStringLoc(loc)) { - return loc; - } else if (isWholeFileLoc(loc)) { - return loc.uri; - } else if (isLineColumnLoc(loc)) { - return loc.startLine; - } else { - return ''; - } - } -} - -export class AstViewer extends DisposableObject { - private treeView: TreeView; - private treeDataProvider: AstViewerDataProvider; - private currentFileUri: Uri | undefined; - - constructor() { - super(); - - this.treeDataProvider = new AstViewerDataProvider(); - this.treeView = window.createTreeView('codeQLAstViewer', { - treeDataProvider: this.treeDataProvider, - showCollapseAll: true - }); - - this.push(this.treeView); - this.push(this.treeDataProvider); - this.push( - commandRunner('codeQLAstViewer.clear', async () => { - this.clear(); - }) - ); - this.push(window.onDidChangeTextEditorSelection(this.updateTreeSelection, this)); - } - - updateRoots(roots: AstItem[], db: DatabaseItem, fileUri: Uri) { - this.treeDataProvider.roots = roots; - this.treeDataProvider.db = db; - this.treeDataProvider.refresh(); - this.treeView.message = `AST for ${path.basename(fileUri.fsPath)}`; - this.currentFileUri = fileUri; - // Handle error on reveal. This could happen if - // the tree view is disposed during the reveal. - this.treeView.reveal(roots[0], { focus: false })?.then( - () => { /**/ }, - err => showAndLogErrorMessage(err) - ); - } - - private updateTreeSelection(e: TextEditorSelectionChangeEvent) { - function isInside(selectedRange: Range, astRange?: Range): boolean { - return !!astRange?.contains(selectedRange); - } - - // Recursively iterate all children until we find the node with the smallest - // range that contains the selection. - // Some nodes do not have a location, but their children might, so must - // recurse though location-less AST nodes to see if children are correct. - function findBest(selectedRange: Range, items?: AstItem[]): AstItem | undefined { - if (!items || !items.length) { - return; - } - for (const item of items) { - let candidate: AstItem | undefined = undefined; - if (isInside(selectedRange, item.fileLocation?.range)) { - candidate = item; - } - // always iterate through children since the location of an AST node in code QL does not - // always cover the complete text of the node. - candidate = findBest(selectedRange, item.children) || candidate; - if (candidate) { - return candidate; - } - } - return; - } - - // Avoid recursive tree-source code updates. - if (e.kind === TextEditorSelectionChangeKind.Command) { - return; - } - - if ( - this.treeView.visible && - e.textEditor.document.uri.fsPath === this.currentFileUri?.fsPath && - e.selections.length === 1 - ) { - const selection = e.selections[0]; - const range = selection.anchor.isBefore(selection.active) - ? new Range(selection.anchor, selection.active) - : new Range(selection.active, selection.anchor); - - const targetItem = findBest(range, this.treeDataProvider.roots); - if (targetItem) { - // Handle error on reveal. This could happen if - // the tree view is disposed during the reveal. - this.treeView.reveal(targetItem)?.then( - () => { /**/ }, - err => showAndLogErrorMessage(err) - ); - } - } - } - - private clear() { - this.treeDataProvider.roots = []; - this.treeDataProvider.db = undefined; - this.treeDataProvider.refresh(); - this.treeView.message = undefined; - this.currentFileUri = undefined; - } -} diff --git a/extensions/ql-vscode/src/authentication.ts b/extensions/ql-vscode/src/authentication.ts deleted file mode 100644 index aae23690453..00000000000 --- a/extensions/ql-vscode/src/authentication.ts +++ /dev/null @@ -1,92 +0,0 @@ -import * as vscode from 'vscode'; -import * as Octokit from '@octokit/rest'; -import { retry } from '@octokit/plugin-retry'; - -const GITHUB_AUTH_PROVIDER_ID = 'github'; - -// We need 'repo' scope for triggering workflows and 'gist' scope for exporting results to Gist. -// For a comprehensive list of scopes, see: -// https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps -const SCOPES = ['repo', 'gist']; - -/** - * Handles authentication to GitHub, using the VS Code [authentication API](https://code.visualstudio.com/api/references/vscode-api#authentication). - */ -export class Credentials { - private octokit: Octokit.Octokit | undefined; - - // Explicitly make the constructor private, so that we can't accidentally call the constructor from outside the class - // without also initializing the class. - // eslint-disable-next-line @typescript-eslint/no-empty-function - private constructor() { } - - /** - * Initializes an instance of credentials with an octokit instance. - * - * Do not call this method until you know you actually need an instance of credentials. - * since calling this method will require the user to log in. - * - * @param context The extension context. - * @returns An instance of credentials. - */ - static async initialize(context: vscode.ExtensionContext): Promise { - const c = new Credentials(); - c.registerListeners(context); - c.octokit = await c.createOctokit(false); - return c; - } - - /** - * Initializes an instance of credentials with an octokit instance using - * a token from the user's GitHub account. This method is meant to be - * used non-interactive environments such as tests. - * - * @param overrideToken The GitHub token to use for authentication. - * @returns An instance of credentials. - */ - static async initializeWithToken(overrideToken: string) { - const c = new Credentials(); - c.octokit = await c.createOctokit(false, overrideToken); - return c; - } - - private async createOctokit(createIfNone: boolean, overrideToken?: string): Promise { - if (overrideToken) { - return new Octokit.Octokit({ auth: overrideToken, retry }); - } - - const session = await vscode.authentication.getSession(GITHUB_AUTH_PROVIDER_ID, SCOPES, { createIfNone }); - - if (session) { - return new Octokit.Octokit({ - auth: session.accessToken, - retry - }); - } else { - return undefined; - } - } - - registerListeners(context: vscode.ExtensionContext): void { - // Sessions are changed when a user logs in or logs out. - context.subscriptions.push(vscode.authentication.onDidChangeSessions(async e => { - if (e.provider.id === GITHUB_AUTH_PROVIDER_ID) { - this.octokit = await this.createOctokit(false); - } - })); - } - - async getOctokit(): Promise { - if (this.octokit) { - return this.octokit; - } - - this.octokit = await this.createOctokit(true); - // octokit shouldn't be undefined, since we've set "createIfNone: true". - // The following block is mainly here to prevent a compiler error. - if (!this.octokit) { - throw new Error('Did not initialize Octokit.'); - } - return this.octokit; - } -} diff --git a/extensions/ql-vscode/src/cli-version.ts b/extensions/ql-vscode/src/cli-version.ts deleted file mode 100644 index c5223bcd7ff..00000000000 --- a/extensions/ql-vscode/src/cli-version.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as semver from 'semver'; -import { runCodeQlCliCommand } from './cli'; -import { Logger } from './logging'; -import { getErrorMessage } from './pure/helpers-pure'; - -/** - * Get the version of a CodeQL CLI. - */ -export async function getCodeQlCliVersion(codeQlPath: string, logger: Logger): Promise { - try { - const output: string = await runCodeQlCliCommand( - codeQlPath, - ['version'], - ['--format=terse'], - 'Checking CodeQL version', - logger - ); - return semver.parse(output.trim()) || undefined; - } catch (e) { - // Failed to run the version command. This might happen if the cli version is _really_ old, or it is corrupted. - // Either way, we can't determine compatibility. - void logger.log(`Failed to run 'codeql version'. Reason: ${getErrorMessage(e)}`); - return undefined; - } -} diff --git a/extensions/ql-vscode/src/cli.ts b/extensions/ql-vscode/src/cli.ts deleted file mode 100644 index 9c7357dfad0..00000000000 --- a/extensions/ql-vscode/src/cli.ts +++ /dev/null @@ -1,1392 +0,0 @@ -import * as cpp from 'child-process-promise'; -import * as child_process from 'child_process'; -import * as fs from 'fs-extra'; -import * as path from 'path'; -import * as sarif from 'sarif'; -import { SemVer } from 'semver'; -import { Readable } from 'stream'; -import { StringDecoder } from 'string_decoder'; -import * as tk from 'tree-kill'; -import { promisify } from 'util'; -import { CancellationToken, commands, Disposable, Uri } from 'vscode'; - -import { BQRSInfo, DecodedBqrsChunk } from './pure/bqrs-cli-types'; -import { CliConfig } from './config'; -import { DistributionProvider, FindDistributionResultKind } from './distribution'; -import { assertNever, getErrorMessage, getErrorStack } from './pure/helpers-pure'; -import { QueryMetadata, SortDirection } from './pure/interface-types'; -import { Logger, ProgressReporter } from './logging'; -import { CompilationMessage } from './pure/messages'; -import { sarifParser } from './sarif-parser'; -import { dbSchemeToLanguage, walkDirectory } from './helpers'; - -/** - * The version of the SARIF format that we are using. - */ -const SARIF_FORMAT = 'sarifv2.1.0'; - -/** - * The string used to specify CSV format. - */ -const CSV_FORMAT = 'csv'; - -/** - * Flags to pass to all cli commands. - */ -const LOGGING_FLAGS = ['-v', '--log-to-stderr']; - -/** - * The expected output of `codeql resolve library-path`. - */ -export interface QuerySetup { - libraryPath: string[]; - dbscheme: string; - relativeName?: string; - compilationCache?: string; -} - -/** - * The expected output of `codeql resolve queries --format bylanguage`. - */ -export interface QueryInfoByLanguage { - // Using `unknown` as a placeholder. For now, the value is only ever an empty object. - byLanguage: Record>; - noDeclaredLanguage: Record; - multipleDeclaredLanguages: Record; -} - -/** - * The expected output of `codeql resolve database`. - */ -export interface DbInfo { - sourceLocationPrefix: string; - columnKind: string; - unicodeNewlines: boolean; - sourceArchiveZip: string; - sourceArchiveRoot: string; - datasetFolder: string; - logsFolder: string; - languages: string[]; -} - -/** - * The expected output of `codeql resolve upgrades`. - */ -export interface UpgradesInfo { - scripts: string[]; - finalDbscheme: string; - matchesTarget?: boolean; -} - -/** - * The expected output of `codeql resolve qlpacks`. - */ -export type QlpacksInfo = { [name: string]: string[] }; - -/** - * The expected output of `codeql resolve languages`. - */ -export type LanguagesInfo = { [name: string]: string[] }; - -/** Information about an ML model, as resolved by `codeql resolve ml-models`. */ -export type MlModelInfo = { - checksum: string; - path: string; -}; - -/** The expected output of `codeql resolve ml-models`. */ -export type MlModelsInfo = { models: MlModelInfo[] }; - -/** - * The expected output of `codeql resolve qlref`. - */ -export type QlrefInfo = { resolvedPath: string }; - -// `codeql bqrs interpret` requires both of these to be present or -// both absent. -export interface SourceInfo { - sourceArchive: string; - sourceLocationPrefix: string; -} - -/** - * The expected output of `codeql resolve tests`. - */ -export type ResolvedTests = string[]; - -/** - * Options for `codeql test run`. - */ -export interface TestRunOptions { - cancellationToken?: CancellationToken; - logger?: Logger; -} - -/** - * Event fired by `codeql test run`. - */ -export interface TestCompleted { - test: string; - pass: boolean; - messages: CompilationMessage[]; - compilationMs: number; - evaluationMs: number; - expected: string; - diff: string[] | undefined; - failureDescription?: string; - failureStage?: string; -} - -/** - * Optional arguments for the `bqrsDecode` function - */ -interface BqrsDecodeOptions { - /** How many results to get. */ - pageSize?: number; - /** The 0-based index of the first result to get. */ - offset?: number; - /** The entity names to retrieve from the bqrs file. Default is url, string */ - entities?: string[]; -} - -/** - * This class manages a cli server started by `codeql execute cli-server` to - * run commands without the overhead of starting a new java - * virtual machine each time. This class also controls access to the server - * by queueing the commands sent to it. - */ -export class CodeQLCliServer implements Disposable { - - - /** The process for the cli server, or undefined if one doesn't exist yet */ - process?: child_process.ChildProcessWithoutNullStreams; - /** Queue of future commands*/ - commandQueue: (() => void)[]; - /** Whether a command is running */ - commandInProcess: boolean; - /** A buffer with a single null byte. */ - nullBuffer: Buffer; - - /** Version of current cli, lazily computed by the `getVersion()` method */ - private _version: SemVer | undefined; - - /** - * The languages supported by the current version of the CLI, computed by `getSupportedLanguages()`. - */ - private _supportedLanguages: string[] | undefined; - - /** Path to current codeQL executable, or undefined if not running yet. */ - codeQlPath: string | undefined; - - cliConstraints = new CliVersionConstraint(this); - - /** - * When set to true, ignore some modal popups and assume user has clicked "yes". - */ - public quiet = false; - - constructor( - private distributionProvider: DistributionProvider, - private cliConfig: CliConfig, - private logger: Logger - ) { - this.commandQueue = []; - this.commandInProcess = false; - this.nullBuffer = Buffer.alloc(1); - if (this.distributionProvider.onDidChangeDistribution) { - this.distributionProvider.onDidChangeDistribution(() => { - this.restartCliServer(); - this._version = undefined; - this._supportedLanguages = undefined; - }); - } - if (this.cliConfig.onDidChangeConfiguration) { - this.cliConfig.onDidChangeConfiguration(() => { - this.restartCliServer(); - this._version = undefined; - this._supportedLanguages = undefined; - }); - } - } - - dispose(): void { - this.killProcessIfRunning(); - } - - killProcessIfRunning(): void { - if (this.process) { - // Tell the Java CLI server process to shut down. - void this.logger.log('Sending shutdown request'); - try { - this.process.stdin.write(JSON.stringify(['shutdown']), 'utf8'); - this.process.stdin.write(this.nullBuffer); - void this.logger.log('Sent shutdown request'); - } catch (e) { - // We are probably fine here, the process has already closed stdin. - void this.logger.log(`Shutdown request failed: process stdin may have already closed. The error was ${e}`); - void this.logger.log('Stopping the process anyway.'); - } - // Close the stdin and stdout streams. - // This is important on Windows where the child process may not die cleanly. - this.process.stdin.end(); - this.process.kill(); - this.process.stdout.destroy(); - this.process.stderr.destroy(); - this.process = undefined; - - } - } - - /** - * Restart the server when the current command terminates - */ - private restartCliServer(): void { - const callback = (): void => { - try { - this.killProcessIfRunning(); - } finally { - this.runNext(); - } - }; - - // If the server is not running a command run this immediately - // otherwise add to the front of the queue (as we want to run this after the next command()). - if (this.commandInProcess) { - this.commandQueue.unshift(callback); - } else { - callback(); - } - - } - - /** - * Get the path to the CodeQL CLI distribution, or throw an exception if not found. - */ - private async getCodeQlPath(): Promise { - const codeqlPath = await this.distributionProvider.getCodeQlPathWithoutVersionCheck(); - if (!codeqlPath) { - throw new Error('Failed to find CodeQL distribution.'); - } - return codeqlPath; - } - - /** - * Launch the cli server - */ - private async launchProcess(): Promise { - const codeQlPath = await this.getCodeQlPath(); - const args = []; - if (shouldDebugCliServer()) { - args.push('-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9012,server=n,suspend=y,quiet=y'); - } - - return await spawnServer( - codeQlPath, - 'CodeQL CLI Server', - ['execute', 'cli-server'], - args, - this.logger, - _data => { /**/ } - ); - } - - private async runCodeQlCliInternal(command: string[], commandArgs: string[], description: string): Promise { - const stderrBuffers: Buffer[] = []; - if (this.commandInProcess) { - throw new Error('runCodeQlCliInternal called while cli was running'); - } - this.commandInProcess = true; - try { - //Launch the process if it doesn't exist - if (!this.process) { - this.process = await this.launchProcess(); - } - // Grab the process so that typescript know that it is always defined. - const process = this.process; - // The array of fragments of stdout - const stdoutBuffers: Buffer[] = []; - - // Compute the full args array - const args = command.concat(LOGGING_FLAGS).concat(commandArgs); - const argsString = args.join(' '); - void this.logger.log(`${description} using CodeQL CLI: ${argsString}...`); - try { - await new Promise((resolve, reject) => { - // Start listening to stdout - process.stdout.addListener('data', (newData: Buffer) => { - stdoutBuffers.push(newData); - // If the buffer ends in '0' then exit. - // We don't have to check the middle as no output will be written after the null until - // the next command starts - if (newData.length > 0 && newData.readUInt8(newData.length - 1) === 0) { - resolve(); - } - }); - // Listen to stderr - process.stderr.addListener('data', (newData: Buffer) => { - stderrBuffers.push(newData); - }); - // Listen for process exit. - process.addListener('close', (code) => reject(code)); - // Write the command followed by a null terminator. - process.stdin.write(JSON.stringify(args), 'utf8'); - process.stdin.write(this.nullBuffer); - }); - // Join all the data together - const fullBuffer = Buffer.concat(stdoutBuffers); - // Make sure we remove the terminator; - const data = fullBuffer.toString('utf8', 0, fullBuffer.length - 1); - void this.logger.log('CLI command succeeded.'); - return data; - } catch (err) { - // Kill the process if it isn't already dead. - this.killProcessIfRunning(); - // Report the error (if there is a stderr then use that otherwise just report the error cod or nodejs error) - const newError = - stderrBuffers.length == 0 - ? new Error(`${description} failed: ${err}`) - : new Error(`${description} failed: ${Buffer.concat(stderrBuffers).toString('utf8')}`); - newError.stack += getErrorStack(err); - throw newError; - } finally { - void this.logger.log(Buffer.concat(stderrBuffers).toString('utf8')); - // Remove the listeners we set up. - process.stdout.removeAllListeners('data'); - process.stderr.removeAllListeners('data'); - process.removeAllListeners('close'); - } - } finally { - this.commandInProcess = false; - // start running the next command immediately - this.runNext(); - } - } - - /** - * Run the next command in the queue - */ - private runNext(): void { - const callback = this.commandQueue.shift(); - if (callback) { - callback(); - } - } - - /** - * Runs an asynchronous CodeQL CLI command without invoking the CLI server, returning any events - * fired by the command as an asynchronous generator. - * - * @param command The `codeql` command to be run, provided as an array of command/subcommand names. - * @param commandArgs The arguments to pass to the `codeql` command. - * @param cancellationToken CancellationToken to terminate the test process. - * @param logger Logger to write text output from the command. - * @returns The sequence of async events produced by the command. - */ - private async* runAsyncCodeQlCliCommandInternal( - command: string[], - commandArgs: string[], - cancellationToken?: CancellationToken, - logger?: Logger - ): AsyncGenerator { - // Add format argument first, in case commandArgs contains positional parameters. - const args = [ - ...command, - '--format', 'jsonz', - ...commandArgs - ]; - - // Spawn the CodeQL process - const codeqlPath = await this.getCodeQlPath(); - const childPromise = cpp.spawn(codeqlPath, args); - const child = childPromise.childProcess; - - let cancellationRegistration: Disposable | undefined = undefined; - try { - if (cancellationToken !== undefined) { - cancellationRegistration = cancellationToken.onCancellationRequested(_e => { - tk(child.pid || 0); - }); - } - if (logger !== undefined) { - // The human-readable output goes to stderr. - void logStream(child.stderr!, logger); - } - - for await (const event of await splitStreamAtSeparators(child.stdout!, ['\0'])) { - yield event; - } - - await childPromise; - } - finally { - if (cancellationRegistration !== undefined) { - cancellationRegistration.dispose(); - } - } - } - - /** - * Runs an asynchronous CodeQL CLI command without invoking the CLI server, returning any events - * fired by the command as an asynchronous generator. - * - * @param command The `codeql` command to be run, provided as an array of command/subcommand names. - * @param commandArgs The arguments to pass to the `codeql` command. - * @param description Description of the action being run, to be shown in log and error messages. - * @param cancellationToken CancellationToken to terminate the test process. - * @param logger Logger to write text output from the command. - * @returns The sequence of async events produced by the command. - */ - public async* runAsyncCodeQlCliCommand( - command: string[], - commandArgs: string[], - description: string, - cancellationToken?: CancellationToken, - logger?: Logger - ): AsyncGenerator { - for await (const event of await this.runAsyncCodeQlCliCommandInternal(command, commandArgs, - cancellationToken, logger)) { - try { - yield JSON.parse(event) as EventType; - } catch (err) { - throw new Error(`Parsing output of ${description} failed: ${(err as any).stderr || getErrorMessage(err)}`); - } - } - } - - /** - * Runs a CodeQL CLI command on the server, returning the output as a string. - * @param command The `codeql` command to be run, provided as an array of command/subcommand names. - * @param commandArgs The arguments to pass to the `codeql` command. - * @param description Description of the action being run, to be shown in log and error messages. - * @param progressReporter Used to output progress messages, e.g. to the status bar. - * @returns The contents of the command's stdout, if the command succeeded. - */ - runCodeQlCliCommand(command: string[], commandArgs: string[], description: string, progressReporter?: ProgressReporter): Promise { - if (progressReporter) { - progressReporter.report({ message: description }); - } - - return new Promise((resolve, reject) => { - // Construct the command that actually does the work - const callback = (): void => { - try { - this.runCodeQlCliInternal(command, commandArgs, description).then(resolve, reject); - } catch (err) { - reject(err); - } - }; - // If the server is not running a command, then run the given command immediately, - // otherwise add to the queue - if (this.commandInProcess) { - this.commandQueue.push(callback); - } else { - callback(); - } - }); - } - - /** - * Runs a CodeQL CLI command, returning the output as JSON. - * @param command The `codeql` command to be run, provided as an array of command/subcommand names. - * @param commandArgs The arguments to pass to the `codeql` command. - * @param description Description of the action being run, to be shown in log and error messages. - * @param addFormat Whether or not to add commandline arguments to specify the format as JSON. - * @param progressReporter Used to output progress messages, e.g. to the status bar. - * @returns The contents of the command's stdout, if the command succeeded. - */ - async runJsonCodeQlCliCommand(command: string[], commandArgs: string[], description: string, addFormat = true, progressReporter?: ProgressReporter): Promise { - let args: string[] = []; - if (addFormat) // Add format argument first, in case commandArgs contains positional parameters. - args = args.concat(['--format', 'json']); - args = args.concat(commandArgs); - const result = await this.runCodeQlCliCommand(command, args, description, progressReporter); - try { - return JSON.parse(result) as OutputType; - } catch (err) { - throw new Error(`Parsing output of ${description} failed: ${(err as any).stderr || getErrorMessage(err)}`); - } - } - - /** - * Resolve the library path and dbscheme for a query. - * @param workspaces The current open workspaces - * @param queryPath The path to the query - */ - async resolveLibraryPath(workspaces: string[], queryPath: string): Promise { - const subcommandArgs = [ - '--query', queryPath, - ...this.getAdditionalPacksArg(workspaces) - ]; - return await this.runJsonCodeQlCliCommand(['resolve', 'library-path'], subcommandArgs, 'Resolving library paths'); - } - - /** - * Resolves the language for a query. - * @param queryUri The URI of the query - */ - async resolveQueryByLanguage(workspaces: string[], queryUri: Uri): Promise { - const subcommandArgs = [ - '--format', 'bylanguage', - queryUri.fsPath, - ...this.getAdditionalPacksArg(workspaces) - ]; - return JSON.parse(await this.runCodeQlCliCommand(['resolve', 'queries'], subcommandArgs, 'Resolving query by language')); - } - - /** - * Finds all available QL tests in a given directory. - * @param testPath Root of directory tree to search for tests. - * @returns The list of tests that were found. - */ - public async resolveTests(testPath: string): Promise { - const subcommandArgs = [ - testPath - ]; - return await this.runJsonCodeQlCliCommand( - ['resolve', 'tests', '--strict-test-discovery'], - subcommandArgs, - 'Resolving tests' - ); - } - - public async resolveQlref(qlref: string): Promise { - const subcommandArgs = [ - qlref - ]; - return await this.runJsonCodeQlCliCommand( - ['resolve', 'qlref'], - subcommandArgs, - 'Resolving qlref', - false - ); - } - - /** - * Issues an internal clear-cache command to the cli server. This - * command is used to clear the qlpack cache of the server. - * - * This cache is generally cleared every 1s. This method is used - * to force an early clearing of the cache. - */ - public async clearCache(): Promise { - await this.runCodeQlCliCommand(['clear-cache'], [], 'Clearing qlpack cache'); - } - - /** - * Runs QL tests. - * @param testPaths Full paths of the tests to run. - * @param workspaces Workspace paths to use as search paths for QL packs. - * @param options Additional options. - */ - public async* runTests( - testPaths: string[], workspaces: string[], options: TestRunOptions - ): AsyncGenerator { - - const subcommandArgs = this.cliConfig.additionalTestArguments.concat([ - ...this.getAdditionalPacksArg(workspaces), - '--threads', - this.cliConfig.numberTestThreads.toString(), - ...testPaths - ]); - - for await (const event of await this.runAsyncCodeQlCliCommand(['test', 'run'], - subcommandArgs, 'Run CodeQL Tests', options.cancellationToken, options.logger)) { - yield event; - } - } - - /** - * Gets the metadata for a query. - * @param queryPath The path to the query. - */ - async resolveMetadata(queryPath: string): Promise { - return await this.runJsonCodeQlCliCommand(['resolve', 'metadata'], [queryPath], 'Resolving query metadata'); - } - - /** Resolves the ML models that should be available when evaluating a query. */ - async resolveMlModels(additionalPacks: string[], queryPath: string): Promise { - const args = await this.cliConstraints.supportsPreciseResolveMlModels() - // use the dirname of the path so that we can handle query libraries - ? [...this.getAdditionalPacksArg(additionalPacks), path.dirname(queryPath)] - : this.getAdditionalPacksArg(additionalPacks); - return await this.runJsonCodeQlCliCommand( - ['resolve', 'ml-models'], - args, - 'Resolving ML models', - false - ); - } - - /** - * Gets the RAM setting for the query server. - * @param queryMemoryMb The maximum amount of RAM to use, in MB. - * Leave `undefined` for CodeQL to choose a limit based on the available system memory. - * @param progressReporter The progress reporter to send progress information to. - * @returns String arguments that can be passed to the CodeQL query server, - * indicating how to split the given RAM limit between heap and off-heap memory. - */ - async resolveRam(queryMemoryMb: number | undefined, progressReporter?: ProgressReporter): Promise { - const args: string[] = []; - if (queryMemoryMb !== undefined) { - args.push('--ram', queryMemoryMb.toString()); - } - return await this.runJsonCodeQlCliCommand(['resolve', 'ram'], args, 'Resolving RAM settings', true, progressReporter); - } - /** - * Gets the headers (and optionally pagination info) of a bqrs. - * @param bqrsPath The path to the bqrs. - * @param pageSize The page size to precompute offsets into the binary file for. - */ - async bqrsInfo(bqrsPath: string, pageSize?: number): Promise { - const subcommandArgs = ( - pageSize ? ['--paginate-rows', pageSize.toString()] : [] - ).concat( - bqrsPath - ); - return await this.runJsonCodeQlCliCommand(['bqrs', 'info'], subcommandArgs, 'Reading bqrs header'); - } - - async databaseUnbundle(archivePath: string, target: string, name?: string): Promise { - const subcommandArgs = []; - if (target) subcommandArgs.push('--target', target); - if (name) subcommandArgs.push('--name', name); - subcommandArgs.push(archivePath); - - return await this.runCodeQlCliCommand(['database', 'unbundle'], subcommandArgs, `Extracting ${archivePath} to directory ${target}`); - } - - /** - * Uses a .qhelp file to generate Query Help documentation in a specified format. - * @param pathToQhelp The path to the .qhelp file - * @param format The format in which the query help should be generated {@link https://codeql.github.com/docs/codeql-cli/manual/generate-query-help/#cmdoption-codeql-generate-query-help-format} - * @param outputDirectory The output directory for the generated file - */ - async generateQueryHelp(pathToQhelp: string, outputDirectory?: string): Promise { - const subcommandArgs = ['--format=markdown']; - if (outputDirectory) subcommandArgs.push('--output', outputDirectory); - subcommandArgs.push(pathToQhelp); - - return await this.runCodeQlCliCommand(['generate', 'query-help'], subcommandArgs, `Generating qhelp in markdown format at ${outputDirectory}`); - } - - /** - * Generate a summary of an evaluation log. - * @param endSummaryPath The path to write only the end of query part of the human-readable summary to. - * @param inputPath The path of an evaluation event log. - * @param outputPath The path to write a human-readable summary of it to. - */ - async generateLogSummary( - inputPath: string, - outputPath: string, - endSummaryPath: string, - ): Promise { - const subcommandArgs = [ - '--format=text', - `--end-summary=${endSummaryPath}`, - '--sourcemap', - inputPath, - outputPath - ]; - return await this.runCodeQlCliCommand(['generate', 'log-summary'], subcommandArgs, 'Generating log summary'); - } - - /** - * Generate a JSON summary of an evaluation log. - * @param inputPath The path of an evaluation event log. - * @param outputPath The path to write a JSON summary of it to. - */ - async generateJsonLogSummary( - inputPath: string, - outputPath: string, - ): Promise { - const subcommandArgs = [ - '--format=predicates', - inputPath, - outputPath - ]; - return await this.runCodeQlCliCommand(['generate', 'log-summary'], subcommandArgs, 'Generating JSON log summary'); - } - - /** - * Gets the results from a bqrs. - * @param bqrsPath The path to the bqrs. - * @param resultSet The result set to get. - * @param options Optional BqrsDecodeOptions arguments - */ - async bqrsDecode( - bqrsPath: string, - resultSet: string, - { pageSize, offset, entities = ['url', 'string'] }: BqrsDecodeOptions = {} - ): Promise { - - const subcommandArgs = [ - `--entities=${entities.join(',')}`, - '--result-set', resultSet, - ].concat( - pageSize ? ['--rows', pageSize.toString()] : [] - ).concat( - offset ? ['--start-at', offset.toString()] : [] - ).concat([bqrsPath]); - return await this.runJsonCodeQlCliCommand(['bqrs', 'decode'], subcommandArgs, 'Reading bqrs data'); - } - - async runInterpretCommand(format: string, additonalArgs: string[], metadata: QueryMetadata, resultsPath: string, interpretedResultsPath: string, sourceInfo?: SourceInfo) { - const args = [ - '--output', interpretedResultsPath, - '--format', format, - // Forward all of the query metadata. - ...Object.entries(metadata).map(([key, value]) => `-t=${key}=${value}`) - ].concat(additonalArgs); - if (sourceInfo !== undefined) { - args.push( - '--source-archive', sourceInfo.sourceArchive, - '--source-location-prefix', sourceInfo.sourceLocationPrefix - ); - } - - args.push( - '--threads', - this.cliConfig.numberThreads.toString(), - ); - - args.push( - '--max-paths', - this.cliConfig.maxPaths.toString(), - ); - - args.push(resultsPath); - await this.runCodeQlCliCommand(['bqrs', 'interpret'], args, 'Interpreting query results'); - } - - async interpretBqrsSarif(metadata: QueryMetadata, resultsPath: string, interpretedResultsPath: string, sourceInfo?: SourceInfo): Promise { - const additionalArgs = [ - // TODO: This flag means that we don't group interpreted results - // by primary location. We may want to revisit whether we call - // interpretation with and without this flag, or do some - // grouping client-side. - '--no-group-results' - ]; - - await this.runInterpretCommand(SARIF_FORMAT, additionalArgs, metadata, resultsPath, interpretedResultsPath, sourceInfo); - return await sarifParser(interpretedResultsPath); - } - - // Warning: this function is untenable for large dot files, - async readDotFiles(dir: string): Promise { - const dotFiles: Promise[] = []; - for await (const file of walkDirectory(dir)) { - if (file.endsWith('.dot')) { - dotFiles.push(fs.readFile(file, 'utf8')); - } - } - return Promise.all(dotFiles); - } - - async interpretBqrsGraph(metadata: QueryMetadata, resultsPath: string, interpretedResultsPath: string, sourceInfo?: SourceInfo): Promise { - const additionalArgs = sourceInfo - ? ['--dot-location-url-format', 'file://' + sourceInfo.sourceLocationPrefix + '{path}:{start:line}:{start:column}:{end:line}:{end:column}'] - : []; - - await this.runInterpretCommand('dot', additionalArgs, metadata, resultsPath, interpretedResultsPath, sourceInfo); - - try { - const dot = await this.readDotFiles(interpretedResultsPath); - return dot; - } catch (err) { - throw new Error(`Reading output of interpretation failed: ${getErrorMessage(err)}`); - } - } - - async generateResultsCsv(metadata: QueryMetadata, resultsPath: string, csvPath: string, sourceInfo?: SourceInfo): Promise { - await this.runInterpretCommand(CSV_FORMAT, [], metadata, resultsPath, csvPath, sourceInfo); - } - - async sortBqrs(resultsPath: string, sortedResultsPath: string, resultSet: string, sortKeys: number[], sortDirections: SortDirection[]): Promise { - const sortDirectionStrings = sortDirections.map(direction => { - switch (direction) { - case SortDirection.asc: - return 'asc'; - case SortDirection.desc: - return 'desc'; - default: - return assertNever(direction); - } - }); - - await this.runCodeQlCliCommand(['bqrs', 'decode'], - [ - '--format=bqrs', - `--result-set=${resultSet}`, - `--output=${sortedResultsPath}`, - `--sort-key=${sortKeys.join(',')}`, - `--sort-direction=${sortDirectionStrings.join(',')}`, - resultsPath - ], - 'Sorting query results'); - } - - - /** - * Returns the `DbInfo` for a database. - * @param databasePath Path to the CodeQL database to obtain information from. - */ - resolveDatabase(databasePath: string): Promise { - return this.runJsonCodeQlCliCommand(['resolve', 'database'], [databasePath], - 'Resolving database'); - } - - /** - * Gets information necessary for upgrading a database. - * @param dbScheme the path to the dbscheme of the database to be upgraded. - * @param searchPath A list of directories to search for upgrade scripts. - * @param allowDowngradesIfPossible Whether we should try and include downgrades of we can. - * @param targetDbScheme The dbscheme to try to upgrade to. - * @returns A list of database upgrade script directories - */ - async resolveUpgrades(dbScheme: string, searchPath: string[], allowDowngradesIfPossible: boolean, targetDbScheme?: string): Promise { - const args = [...this.getAdditionalPacksArg(searchPath), '--dbscheme', dbScheme]; - if (targetDbScheme) { - args.push('--target-dbscheme', targetDbScheme); - if (allowDowngradesIfPossible && await this.cliConstraints.supportsDowngrades()) { - args.push('--allow-downgrades'); - } - } - return await this.runJsonCodeQlCliCommand( - ['resolve', 'upgrades'], - args, - 'Resolving database upgrade scripts', - ); - } - - /** - * Gets information about available qlpacks - * @param additionalPacks A list of directories to search for qlpacks before searching in `searchPath`. - * @param searchPath A list of directories to search for packs not found in `additionalPacks`. If undefined, - * the default CLI search path is used. - * @returns A dictionary mapping qlpack name to the directory it comes from - */ - resolveQlpacks(additionalPacks: string[], searchPath?: string[]): Promise { - const args = this.getAdditionalPacksArg(additionalPacks); - if (searchPath?.length) { - args.push('--search-path', path.join(...searchPath)); - } - - return this.runJsonCodeQlCliCommand( - ['resolve', 'qlpacks'], - args, - 'Resolving qlpack information', - ); - } - - /** - * Gets information about the available languages. - * @returns A dictionary mapping language name to the directory it comes from - */ - async resolveLanguages(): Promise { - return await this.runJsonCodeQlCliCommand(['resolve', 'languages'], [], 'Resolving languages'); - } - - /** - * Gets the list of available languages. Refines the result of `resolveLanguages()`, by excluding - * extra things like "xml" and "properties". - * - * @returns An array of languages that are supported by the current version of the CodeQL CLI. - */ - public async getSupportedLanguages(): Promise { - if (!this._supportedLanguages) { - // Get the intersection of resolveLanguages with the list of hardcoded languages in dbSchemeToLanguage. - const resolvedLanguages = Object.keys(await this.resolveLanguages()); - const hardcodedLanguages = Object.values(dbSchemeToLanguage); - - this._supportedLanguages = resolvedLanguages.filter(lang => hardcodedLanguages.includes(lang)); - } - return this._supportedLanguages; - } - - /** - * Gets information about queries in a query suite. - * @param suite The suite to resolve. - * @param additionalPacks A list of directories to search for qlpacks before searching in `searchPath`. - * @param searchPath A list of directories to search for packs not found in `additionalPacks`. If undefined, - * the default CLI search path is used. - * @returns A list of query files found. - */ - async resolveQueriesInSuite(suite: string, additionalPacks: string[], searchPath?: string[]): Promise { - const args = this.getAdditionalPacksArg(additionalPacks); - if (searchPath !== undefined) { - args.push('--search-path', path.join(...searchPath)); - } - if (await this.cliConstraints.supportsAllowLibraryPacksInResolveQueries()) { - // All of our usage of `codeql resolve queries` needs to handle library packs. - args.push('--allow-library-packs'); - } - args.push(suite); - return this.runJsonCodeQlCliCommand( - ['resolve', 'queries'], - args, - 'Resolving queries', - ); - } - - /** - * Downloads a specified pack. - * @param packs The `` of the packs to download. - */ - async packDownload(packs: string[]) { - return this.runJsonCodeQlCliCommand(['pack', 'download'], packs, 'Downloading packs'); - } - - async packInstall(dir: string, forceUpdate = false) { - const args = [dir]; - if (forceUpdate) { - args.push('--mode', 'update'); - } - return this.runJsonCodeQlCliCommand(['pack', 'install'], args, 'Installing pack dependencies'); - } - - async packBundle(dir: string, workspaceFolders: string[], outputPath: string, precompile = true): Promise { - const args = [ - '-o', - outputPath, - dir, - ...this.getAdditionalPacksArg(workspaceFolders) - ]; - if (!precompile && await this.cliConstraints.supportsNoPrecompile()) { - args.push('--no-precompile'); - } - - return this.runJsonCodeQlCliCommand(['pack', 'bundle'], args, 'Bundling pack'); - } - - async packPacklist(dir: string, includeQueries: boolean): Promise { - const args = includeQueries ? [dir] : ['--no-include-queries', dir]; - // since 2.7.1, packlist returns an object with a "paths" property that is a list of packs. - // previous versions return a list of packs. - const results: { paths: string[] } | string[] = await this.runJsonCodeQlCliCommand(['pack', 'packlist'], args, 'Generating the pack list'); - - // Once we no longer need to support 2.7.0 or earlier, we can remove this and assume all versions return an object. - if ('paths' in results) { - return results.paths; - } else { - return results; - } - } - - async generateDil(qloFile: string, outFile: string): Promise { - const extraArgs = await this.cliConstraints.supportsDecompileDil() - ? ['--kind', 'dil', '-o', outFile, qloFile] - : ['-o', outFile, qloFile]; - await this.runCodeQlCliCommand( - ['query', 'decompile'], - extraArgs, - 'Generating DIL', - ); - } - - public async getVersion() { - if (!this._version) { - this._version = await this.refreshVersion(); - // this._version is only undefined upon config change, so we reset CLI-based context key only when necessary. - await commands.executeCommand( - 'setContext', 'codeql.supportsEvalLog', await this.cliConstraints.supportsPerQueryEvalLog() - ); - } - return this._version; - } - - private async refreshVersion() { - const distribution = await this.distributionProvider.getDistribution(); - switch (distribution.kind) { - case FindDistributionResultKind.CompatibleDistribution: - // eslint-disable-next-line no-fallthrough - case FindDistributionResultKind.IncompatibleDistribution: - return distribution.version; - - default: - // We should not get here because if no distributions are available, then - // the cli class is never instantiated. - throw new Error('No distribution found'); - } - } - - private getAdditionalPacksArg(paths: string[]): string[] { - return paths.length - ? ['--additional-packs', paths.join(path.delimiter)] - : []; - } -} - -/** - * Spawns a child server process using the CodeQL CLI - * and attaches listeners to it. - * - * @param config The configuration containing the path to the CLI. - * @param name Name of the server being started, to be shown in log and error messages. - * @param command The `codeql` command to be run, provided as an array of command/subcommand names. - * @param commandArgs The arguments to pass to the `codeql` command. - * @param logger Logger to write startup messages. - * @param stderrListener Listener for log messages from the server's stderr stream. - * @param stdoutListener Optional listener for messages from the server's stdout stream. - * @param progressReporter Used to output progress messages, e.g. to the status bar. - * @returns The started child process. - */ -export function spawnServer( - codeqlPath: string, - name: string, - command: string[], - commandArgs: string[], - logger: Logger, - stderrListener: (data: any) => void, - stdoutListener?: (data: any) => void, - progressReporter?: ProgressReporter -): child_process.ChildProcessWithoutNullStreams { - // Enable verbose logging. - const args = command.concat(commandArgs).concat(LOGGING_FLAGS); - - // Start the server process. - const base = codeqlPath; - const argsString = args.join(' '); - if (progressReporter !== undefined) { - progressReporter.report({ message: `Starting ${name}` }); - } - void logger.log(`Starting ${name} using CodeQL CLI: ${base} ${argsString}`); - const child = child_process.spawn(base, args); - if (!child || !child.pid) { - throw new Error(`Failed to start ${name} using command ${base} ${argsString}.`); - } - - // Set up event listeners. - child.on('close', (code) => logger.log(`Child process exited with code ${code}`)); - child.stderr!.on('data', stderrListener); - if (stdoutListener !== undefined) { - child.stdout!.on('data', stdoutListener); - } - - if (progressReporter !== undefined) { - progressReporter.report({ message: `Started ${name}` }); - } - void logger.log(`${name} started on PID: ${child.pid}`); - return child; -} - -/** - * Runs a CodeQL CLI command without invoking the CLI server, returning the output as a string. - * @param codeQlPath The path to the CLI. - * @param command The `codeql` command to be run, provided as an array of command/subcommand names. - * @param commandArgs The arguments to pass to the `codeql` command. - * @param description Description of the action being run, to be shown in log and error messages. - * @param logger Logger to write command log messages, e.g. to an output channel. - * @param progressReporter Used to output progress messages, e.g. to the status bar. - * @returns The contents of the command's stdout, if the command succeeded. - */ -export async function runCodeQlCliCommand( - codeQlPath: string, - command: string[], - commandArgs: string[], - description: string, - logger: Logger, - progressReporter?: ProgressReporter -): Promise { - // Add logging arguments first, in case commandArgs contains positional parameters. - const args = command.concat(LOGGING_FLAGS).concat(commandArgs); - const argsString = args.join(' '); - try { - if (progressReporter !== undefined) { - progressReporter.report({ message: description }); - } - void logger.log(`${description} using CodeQL CLI: ${codeQlPath} ${argsString}...`); - const result = await promisify(child_process.execFile)(codeQlPath, args); - void logger.log(result.stderr); - void logger.log('CLI command succeeded.'); - return result.stdout; - } catch (err) { - throw new Error(`${description} failed: ${(err as any).stderr || getErrorMessage(err)}`); - } -} - -/** - * Buffer to hold state used when splitting a text stream into lines. - */ -class SplitBuffer { - private readonly decoder = new StringDecoder('utf8'); - private readonly maxSeparatorLength: number; - private buffer = ''; - private searchIndex = 0; - - constructor(private readonly separators: readonly string[]) { - this.maxSeparatorLength = separators.map(s => s.length).reduce((a, b) => Math.max(a, b), 0); - } - - /** - * Append new text data to the buffer. - * @param chunk The chunk of data to append. - */ - public addChunk(chunk: Buffer): void { - this.buffer += this.decoder.write(chunk); - } - - /** - * Signal that the end of the input stream has been reached. - */ - public end(): void { - this.buffer += this.decoder.end(); - this.buffer += this.separators[0]; // Append a separator to the end to ensure the last line is returned. - } - - /** - * A version of startsWith that isn't overriden by a broken version of ms-python. - * - * The definition comes from - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith - * which is CC0/public domain - * - * See https://github.com/github/vscode-codeql/issues/802 for more context as to why we need it. - */ - private static startsWith(s: string, searchString: string, position: number): boolean { - const pos = position > 0 ? position | 0 : 0; - return s.substring(pos, pos + searchString.length) === searchString; - } - - /** - * Extract the next full line from the buffer, if one is available. - * @returns The text of the next available full line (without the separator), or `undefined` if no - * line is available. - */ - public getNextLine(): string | undefined { - while (this.searchIndex <= (this.buffer.length - this.maxSeparatorLength)) { - for (const separator of this.separators) { - if (SplitBuffer.startsWith(this.buffer, separator, this.searchIndex)) { - const line = this.buffer.slice(0, this.searchIndex); - this.buffer = this.buffer.slice(this.searchIndex + separator.length); - this.searchIndex = 0; - return line; - } - } - this.searchIndex++; - } - - return undefined; - } -} - -/** - * Splits a text stream into lines based on a list of valid line separators. - * @param stream The text stream to split. This stream will be fully consumed. - * @param separators The list of strings that act as line separators. - * @returns A sequence of lines (not including separators). - */ -async function* splitStreamAtSeparators( - stream: Readable, separators: string[] -): AsyncGenerator { - - const buffer = new SplitBuffer(separators); - for await (const chunk of stream) { - buffer.addChunk(chunk); - let line: string | undefined; - do { - line = buffer.getNextLine(); - if (line !== undefined) { - yield line; - } - } while (line !== undefined); - } - buffer.end(); - let line: string | undefined; - do { - line = buffer.getNextLine(); - if (line !== undefined) { - yield line; - } - } while (line !== undefined); -} - -/** - * Standard line endings for splitting human-readable text. - */ -const lineEndings = ['\r\n', '\r', '\n']; - -/** - * Log a text stream to a `Logger` interface. - * @param stream The stream to log. - * @param logger The logger that will consume the stream output. - */ -async function logStream(stream: Readable, logger: Logger): Promise { - for await (const line of await splitStreamAtSeparators(stream, lineEndings)) { - // Await the result of log here in order to ensure the logs are written in the correct order. - await logger.log(line); - } -} - - -export function shouldDebugIdeServer() { - return 'IDE_SERVER_JAVA_DEBUG' in process.env - && process.env.IDE_SERVER_JAVA_DEBUG !== '0' - && process.env.IDE_SERVER_JAVA_DEBUG?.toLocaleLowerCase() !== 'false'; -} - -export function shouldDebugQueryServer() { - return 'QUERY_SERVER_JAVA_DEBUG' in process.env - && process.env.QUERY_SERVER_JAVA_DEBUG !== '0' - && process.env.QUERY_SERVER_JAVA_DEBUG?.toLocaleLowerCase() !== 'false'; -} - -export function shouldDebugCliServer() { - return 'CLI_SERVER_JAVA_DEBUG' in process.env - && process.env.CLI_SERVER_JAVA_DEBUG !== '0' - && process.env.CLI_SERVER_JAVA_DEBUG?.toLocaleLowerCase() !== 'false'; -} - -export class CliVersionConstraint { - - /** - * CLI version where --kind=DIL was introduced - */ - public static CLI_VERSION_WITH_DECOMPILE_KIND_DIL = new SemVer('2.3.0'); - - /** - * CLI version where languages are exposed during a `codeql resolve database` command. - */ - public static CLI_VERSION_WITH_LANGUAGE = new SemVer('2.4.1'); - - /** - * CLI version where `codeql resolve upgrades` supports - * the `--allow-downgrades` flag - */ - public static CLI_VERSION_WITH_DOWNGRADES = new SemVer('2.4.4'); - - /** - * CLI version where the `codeql resolve qlref` command is available. - */ - public static CLI_VERSION_WITH_RESOLVE_QLREF = new SemVer('2.5.1'); - - /** - * CLI version where database registration was introduced - */ - public static CLI_VERSION_WITH_DB_REGISTRATION = new SemVer('2.4.1'); - - /** - * CLI version where the `--allow-library-packs` option to `codeql resolve queries` was - * introduced. - */ - public static CLI_VERSION_WITH_ALLOW_LIBRARY_PACKS_IN_RESOLVE_QUERIES = new SemVer('2.6.1'); - - /** - * CLI version where the `database unbundle` subcommand was introduced. - */ - public static CLI_VERSION_WITH_DATABASE_UNBUNDLE = new SemVer('2.6.0'); - - /** - * CLI version where the `--no-precompile` option for pack creation was introduced. - */ - public static CLI_VERSION_WITH_NO_PRECOMPILE = new SemVer('2.7.1'); - - /** - * CLI version where remote queries (variant analysis) are supported. - */ - public static CLI_VERSION_REMOTE_QUERIES = new SemVer('2.6.3'); - - /** - * CLI version where the `resolve ml-models` subcommand was introduced. - */ - public static CLI_VERSION_WITH_RESOLVE_ML_MODELS = new SemVer('2.7.3'); - - /** - * CLI version where the `resolve ml-models` subcommand was enhanced to work with packaging. - */ - public static CLI_VERSION_WITH_PRECISE_RESOLVE_ML_MODELS = new SemVer('2.10.0'); - - /** - * CLI version where the `--old-eval-stats` option to the query server was introduced. - */ - public static CLI_VERSION_WITH_OLD_EVAL_STATS = new SemVer('2.7.4'); - - /** - * CLI version where packaging was introduced. - */ - public static CLI_VERSION_WITH_PACKAGING = new SemVer('2.6.0'); - - /** - * CLI version where the `--evaluator-log` and related options to the query server were introduced, - * on a per-query server basis. - */ - public static CLI_VERSION_WITH_STRUCTURED_EVAL_LOG = new SemVer('2.8.2'); - - /** - * CLI version that supports rotating structured logs to produce one per query. - * - * Note that 2.8.4 supports generating the evaluation logs and summaries, - * but 2.9.0 includes a new option to produce the end-of-query summary logs to - * the query server console. For simplicity we gate all features behind 2.9.0, - * but if a user is tied to the 2.8 release, we can enable evaluator logs - * and summaries for them. - */ - public static CLI_VERSION_WITH_PER_QUERY_EVAL_LOG = new SemVer('2.9.0'); - - constructor(private readonly cli: CodeQLCliServer) { - /**/ - } - - private async isVersionAtLeast(v: SemVer) { - return (await this.cli.getVersion()).compare(v) >= 0; - } - - public async supportsDecompileDil() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_DECOMPILE_KIND_DIL); - } - - public async supportsLanguageName() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_LANGUAGE); - } - - public async supportsDowngrades() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_DOWNGRADES); - } - - public async supportsResolveQlref() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_RESOLVE_QLREF); - } - - public async supportsAllowLibraryPacksInResolveQueries() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_ALLOW_LIBRARY_PACKS_IN_RESOLVE_QUERIES); - } - - async supportsDatabaseRegistration() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_DB_REGISTRATION); - } - - async supportsDatabaseUnbundle() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_DATABASE_UNBUNDLE); - } - - async supportsNoPrecompile() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_NO_PRECOMPILE); - } - - async supportsRemoteQueries() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_REMOTE_QUERIES); - } - - async supportsResolveMlModels() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_RESOLVE_ML_MODELS); - } - - async supportsPreciseResolveMlModels() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_PRECISE_RESOLVE_ML_MODELS); - } - - async supportsOldEvalStats() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_OLD_EVAL_STATS); - } - - async supportsPackaging() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_PACKAGING); - } - - async supportsStructuredEvalLog() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_STRUCTURED_EVAL_LOG); - } - - async supportsPerQueryEvalLog() { - return this.isVersionAtLeast(CliVersionConstraint.CLI_VERSION_WITH_PER_QUERY_EVAL_LOG); - } -} diff --git a/extensions/ql-vscode/src/code-tour/code-tour.ts b/extensions/ql-vscode/src/code-tour/code-tour.ts new file mode 100644 index 00000000000..76f4f8a8b9f --- /dev/null +++ b/extensions/ql-vscode/src/code-tour/code-tour.ts @@ -0,0 +1,55 @@ +import type { AppCommandManager } from "../common/commands"; +import { Uri, workspace } from "vscode"; +import { join } from "path"; +import { pathExists } from "fs-extra"; +import { isCodespacesTemplate } from "../config"; +import { showBinaryChoiceDialog } from "../common/vscode/dialog"; +import { extLogger } from "../common/logging/vscode"; + +/** + * Check if the current workspace is the CodeTour and open the workspace folder. + * Without this, we can't run the code tour correctly. + **/ +export async function prepareCodeTour( + commandManager: AppCommandManager, +): Promise { + if (workspace.workspaceFolders?.length) { + const currentFolder = workspace.workspaceFolders[0].uri.fsPath; + + const tutorialWorkspacePath = join( + currentFolder, + "tutorial.code-workspace", + ); + const toursFolderPath = join(currentFolder, ".tours"); + + /** We're opening the tutorial workspace, if we detect it. + * This will only happen if the following three conditions are met: + * - the .tours folder exists + * - the tutorial.code-workspace file exists + * - the CODESPACES_TEMPLATE setting doesn't exist (it's only set if the user has already opened + * the tutorial workspace so it's a good indicator that the user is in the folder but has ignored + * the prompt to open the workspace) + */ + if ( + (await pathExists(tutorialWorkspacePath)) && + (await pathExists(toursFolderPath)) && + !isCodespacesTemplate() + ) { + const answer = await showBinaryChoiceDialog( + "We've detected you're in the CodeQL Tour repo. We will need to open the workspace file to continue. Reload?", + ); + + if (!answer) { + return; + } + + const tutorialWorkspaceUri = Uri.file(tutorialWorkspacePath); + + void extLogger.log( + `In prepareCodeTour() method, going to open the tutorial workspace file: ${tutorialWorkspacePath}`, + ); + + await commandManager.execute("vscode.openFolder", tutorialWorkspaceUri); + } + } +} diff --git a/extensions/ql-vscode/src/codeql-cli/cli-command.ts b/extensions/ql-vscode/src/codeql-cli/cli-command.ts new file mode 100644 index 00000000000..b211793e121 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/cli-command.ts @@ -0,0 +1,62 @@ +import { execFile } from "child_process"; +import { promisify } from "util"; + +import type { BaseLogger } from "../common/logging"; +import type { ProgressReporter } from "../common/logging/vscode"; +import { + getChildProcessErrorMessage, + getErrorMessage, +} from "../common/helpers-pure"; + +/** + * Flags to pass to all cli commands. + */ +export const LOGGING_FLAGS = ["-v", "--log-to-stderr"]; + +/** + * Runs a CodeQL CLI command without invoking the CLI server, deserializing the output as JSON. + * @param codeQlPath The path to the CLI. + * @param command The `codeql` command to be run, provided as an array of command/subcommand names. + * @param commandArgs The arguments to pass to the `codeql` command. + * @param description Description of the action being run, to be shown in log and error messages. + * @param logger Logger to write command log messages, e.g. to an output channel. + * @param progressReporter Used to output progress messages, e.g. to the status bar. + * @returns A JSON object parsed from the contents of the command's stdout, if the command succeeded. + */ +export async function runJsonCodeQlCliCommand( + codeQlPath: string, + command: string[], + commandArgs: string[], + description: string, + logger: BaseLogger, + progressReporter?: ProgressReporter, +): Promise { + // Add logging arguments first, in case commandArgs contains positional parameters. + const args = command.concat(LOGGING_FLAGS).concat(commandArgs); + const argsString = args.join(" "); + let stdout: string; + try { + if (progressReporter !== undefined) { + progressReporter.report({ message: description }); + } + void logger.log( + `${description} using CodeQL CLI: ${codeQlPath} ${argsString}...`, + ); + const result = await promisify(execFile)(codeQlPath, args); + void logger.log(result.stderr); + void logger.log("CLI command succeeded."); + stdout = result.stdout; + } catch (err) { + throw new Error( + `${description} failed: ${getChildProcessErrorMessage(err)}`, + ); + } + + try { + return JSON.parse(stdout) as OutputType; + } catch (err) { + throw new Error( + `Parsing output of ${description} failed: ${getErrorMessage(err)}`, + ); + } +} diff --git a/extensions/ql-vscode/src/codeql-cli/cli-errors.ts b/extensions/ql-vscode/src/codeql-cli/cli-errors.ts new file mode 100644 index 00000000000..5a5b7ea57c4 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/cli-errors.ts @@ -0,0 +1,102 @@ +import { asError, getErrorMessage } from "../common/helpers-pure"; + +// https://docs.github.com/en/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/exit-codes +const EXIT_CODE_USER_ERROR = 2; +const EXIT_CODE_CANCELLED = 98; + +export class ExitCodeError extends Error { + constructor(public readonly exitCode: number | null) { + super(`Process exited with code ${exitCode}`); + } +} + +export class CliError extends Error { + constructor( + message: string, + public readonly stderr: string | undefined, + public readonly cause: Error, + public readonly commandDescription: string, + public readonly commandArgs: string[], + ) { + super(message); + } +} + +export function getCliError( + e: unknown, + stderr: string | undefined, + commandDescription: string, + commandArgs: string[], +): CliError { + const error = asError(e); + + if (!(error instanceof ExitCodeError) || !stderr) { + return formatCliErrorFallback( + error, + stderr, + commandDescription, + commandArgs, + ); + } + + switch (error.exitCode) { + case EXIT_CODE_USER_ERROR: { + // This is an error that we should try to format nicely + const fatalErrorIndex = stderr.lastIndexOf("A fatal error occurred: "); + if (fatalErrorIndex !== -1) { + return new CliError( + stderr.slice(fatalErrorIndex), + stderr, + error, + commandDescription, + commandArgs, + ); + } + + break; + } + case EXIT_CODE_CANCELLED: { + const cancellationIndex = stderr.lastIndexOf( + "Computation was cancelled: ", + ); + if (cancellationIndex !== -1) { + return new CliError( + stderr.slice(cancellationIndex), + stderr, + error, + commandDescription, + commandArgs, + ); + } + + break; + } + } + + return formatCliErrorFallback(error, stderr, commandDescription, commandArgs); +} + +function formatCliErrorFallback( + error: Error, + stderr: string | undefined, + commandDescription: string, + commandArgs: string[], +): CliError { + if (stderr) { + return new CliError( + stderr, + undefined, + error, + commandDescription, + commandArgs, + ); + } + + return new CliError( + getErrorMessage(error), + undefined, + error, + commandDescription, + commandArgs, + ); +} diff --git a/extensions/ql-vscode/src/codeql-cli/cli-version.ts b/extensions/ql-vscode/src/codeql-cli/cli-version.ts new file mode 100644 index 00000000000..15a6616cb1a --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/cli-version.ts @@ -0,0 +1,55 @@ +import type { SemVer } from "semver"; +import { parse } from "semver"; +import { runJsonCodeQlCliCommand } from "./cli-command"; +import type { Logger } from "../common/logging"; +import { getErrorMessage } from "../common/helpers-pure"; + +interface VersionResult { + version: string; + features: CliFeatures | undefined; +} + +export interface CliFeatures { + queryServerRunQueries?: boolean; + bqrsDiffResultSets?: boolean; +} + +export interface VersionAndFeatures { + version: SemVer; + features: CliFeatures; +} + +/** + * Get the version of a CodeQL CLI. + */ +export async function getCodeQlCliVersion( + codeQlPath: string, + logger: Logger, +): Promise { + try { + const output: VersionResult = await runJsonCodeQlCliCommand( + codeQlPath, + ["version"], + ["--format=json"], + "Checking CodeQL version", + logger, + ); + + const version = parse(output.version.trim()) || undefined; + if (version === undefined) { + return undefined; + } + + return { + version, + features: output.features ?? {}, + }; + } catch (e) { + // Failed to run the version command. This might happen if the cli version is _really_ old, or it is corrupted. + // Either way, we can't determine compatibility. + void logger.log( + `Failed to run 'codeql version'. Reason: ${getErrorMessage(e)}`, + ); + return undefined; + } +} diff --git a/extensions/ql-vscode/src/codeql-cli/cli.ts b/extensions/ql-vscode/src/codeql-cli/cli.ts new file mode 100644 index 00000000000..dc91d9aac03 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/cli.ts @@ -0,0 +1,1939 @@ +import { EOL } from "os"; +import { spawn } from "cross-spawn"; +import type { ChildProcessWithoutNullStreams } from "child_process"; +import { spawn as spawnChildProcess } from "child_process"; +import { readFile } from "fs-extra"; +import { delimiter, join } from "path"; +import type { Log } from "sarif"; +import { SemVer } from "semver"; +import type { Readable } from "stream"; +import tk from "tree-kill"; +import type { CancellationToken, Disposable, Uri } from "vscode"; +import { dir } from "tmp-promise"; + +import type { + BqrsInfo, + DecodedBqrs, + DecodedBqrsChunk, +} from "../common/bqrs-cli-types"; +import type { CliConfig } from "../config"; +import type { DistributionProvider } from "./distribution"; +import { FindDistributionResultKind } from "./distribution"; +import { + asError, + assertNever, + getErrorMessage, + getErrorStack, +} from "../common/helpers-pure"; +import { walkDirectory } from "../common/files"; +import type { QueryMetadata } from "../common/interface-types"; +import { SortDirection } from "../common/interface-types"; +import type { BaseLogger, Logger } from "../common/logging"; +import type { ProgressReporter } from "../common/logging/vscode"; +import { sarifParser } from "../common/sarif-parser"; +import type { App } from "../common/app"; +import { QueryLanguage } from "../common/query-language"; +import { LINE_ENDINGS, splitStreamAtSeparators } from "../common/split-stream"; +import type { Position } from "../query-server/messages"; +import { LOGGING_FLAGS } from "./cli-command"; +import type { CliFeatures, VersionAndFeatures } from "./cli-version"; +import { ExitCodeError, getCliError } from "./cli-errors"; +import { UserCancellationException } from "../common/vscode/progress"; +import type { LanguageClient } from "vscode-languageclient/node"; + +/** + * The oldest version of the CLI that we support. This is used to determine + * whether to show a warning about the CLI being too old on startup. + */ +export const OLDEST_SUPPORTED_CLI_VERSION = new SemVer("2.22.4"); + +/** + * The version of the SARIF format that we are using. + */ +const SARIF_FORMAT = "sarifv2.1.0"; + +/** + * The string used to specify CSV format. + */ +const CSV_FORMAT = "csv"; + +/** + * The expected output of `codeql resolve queries --format bylanguage`. + */ +export interface QueryInfoByLanguage { + // Using `unknown` as a placeholder. For now, the value is only ever an empty object. + byLanguage: Record>; + noDeclaredLanguage: Record; + multipleDeclaredLanguages: Record; +} + +/** + * The expected output of `codeql resolve database`. + */ +export interface DbInfo { + sourceLocationPrefix: string; + columnKind: string; + unicodeNewlines: boolean; + sourceArchiveZip: string; + sourceArchiveRoot: string; + datasetFolder: string; + logsFolder: string; + languages: string[]; +} + +/** + * The expected output of `codeql resolve upgrades`. + */ +interface UpgradesInfo { + scripts: string[]; + finalDbscheme: string; + matchesTarget?: boolean; +} + +/** + * The expected output of `codeql resolve qlpacks`. + */ +export type QlpacksInfo = { [name: string]: string[] }; + +/** + * The expected output of `codeql resolve languages`. + */ +type LanguagesInfo = { [name: string]: string[] }; + +/** Information about a data extension predicate, as resolved by `codeql resolve extensions`. */ +type DataExtensionResult = { + predicate: string; + file: string; + index: number; +}; + +/** The expected output of `codeql resolve extensions`. */ +type ResolveExtensionsResult = { + data: { + [path: string]: DataExtensionResult[]; + }; +}; + +type GenerateExtensiblePredicateMetadataResult = { + // There are other properties in this object, but they are + // not relevant for its use in the extension, so we omit them. + extensible_predicates: Array<{ + // pack relative path + path: string; + }>; +}; + +type PackDownloadResult = { + // There are other properties in this object, but they are + // not relevant for its use in the extension, so we omit them. + packs: Array<{ + name: string; + version: string; + }>; + packDir: string; +}; + +/** + * The expected output of `codeql resolve qlref`. + */ +type QlrefInfo = { resolvedPath: string }; + +// `codeql bqrs interpret` requires both of these to be present or +// both absent. +export interface SourceInfo { + sourceArchive: string; + sourceLocationPrefix: string; +} + +/** + * The expected output of `codeql resolve queries`. + */ +type ResolvedQueries = string[]; + +/** + * The expected output of `codeql resolve tests`. + */ +type ResolvedTests = string[]; + +/** + * The severity of a compilation message for a test message. + */ +export enum CompilationMessageSeverity { + Error = "ERROR", + Warning = "WARNING", +} + +/** + * A compilation message for a test message (either an error or a warning). + */ +export interface CompilationMessage { + /** + * The text of the message + */ + message: string; + /** + * The source position associated with the message + */ + position: Position; + /** + * The severity of the message + */ + severity: CompilationMessageSeverity; +} + +/** + * Event fired by `codeql test run`. + */ +export interface TestCompleted { + test: string; + pass: boolean; + messages: CompilationMessage[]; + compilationMs: number; + evaluationMs: number; + expected: string; + actual?: string; + diff: string[] | undefined; + failureDescription?: string; + failureStage?: string; +} + +/** + * Optional arguments for the `bqrsDecode` function + */ +interface BqrsDecodeOptions { + /** How many results to get. */ + pageSize?: number; + /** The 0-based index of the first result to get. */ + offset?: number; + /** The entity names to retrieve from the bqrs file. Default is url, string */ + entities?: string[]; +} + +interface BqrsDiffOptions { + retainResultSets?: string[]; + resultSets?: Array<[string, string]>; +} + +type OnLineCallback = (line: string) => Promise; + +type VersionChangedListener = ( + newVersionAndFeatures: VersionAndFeatures | undefined, +) => void; + +type RunOptions = { + /** + * Used to output progress messages, e.g. to the status bar. + */ + progressReporter?: ProgressReporter; + /** + * Used for responding to interactive output on stdout/stdin. + */ + onLine?: OnLineCallback; + /** + * If true, don't print logs to the CodeQL extension log. + */ + silent?: boolean; + /** + * If true, run this command in a new process rather than in the CLI server. + */ + runInNewProcess?: boolean; + /** + * If runInNewProcess is true, allows cancelling the command. If runInNewProcess + * is false or not specified, this option is ignored. + */ + token?: CancellationToken; +}; + +type JsonRunOptions = RunOptions & { + /** + * Whether to add commandline arguments to specify the format as JSON. + */ + addFormat?: boolean; +}; + +/** + * This class manages a cli server started by `codeql execute cli-server` to + * run commands without the overhead of starting a new java + * virtual machine each time. This class also controls access to the server + * by queueing the commands sent to it. + */ +export class CodeQLCliServer implements Disposable { + /** The process for the cli server, or undefined if one doesn't exist yet */ + process?: ChildProcessWithoutNullStreams; + /** Queue of future commands*/ + commandQueue: Array<() => void>; + /** Whether a command is running */ + commandInProcess: boolean; + /** A buffer with a single null byte. */ + nullBuffer: Buffer; + + /** Version of current cli and its supported features, lazily computed by the `getVersion()` method */ + private _versionAndFeatures: VersionAndFeatures | undefined; + + private _versionChangedListeners: VersionChangedListener[] = []; + + /** + * The languages supported by the current version of the CLI, computed by `getSupportedLanguages()`. + */ + private _supportedLanguages: string[] | undefined; + + /** Path to current codeQL executable, or undefined if not running yet. */ + codeQlPath: string | undefined; + + /** + * When set to true, ignore some modal popups and assume user has clicked "yes". + */ + public quiet = false; + + constructor( + private readonly app: App, + private readonly languageClient: LanguageClient, + private distributionProvider: DistributionProvider, + private cliConfig: CliConfig, + public readonly logger: Logger, + ) { + this.commandQueue = []; + this.commandInProcess = false; + this.nullBuffer = Buffer.alloc(1); + if (this.distributionProvider.onDidChangeDistribution) { + this.distributionProvider.onDidChangeDistribution(() => { + this.restartCliServer(); + }); + } + if (this.cliConfig.onDidChangeConfiguration) { + this.cliConfig.onDidChangeConfiguration(() => { + this.restartCliServer(); + }); + } + } + + dispose(): void { + this.killProcessIfRunning(); + } + + killProcessIfRunning(): void { + if (this.process) { + // Tell the Java CLI server process to shut down. + void this.logger.log("Sending shutdown request"); + try { + this.process.stdin.write(JSON.stringify(["shutdown"]), "utf8"); + this.process.stdin.write(this.nullBuffer); + void this.logger.log("Sent shutdown request"); + } catch (e) { + // We are probably fine here, the process has already closed stdin. + void this.logger.log( + `Shutdown request failed: process stdin may have already closed. The error was ${getErrorMessage(e)}`, + ); + void this.logger.log("Stopping the process anyway."); + } + // Close the stdin and stdout streams. + // This is important on Windows where the child process may not die cleanly. + this.process.stdin.end(); + this.process.kill(); + this.process.stdout.destroy(); + this.process.stderr.destroy(); + this.process = undefined; + } + } + + /** + * Restart the server when the current command terminates + */ + restartCliServer(): void { + const callback = (): void => { + try { + this.killProcessIfRunning(); + this._versionAndFeatures = undefined; + this._supportedLanguages = undefined; + } finally { + this.runNext(); + } + }; + + // If the server is not running a command run this immediately + // otherwise add to the front of the queue (as we want to run this after the next command()). + if (this.commandInProcess) { + this.commandQueue.unshift(callback); + } else { + callback(); + } + } + + /** + * Get the path to the CodeQL CLI distribution, or throw an exception if not found. + */ + private async getCodeQlPath(): Promise { + const codeqlPath = + await this.distributionProvider.getCodeQlPathWithoutVersionCheck(); + if (!codeqlPath) { + throw new Error("Failed to find CodeQL distribution."); + } + return codeqlPath; + } + + /** + * Launch the cli server + */ + private async launchProcess(): Promise { + const codeQlPath = await this.getCodeQlPath(); + const args = shouldDebugCliServer() + ? [ + "-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9012,server=n,suspend=y,quiet=y", + ] + : []; + + return spawnServer( + codeQlPath, + "CodeQL CLI Server", + ["execute", "cli-server"], + args, + this.logger, + (_data) => { + /**/ + }, + ); + } + + private async runCodeQlCliInternal( + command: string[], + commandArgs: string[], + description: string, + onLine?: OnLineCallback, + silent?: boolean, + ): Promise { + if (this.commandInProcess) { + throw new Error("runCodeQlCliInternal called while cli was running"); + } + this.commandInProcess = true; + try { + // Launch the process if it doesn't exist + this.process ??= await this.launchProcess(); + + // Compute the full args array + const args = command.concat(LOGGING_FLAGS, commandArgs); + const argsString = args.join(" "); + // If we are running silently, we don't want to print anything to the console. + if (!silent) { + void this.logger.log( + `${description} using CodeQL CLI: ${argsString}...`, + ); + } + try { + return await this.handleProcessOutput(this.process, { + handleNullTerminator: true, + onListenStart: (process) => { + // Write the command followed by a null terminator. + process.stdin.write(JSON.stringify(args), "utf8"); + process.stdin.write(this.nullBuffer); + }, + description, + args, + silent, + onLine, + }); + } catch (err) { + // Kill the process if it isn't already dead. + this.killProcessIfRunning(); + + throw err; + } + } finally { + this.commandInProcess = false; + // start running the next command immediately + this.runNext(); + } + } + + private async runCodeQlCliInNewProcess( + command: string[], + commandArgs: string[], + description: string, + onLine?: OnLineCallback, + silent?: boolean, + token?: CancellationToken, + ): Promise { + const codeqlPath = await this.getCodeQlPath(); + + const args = command.concat(LOGGING_FLAGS, commandArgs); + const argsString = args.join(" "); + + // If we are running silently, we don't want to print anything to the console. + if (!silent) { + void this.logger.log(`${description} using CodeQL CLI: ${argsString}...`); + } + + const abortController = new AbortController(); + + const process = spawnChildProcess(codeqlPath, args, { + signal: abortController.signal, + }); + if (!process || !process.pid) { + throw new Error( + `Failed to start ${description} using command ${codeqlPath} ${argsString}.`, + ); + } + + // We need to ensure that we're not killing the same process twice (since this may kill + // another process with the same PID), so keep track of whether we've already exited. + let exited = false; + process.on("exit", () => { + exited = true; + }); + + const cancellationRegistration = token?.onCancellationRequested((_e) => { + abortController.abort("Token was cancelled."); + if (process.pid && !exited) { + tk(process.pid); + } + }); + + try { + return await this.handleProcessOutput(process, { + handleNullTerminator: false, + description, + args, + silent, + onLine, + }); + } catch (e) { + // If cancellation was requested, the error is probably just because the process was exited with SIGTERM. + if (token?.isCancellationRequested) { + void this.logger.log( + `The process was cancelled and exited with: ${getErrorMessage(e)}`, + ); + throw new UserCancellationException( + `Command ${argsString} was cancelled.`, + true, // Don't show a warning message when the user manually cancelled the command. + ); + } + + throw e; + } finally { + process.stdin.end(); + if (!exited) { + tk(process.pid); + } + process.stdout.destroy(); + process.stderr.destroy(); + + cancellationRegistration?.dispose(); + } + } + + private async handleProcessOutput( + process: ChildProcessWithoutNullStreams, + { + handleNullTerminator, + args, + description, + onLine, + onListenStart, + silent, + }: { + handleNullTerminator: boolean; + args: string[]; + description: string; + onLine?: OnLineCallback; + onListenStart?: (process: ChildProcessWithoutNullStreams) => void; + silent?: boolean; + }, + ): Promise { + const stderrBuffers: Buffer[] = []; + // The current buffer of stderr of a single line. To be used for logging. + let currentLineStderrBuffer: Buffer = Buffer.alloc(0); + + // The listeners of the process. Declared here so they can be removed in the finally block. + let stdoutListener: ((newData: Buffer) => void) | undefined = undefined; + let stderrListener: ((newData: Buffer) => void) | undefined = undefined; + let closeListener: ((code: number | null) => void) | undefined = undefined; + let errorListener: ((err: Error) => void) | undefined = undefined; + + try { + // The array of fragments of stdout + const stdoutBuffers: Buffer[] = []; + + await new Promise((resolve, reject) => { + stdoutListener = (newData: Buffer) => { + if (onLine) { + void (async () => { + const response = await onLine(newData.toString("utf-8")); + + if (!response) { + return; + } + + process.stdin.write(`${response}${EOL}`); + + // Remove newData from stdoutBuffers because the data has been consumed + // by the onLine callback. + stdoutBuffers.splice(stdoutBuffers.indexOf(newData), 1); + })(); + } + + stdoutBuffers.push(newData); + + if ( + handleNullTerminator && + // If the buffer ends in '0' then exit. + // We don't have to check the middle as no output will be written after the null until + // the next command starts + newData.length > 0 && + newData.readUInt8(newData.length - 1) === 0 + ) { + resolve(); + } + }; + stderrListener = (newData: Buffer) => { + stderrBuffers.push(newData); + + if (!silent) { + currentLineStderrBuffer = Buffer.concat([ + currentLineStderrBuffer, + newData, + ]); + + // Print the stderr to the logger as it comes in. We need to ensure that + // we don't split messages on the same line, so we buffer the stderr and + // split it on EOLs. + const eolBuffer = Buffer.from(EOL); + + let hasCreatedSubarray = false; + + let eolIndex; + while ( + (eolIndex = currentLineStderrBuffer.indexOf(eolBuffer)) !== -1 + ) { + const line = currentLineStderrBuffer.subarray(0, eolIndex); + void this.logger.log(line.toString("utf-8")); + currentLineStderrBuffer = currentLineStderrBuffer.subarray( + eolIndex + eolBuffer.length, + ); + hasCreatedSubarray = true; + } + + // We have created a subarray, which means that the complete original buffer is now referenced + // by the subarray. We need to create a new buffer to avoid memory leaks. + if (hasCreatedSubarray) { + currentLineStderrBuffer = Buffer.from(currentLineStderrBuffer); + } + } + }; + closeListener = (code) => { + if (handleNullTerminator) { + reject(new ExitCodeError(code)); + } else { + if (code === 0) { + resolve(); + } else { + reject(new ExitCodeError(code)); + } + } + }; + errorListener = (err) => { + reject(err); + }; + + // Start listening to stdout + process.stdout.addListener("data", stdoutListener); + // Listen to stderr + process.stderr.addListener("data", stderrListener); + // Listen for process exit. + process.addListener("close", closeListener); + // Listen for errors + process.addListener("error", errorListener); + + onListenStart?.(process); + }); + // Join all the data together + const fullBuffer = Buffer.concat(stdoutBuffers); + // Make sure we remove the terminator + const data = fullBuffer.toString( + "utf8", + 0, + handleNullTerminator ? fullBuffer.length - 1 : fullBuffer.length, + ); + if (!silent) { + void this.logger.log(currentLineStderrBuffer.toString("utf8")); + currentLineStderrBuffer = Buffer.alloc(0); + void this.logger.log("CLI command succeeded."); + } + return data; + } catch (err) { + // Report the error (if there is a stderr then use that otherwise just report the error code or nodejs error) + const cliError = getCliError( + err, + stderrBuffers.length > 0 + ? Buffer.concat(stderrBuffers).toString("utf8") + : undefined, + description, + args, + ); + cliError.stack += getErrorStack(err); + throw cliError; + } finally { + if (!silent && currentLineStderrBuffer.length > 0) { + void this.logger.log(currentLineStderrBuffer.toString("utf8")); + } + // Remove the listeners we set up. + if (stdoutListener) { + process.stdout.removeListener("data", stdoutListener); + } + if (stderrListener) { + process.stderr.removeListener("data", stderrListener); + } + if (closeListener) { + process.removeListener("close", closeListener); + } + if (errorListener) { + process.removeListener("error", errorListener); + } + } + } + + /** + * Run the next command in the queue + */ + private runNext(): void { + const callback = this.commandQueue.shift(); + callback?.(); + } + + /** + * Runs an asynchronous CodeQL CLI command without invoking the CLI server, returning any events + * fired by the command as an asynchronous generator. + * + * @param command The `codeql` command to be run, provided as an array of command/subcommand names. + * @param commandArgs The arguments to pass to the `codeql` command. + * @param cancellationToken CancellationToken to terminate the test process. + * @param logger Logger to write text output from the command. + * @returns The sequence of async events produced by the command. + */ + private async *runAsyncCodeQlCliCommandInternal( + command: string[], + commandArgs: string[], + cancellationToken?: CancellationToken, + logger?: BaseLogger, + ): AsyncGenerator { + // Add format argument first, in case commandArgs contains positional parameters. + const args = [...command, "--format", "jsonz", ...commandArgs]; + + // Spawn the CodeQL process + const codeqlPath = await this.getCodeQlPath(); + const child = spawn(codeqlPath, args); + + let cancellationRegistration: Disposable | undefined = undefined; + try { + if (cancellationToken !== undefined) { + cancellationRegistration = cancellationToken.onCancellationRequested( + (_e) => { + tk(child.pid || 0); + }, + ); + } + if (logger !== undefined) { + // The human-readable output goes to stderr. + void logStream(child.stderr, logger); + } + + for await (const event of splitStreamAtSeparators(child.stdout, ["\0"])) { + yield event; + } + + await new Promise((resolve, reject) => { + child.on("error", reject); + + child.on("close", (code) => { + if (code === 0) { + resolve(undefined); + } else { + reject( + new Error( + `${command.join(" ")} ${commandArgs.join(" ")} failed with code ${code}`, + ), + ); + } + }); + }); + } finally { + if (cancellationRegistration !== undefined) { + cancellationRegistration.dispose(); + } + } + } + + /** + * Runs an asynchronous CodeQL CLI command without invoking the CLI server, returning any events + * fired by the command as an asynchronous generator. + * + * @param command The `codeql` command to be run, provided as an array of command/subcommand names. + * @param commandArgs The arguments to pass to the `codeql` command. + * @param description Description of the action being run, to be shown in log and error messages. + * @param cancellationToken CancellationToken to terminate the test process. + * @param logger Logger to write text output from the command. + * @returns The sequence of async events produced by the command. + */ + public async *runAsyncCodeQlCliCommand( + command: string[], + commandArgs: string[], + description: string, + { + cancellationToken, + logger, + }: { + cancellationToken?: CancellationToken; + logger?: BaseLogger; + } = {}, + ): AsyncGenerator { + for await (const event of this.runAsyncCodeQlCliCommandInternal( + command, + commandArgs, + cancellationToken, + logger, + )) { + try { + yield JSON.parse(event) as EventType; + } catch (err) { + throw new Error( + `Parsing output of ${description} failed: ${getErrorMessage(err)}`, + ); + } + } + } + + /** + * Runs a CodeQL CLI command on the server, returning the output as a string. + * @param command The `codeql` command to be run, provided as an array of command/subcommand names. + * @param commandArgs The arguments to pass to the `codeql` command. + * @param description Description of the action being run, to be shown in log and error messages. + * @param progressReporter Used to output progress messages, e.g. to the status bar. + * @param onLine Used for responding to interactive output on stdout/stdin. + * @param silent If true, don't print logs to the CodeQL extension log. + * @param runInNewProcess If true, run this command in a new process rather than in the CLI server. + * @param token If runInNewProcess is true, allows cancelling the command. If runInNewProcess + * is false or not specified, this option is ignored. + * @returns The contents of the command's stdout, if the command succeeded. + */ + private runCodeQlCliCommand( + command: string[], + commandArgs: string[], + description: string, + { + progressReporter, + onLine, + silent = false, + runInNewProcess = false, + token, + }: RunOptions = {}, + ): Promise { + progressReporter?.report({ message: description }); + + if (runInNewProcess) { + return this.runCodeQlCliInNewProcess( + command, + commandArgs, + description, + onLine, + silent, + token, + ); + } + + return new Promise((resolve, reject) => { + // Construct the command that actually does the work + const callback = (): void => { + try { + this.runCodeQlCliInternal( + command, + commandArgs, + description, + onLine, + silent, + ).then(resolve, reject); + } catch (err) { + reject(asError(err)); + } + }; + // If the server is not running a command, then run the given command immediately, + // otherwise add to the queue + if (this.commandInProcess) { + this.commandQueue.push(callback); + } else { + callback(); + } + }); + } + + /** + * Runs a CodeQL CLI command, parsing the output as JSON. + * @param command The `codeql` command to be run, provided as an array of command/subcommand names. + * @param commandArgs The arguments to pass to the `codeql` command. + * @param description Description of the action being run, to be shown in log and error messages. + * @param addFormat Whether or not to add commandline arguments to specify the format as JSON. + * @param progressReporter Used to output progress messages, e.g. to the status bar. + * @returns The contents of the command's stdout, if the command succeeded. + */ + private async runJsonCodeQlCliCommand( + command: string[], + commandArgs: string[], + description: string, + { addFormat = true, ...runOptions }: JsonRunOptions = {}, + ): Promise { + const args = [ + // Add format argument first, in case commandArgs contains positional parameters. + ...(addFormat ? ["--format", "json"] : []), + ...commandArgs, + ]; + const result = await this.runCodeQlCliCommand( + command, + args, + description, + runOptions, + ); + try { + return JSON.parse(result) as OutputType; + } catch (err) { + throw new Error( + `Parsing output of ${description} failed: ${getErrorMessage(err)}`, + ); + } + } + + /** + * Runs a CodeQL CLI command with authentication, parsing the output as JSON. + * + * This method is intended for use with commands that accept a `--github-auth-stdin` argument. This + * will be added to the command line arguments automatically if an access token is available. + * + * When the argument is given to the command, the CLI server will prompt for the access token on + * stdin. This method will automatically respond to the prompt with the access token. + * + * There are a few race conditions that can potentially happen: + * 1. The user logs in after the command has started. In this case, no access token will be given. + * 2. The user logs out after the command has started. In this case, the user will be prompted + * to login again. If they cancel the login, the old access token that was present before the + * command was started will be used. + * + * @param command The `codeql` command to be run, provided as an array of command/subcommand names. + * @param commandArgs The arguments to pass to the `codeql` command. + * @param description Description of the action being run, to be shown in log and error messages. + * @param runOptions Options for running the command. + * @returns The contents of the command's stdout, if the command succeeded. + */ + private async runJsonCodeQlCliCommandWithAuthentication( + command: string[], + commandArgs: string[], + description: string, + runOptions: Omit = {}, + ): Promise { + const accessToken = await this.app.credentials.getExistingAccessToken(); + + const extraArgs = accessToken ? ["--github-auth-stdin"] : []; + + return this.runJsonCodeQlCliCommand( + command, + [...extraArgs, ...commandArgs], + description, + { + ...runOptions, + onLine: async (line) => { + if (line.startsWith("Enter value for --github-auth-stdin")) { + try { + return await this.app.credentials.getAccessToken(); + } catch { + // If the user cancels the authentication prompt, we still need to give a value to the CLI. + // By giving a potentially invalid value, the user will just get a 401/403 when they try to access a + // private package and the access token is invalid. + // This code path is very rare to hit. It would only be hit if the user is logged in when + // starting the command, then logging out before the getAccessToken() is called again and + // then cancelling the authentication prompt. + return accessToken; + } + } + + return undefined; + }, + }, + ); + } + + /** + * Resolves the language for a query. + * @param queryUri The URI of the query + */ + async resolveQueryByLanguage( + workspaces: string[], + queryUri: Uri, + ): Promise { + const subcommandArgs = [ + "--format", + "bylanguage", + queryUri.fsPath, + ...this.getAdditionalPacksArg(workspaces), + ]; + return JSON.parse( + await this.runCodeQlCliCommand( + ["resolve", "queries"], + subcommandArgs, + "Resolving query by language", + ), + ) as QueryInfoByLanguage; + } + + /** + * Finds all available queries in a given directory. + * @param queryDir Root of directory tree to search for queries. + * @param silent If true, don't print logs to the CodeQL extension log. + * @returns The list of queries that were found. + */ + public async resolveQueries( + queryDir: string, + silent?: boolean, + ): Promise { + const subcommandArgs = [queryDir]; + return await this.runJsonCodeQlCliCommand( + ["resolve", "queries"], + subcommandArgs, + "Resolving queries", + { silent }, + ); + } + + /** + * Finds all available QL tests in a given directory. + * @param testPath Root of directory tree to search for tests. + * @returns The list of tests that were found. + */ + public async resolveTests(testPath: string): Promise { + const subcommandArgs = [testPath]; + return await this.runJsonCodeQlCliCommand( + ["resolve", "tests", "--strict-test-discovery"], + subcommandArgs, + "Resolving tests", + { + // This happens as part of a background process, so we don't want to + // spam the log with messages. + silent: true, + }, + ); + } + + public async resolveQlref(qlref: string): Promise { + const subcommandArgs = [qlref]; + return await this.runJsonCodeQlCliCommand( + ["resolve", "qlref"], + subcommandArgs, + "Resolving qlref", + { + addFormat: false, + }, + ); + } + + /** + * Issues an internal clear-cache command to the cli server. This + * command is used to clear the qlpack cache of the server. + * + * This cache is generally cleared every 1s. This method is used + * to force an early clearing of the cache. + */ + public async clearCache(): Promise { + await this.runCodeQlCliCommand( + ["clear-cache"], + [], + "Clearing qlpack cache", + ); + } + + /** + * Runs QL tests. + * @param testPaths Full paths of the tests to run. + * @param workspaces Workspace paths to use as search paths for QL packs. + * @param options Additional options. + */ + public async *runTests( + testPaths: string[], + workspaces: string[], + { + cancellationToken, + logger, + }: { + cancellationToken?: CancellationToken; + logger?: BaseLogger; + }, + ): AsyncGenerator { + const subcommandArgs = this.cliConfig.additionalTestArguments.concat([ + ...this.getAdditionalPacksArg(workspaces), + "--threads", + this.cliConfig.numberTestThreads.toString(), + ...testPaths, + ]); + + for await (const event of this.runAsyncCodeQlCliCommand( + ["test", "run"], + subcommandArgs, + "Run CodeQL Tests", + { + cancellationToken, + logger, + }, + )) { + yield event; + } + } + + /** + * Gets the metadata for a query. + * @param queryPath The path to the query. + */ + async resolveMetadata(queryPath: string): Promise { + return await this.runJsonCodeQlCliCommand( + ["resolve", "metadata"], + [queryPath], + "Resolving query metadata", + ); + } + + /** + * Gets the RAM setting for the query server. + * @param queryMemoryMb The maximum amount of RAM to use, in MB. + * Leave `undefined` for CodeQL to choose a limit based on the available system memory. + * @param progressReporter The progress reporter to send progress information to. + * @returns String arguments that can be passed to the CodeQL query server, + * indicating how to split the given RAM limit between heap and off-heap memory. + */ + async resolveRam( + queryMemoryMb: number | undefined, + progressReporter?: ProgressReporter, + ): Promise { + const args: string[] = []; + if (queryMemoryMb !== undefined) { + args.push("--ram", queryMemoryMb.toString()); + } + return await this.runJsonCodeQlCliCommand( + ["resolve", "ram"], + args, + "Resolving RAM settings", + { + progressReporter, + }, + ); + } + /** + * Gets the headers (and optionally pagination info) of a bqrs. + * @param bqrsPath The path to the bqrs. + * @param pageSize The page size to precompute offsets into the binary file for. + */ + async bqrsInfo(bqrsPath: string, pageSize?: number): Promise { + const subcommandArgs = ( + pageSize ? ["--paginate-rows", pageSize.toString()] : [] + ).concat(bqrsPath); + return await this.runJsonCodeQlCliCommand( + ["bqrs", "info"], + subcommandArgs, + "Reading bqrs header", + ); + } + + async databaseUnbundle( + archivePath: string, + target: string, + name?: string, + ): Promise { + const subcommandArgs = []; + if (target) { + subcommandArgs.push("--target", target); + } + if (name) { + subcommandArgs.push("--name", name); + } + subcommandArgs.push(archivePath); + + return await this.runCodeQlCliCommand( + ["database", "unbundle"], + subcommandArgs, + `Extracting ${archivePath} to directory ${target}`, + ); + } + + /** + * Uses a .qhelp file to generate Query Help documentation in a specified format. + * @param pathToQhelp The path to the .qhelp file + * @param outputFileOrDirectory The output directory for the generated file + */ + async generateQueryHelp( + pathToQhelp: string, + outputFileOrDirectory?: string, + ): Promise { + const subcommandArgs = ["--format=markdown"]; + if (outputFileOrDirectory) { + subcommandArgs.push("--output", outputFileOrDirectory); + } + subcommandArgs.push(pathToQhelp); + + return await this.runCodeQlCliCommand( + ["generate", "query-help"], + subcommandArgs, + `Generating qhelp in markdown format at ${outputFileOrDirectory}`, + ); + } + + /** + * Generate a summary of an evaluation log. + * @param endSummaryPath The path to write only the end of query part of the human-readable summary to. + * @param inputPath The path of an evaluation event log. + * @param outputPath The path to write a human-readable summary of it to. + */ + async generateLogSummary( + inputPath: string, + outputPath: string, + endSummaryPath: string, + ): Promise { + const subcommandArgs = [ + "--format=text", + `--end-summary=${endSummaryPath}`, + "--sourcemap", + "--summary-symbol-map", + "--minify-output", + inputPath, + outputPath, + ]; + return await this.runCodeQlCliCommand( + ["generate", "log-summary"], + subcommandArgs, + "Generating log summary", + ); + } + + /** + * Generate a JSON summary of an evaluation log. + * @param inputPath The path of an evaluation event log. + * @param outputPath The path to write a JSON summary of it to. + */ + async generateJsonLogSummary( + inputPath: string, + outputPath: string, + ): Promise { + const subcommandArgs = ["--format=predicates", inputPath, outputPath]; + return await this.runCodeQlCliCommand( + ["generate", "log-summary"], + subcommandArgs, + "Generating JSON log summary", + ); + } + + /** + * Gets the results from a bqrs file. + * @param bqrsPath The path to the bqrs file. + * @param resultSet The result set to get. + * @param options Optional BqrsDecodeOptions arguments + */ + async bqrsDecode( + bqrsPath: string, + resultSet: string, + { pageSize, offset, entities = ["url", "string"] }: BqrsDecodeOptions = {}, + ): Promise { + const subcommandArgs = [ + `--entities=${entities.join(",")}`, + "--result-set", + resultSet, + ...(pageSize ? ["--rows", pageSize.toString()] : []), + ...(offset ? ["--start-at", offset.toString()] : []), + bqrsPath, + ]; + return this.runJsonCodeQlCliCommand( + ["bqrs", "decode"], + subcommandArgs, + "Reading bqrs data", + ); + } + + /** + * Gets all results from a bqrs file. + * @param bqrsPath The path to the bqrs file. + */ + async bqrsDecodeAll(bqrsPath: string): Promise { + return this.runJsonCodeQlCliCommand( + ["bqrs", "decode"], + [bqrsPath], + "Reading all bqrs data", + ); + } + + /** Gets the difference between two bqrs files. */ + async bqrsDiff( + bqrsPath1: string, + bqrsPath2: string, + options?: BqrsDiffOptions, + ): Promise<{ + uniquePath1: string; + uniquePath2: string; + path: string; + cleanup: () => Promise; + }> { + const { path, cleanup } = await dir({ unsafeCleanup: true }); + const uniquePath1 = join(path, "left.bqrs"); + const uniquePath2 = join(path, "right.bqrs"); + await this.runCodeQlCliCommand( + ["bqrs", "diff"], + [ + "--left", + uniquePath1, + "--right", + uniquePath2, + ...(options?.retainResultSets + ? ["--retain-result-sets", options.retainResultSets.join(",")] + : []), + ...(options?.resultSets + ? options.resultSets.flatMap(([left, right]) => [ + "--result-sets", + `${left},${right}`, + ]) + : []), + bqrsPath1, + bqrsPath2, + ], + "Diffing bqrs files", + ); + return { uniquePath1, uniquePath2, path, cleanup }; + } + + private async runInterpretCommand( + format: string, + additonalArgs: string[], + metadata: QueryMetadata, + resultsPath: string, + interpretedResultsPath: string, + sourceInfo?: SourceInfo, + ) { + const args = [ + "--output", + interpretedResultsPath, + "--format", + format, + // Forward all of the query metadata. + ...Object.entries(metadata).map(([key, value]) => `-t=${key}=${value}`), + ...additonalArgs, + ...(sourceInfo !== undefined + ? [ + "--source-archive", + sourceInfo.sourceArchive, + "--source-location-prefix", + sourceInfo.sourceLocationPrefix, + ] + : []), + "--threads", + this.cliConfig.numberThreads.toString(), + "--max-paths", + this.cliConfig.maxPaths.toString(), + resultsPath, + ]; + + await this.runCodeQlCliCommand( + ["bqrs", "interpret"], + args, + "Interpreting query results", + ); + } + + async interpretBqrsSarif( + metadata: QueryMetadata, + resultsPath: string, + interpretedResultsPath: string, + sourceInfo?: SourceInfo, + args?: string[], + ): Promise { + const additionalArgs = [ + // TODO: This flag means that we don't group interpreted results + // by primary location. We may want to revisit whether we call + // interpretation with and without this flag, or do some + // grouping client-side. + "--no-group-results", + ...(args ?? []), + ]; + + await this.runInterpretCommand( + SARIF_FORMAT, + additionalArgs, + metadata, + resultsPath, + interpretedResultsPath, + sourceInfo, + ); + return await sarifParser(interpretedResultsPath); + } + + // Warning: this function is untenable for large dot files, + async readDotFiles(dir: string): Promise { + const dotFiles: Array> = []; + for await (const file of walkDirectory(dir)) { + if (file.endsWith(".dot")) { + dotFiles.push(readFile(file, "utf8")); + } + } + return Promise.all(dotFiles); + } + + async interpretBqrsGraph( + metadata: QueryMetadata, + resultsPath: string, + interpretedResultsPath: string, + sourceInfo?: SourceInfo, + ): Promise { + const additionalArgs = sourceInfo + ? [ + "--dot-location-url-format", + `file://${sourceInfo.sourceLocationPrefix}{path}:{start:line}:{start:column}:{end:line}:{end:column}`, + ] + : []; + + await this.runInterpretCommand( + "dot", + additionalArgs, + metadata, + resultsPath, + interpretedResultsPath, + sourceInfo, + ); + + try { + const dot = await this.readDotFiles(interpretedResultsPath); + return dot; + } catch (err) { + throw new Error( + `Reading output of interpretation failed: ${getErrorMessage(err)}`, + ); + } + } + + async generateResultsCsv( + metadata: QueryMetadata, + resultsPath: string, + csvPath: string, + sourceInfo?: SourceInfo, + ): Promise { + await this.runInterpretCommand( + CSV_FORMAT, + [], + metadata, + resultsPath, + csvPath, + sourceInfo, + ); + } + + async sortBqrs( + resultsPath: string, + sortedResultsPath: string, + resultSet: string, + sortKeys: number[], + sortDirections: SortDirection[], + ): Promise { + const sortDirectionStrings = sortDirections.map((direction) => { + switch (direction) { + case SortDirection.asc: + return "asc"; + case SortDirection.desc: + return "desc"; + default: + return assertNever(direction); + } + }); + + await this.runCodeQlCliCommand( + ["bqrs", "decode"], + [ + "--format=bqrs", + `--result-set=${resultSet}`, + `--output=${sortedResultsPath}`, + `--sort-key=${sortKeys.join(",")}`, + `--sort-direction=${sortDirectionStrings.join(",")}`, + resultsPath, + ], + "Sorting query results", + ); + } + + /** + * Returns the `DbInfo` for a database. + * @param databasePath Path to the CodeQL database to obtain information from. + */ + resolveDatabase(databasePath: string): Promise { + return this.runJsonCodeQlCliCommand( + ["resolve", "database"], + [databasePath], + "Resolving database", + ); + } + + /** + * Gets information necessary for upgrading a database. + * @param dbScheme the path to the dbscheme of the database to be upgraded. + * @param searchPath A list of directories to search for upgrade scripts. + * @param allowDowngradesIfPossible Whether we should try and include downgrades of we can. + * @param targetDbScheme The dbscheme to try to upgrade to. + * @returns A list of database upgrade script directories + */ + async resolveUpgrades( + dbScheme: string, + searchPath: string[], + allowDowngradesIfPossible: boolean, + targetDbScheme?: string, + ): Promise { + const args = [ + ...this.getAdditionalPacksArg(searchPath), + "--dbscheme", + dbScheme, + ]; + if (targetDbScheme) { + args.push("--target-dbscheme", targetDbScheme); + if (allowDowngradesIfPossible) { + args.push("--allow-downgrades"); + } + } + return await this.runJsonCodeQlCliCommand( + ["resolve", "upgrades"], + args, + "Resolving database upgrade scripts", + ); + } + + /** + * Gets information about available qlpacks + * @param additionalPacks A list of directories to search for qlpacks. + * @param extensionPacksOnly Whether to only search for extension packs. If true, only extension packs will + * be returned. If false, all packs will be returned. + * @param kind Whether to only search for qlpacks with a certain kind. + * @returns A dictionary mapping qlpack name to the directory it comes from + */ + async resolveQlpacks( + additionalPacks: string[], + extensionPacksOnly = false, + kind?: "query" | "library" | "all", + ): Promise { + const args = this.getAdditionalPacksArg(additionalPacks); + if (extensionPacksOnly) { + args.push("--kind", "extension", "--no-recursive"); + } else if (kind) { + args.push("--kind", kind); + } + + return this.runJsonCodeQlCliCommand( + ["resolve", "qlpacks"], + args, + `Resolving qlpack information${ + extensionPacksOnly ? " (extension packs only)" : "" + }`, + ); + } + + /** + * Gets information about available extensions + * @param suite The suite to resolve. + * @param additionalPacks A list of directories to search for qlpacks. + * @returns An object containing the list of models and extensions + */ + async resolveExtensions( + suite: string, + additionalPacks: string[], + ): Promise { + const args = this.getAdditionalPacksArg(additionalPacks); + args.push(suite); + + return this.runJsonCodeQlCliCommand( + ["resolve", "extensions"], + args, + "Resolving extensions", + { + addFormat: false, + }, + ); + } + + /** + * Gets information about the available languages. + * @returns A dictionary mapping language name to the directory it comes from + */ + async resolveLanguages(): Promise { + return await this.runJsonCodeQlCliCommand( + ["resolve", "languages"], + [], + "Resolving languages", + ); + } + + /** + * Gets the list of available languages. Refines the result of `resolveLanguages()`, by excluding + * extra things like "xml" and "properties". + * + * @returns An array of languages that are supported by the current version of the CodeQL CLI. + */ + public async getSupportedLanguages(): Promise { + if (!this._supportedLanguages) { + // Get the intersection of resolveLanguages with the list of languages in QueryLanguage. + const resolvedLanguages = Object.keys(await this.resolveLanguages()); + const hardcodedLanguages = Object.values(QueryLanguage).map((s) => + s.toString(), + ); + + this._supportedLanguages = resolvedLanguages.filter((lang) => + hardcodedLanguages.includes(lang), + ); + } + return this._supportedLanguages; + } + + /** + * Gets information about queries in a query suite. + * @param suite The suite to resolve. + * @param additionalPacks A list of directories to search for qlpacks before searching in `searchPath`. + * @param searchPath A list of directories to search for packs not found in `additionalPacks`. If undefined, + * the default CLI search path is used. + * @returns A list of query files found. + */ + async resolveQueriesInSuite( + suite: string, + additionalPacks: string[], + searchPath?: string[], + ): Promise { + const args = this.getAdditionalPacksArg(additionalPacks); + if (searchPath !== undefined) { + args.push("--search-path", join(...searchPath)); + } + // All of our usage of `codeql resolve queries` needs to handle library packs. + args.push("--allow-library-packs"); + args.push(suite); + return this.runJsonCodeQlCliCommand( + ["resolve", "queries"], + args, + "Resolving queries", + ); + } + + /** + * Adds a core language QL library pack for the given query language as a dependency + * of the current package, and then installs them. This command modifies the qlpack.yml + * file of the current package. Formatting and comments will be removed. + * @param dir The directory where QL pack exists. + * @param language The language of the QL pack. + */ + async packAdd(dir: string, queryLanguage: QueryLanguage) { + const args = ["--dir", dir]; + args.push(`codeql/${queryLanguage}-all`); + const ret = await this.runCodeQlCliCommand( + ["pack", "add"], + args, + `Adding and installing ${queryLanguage} pack dependency.`, + ); + await this.notifyPackInstalled(); + return ret; + } + + /** + * Downloads a specified pack. + * @param packs The `` of the packs to download. + * @param token The cancellation token. If not specified, the command will be run in the CLI server. + */ + async packDownload( + packs: string[], + token?: CancellationToken, + ): Promise { + return this.runJsonCodeQlCliCommandWithAuthentication( + ["pack", "download"], + packs, + "Downloading packs", + { + runInNewProcess: !!token, // Only run in a new process if a token is provided + token, + }, + ); + } + + async packInstall( + dir: string, + { forceUpdate = false, workspaceFolders = [] as string[] } = {}, + ) { + const args = [dir]; + if (forceUpdate) { + args.push("--mode", "update"); + } + if (workspaceFolders?.length > 0) { + args.push( + // Allow prerelease packs from the ql submodule. + "--allow-prerelease", + // Allow the use of --additional-packs argument without issuing a warning + "--no-strict-mode", + ...this.getAdditionalPacksArg(workspaceFolders), + ); + } + const ret = await this.runJsonCodeQlCliCommandWithAuthentication( + ["pack", "install"], + args, + "Installing pack dependencies", + ); + await this.notifyPackInstalled(); + return ret; + } + + /** + * Compile a CodeQL pack and bundle it into a single file. + * + * @param sourcePackDir The directory of the input CodeQL pack. + * @param workspaceFolders The workspace folders to search for additional packs. + * @param outputBundleFile The path to the output bundle file. + * @param outputPackDir The directory to contain the unbundled output pack. + * @param moreOptions Additional options to be passed to `codeql pack bundle`. + * @param token Cancellation token for the operation. + */ + async packBundle( + sourcePackDir: string, + workspaceFolders: string[], + outputBundleFile: string, + outputPackDir: string, + moreOptions: string[], + token?: CancellationToken, + ): Promise { + const args = [ + "-o", + outputBundleFile, + sourcePackDir, + "--pack-path", + outputPackDir, + ...moreOptions, + ...this.getAdditionalPacksArg(workspaceFolders), + ]; + + return this.runJsonCodeQlCliCommandWithAuthentication( + ["pack", "bundle"], + args, + "Bundling pack", + { + runInNewProcess: true, + token, + }, + ); + } + + async packPacklist(dir: string, includeQueries: boolean): Promise { + const args = includeQueries ? [dir] : ["--no-include-queries", dir]; + const results: { paths: string[] } = await this.runJsonCodeQlCliCommand( + ["pack", "packlist"], + args, + "Generating the pack list", + ); + + return results.paths; + } + + async packResolveDependencies( + dir: string, + ): Promise<{ [pack: string]: string }> { + // Uses the default `--mode use-lock`, which creates the lock file if it doesn't exist. + const results: { [pack: string]: string } = + await this.runJsonCodeQlCliCommandWithAuthentication( + ["pack", "resolve-dependencies"], + [dir], + "Resolving pack dependencies", + ); + return results; + } + + async generateDil(qloFile: string, outFile: string): Promise { + await this.runCodeQlCliCommand( + ["query", "decompile"], + ["--kind", "dil", "-o", outFile, qloFile], + "Generating DIL", + ); + } + + async generateExtensiblePredicateMetadata( + packRoot: string, + ): Promise { + return await this.runJsonCodeQlCliCommand( + ["generate", "extensible-predicate-metadata"], + [packRoot], + "Generating extensible predicate metadata", + { addFormat: false }, + ); + } + + public async getVersion(): Promise { + return (await this.getVersionAndFeatures()).version; + } + + public async getFeatures(): Promise { + return (await this.getVersionAndFeatures()).features; + } + + private async getVersionAndFeatures(): Promise { + if (!this._versionAndFeatures) { + try { + const newVersionAndFeatures = await this.refreshVersion(); + this._versionAndFeatures = newVersionAndFeatures; + this._versionChangedListeners.forEach((listener) => + listener(newVersionAndFeatures), + ); + } catch (e) { + this._versionChangedListeners.forEach((listener) => + listener(undefined), + ); + throw e; + } + } + return this._versionAndFeatures; + } + + public addVersionChangedListener(listener: VersionChangedListener) { + if (this._versionAndFeatures) { + listener(this._versionAndFeatures); + } + this._versionChangedListeners.push(listener); + } + + /** + * This method should be called after a pack has been installed. + * + * This restarts the language client. Restarting the language client has the + * effect of removing compilation errors in open ql/qll files that are caused + * by the pack not having been installed previously. + */ + private async notifyPackInstalled() { + await this.languageClient.restart(); + } + + private async refreshVersion(): Promise { + const distribution = await this.distributionProvider.getDistribution(); + switch (distribution.kind) { + case FindDistributionResultKind.CompatibleDistribution: + // eslint-disable-next-line no-fallthrough -- Intentional fallthrough + case FindDistributionResultKind.IncompatibleDistribution: + return distribution.versionAndFeatures; + + default: + // We should not get here because if no distributions are available, then + // the cli class is never instantiated. + throw new Error("No distribution found"); + } + } + + private getAdditionalPacksArg(paths: string[]): string[] { + return paths.length ? ["--additional-packs", paths.join(delimiter)] : []; + } + + public useExtensionPacks(): boolean { + return this.cliConfig.useExtensionPacks; + } + + public async setUseExtensionPacks(useExtensionPacks: boolean) { + await this.cliConfig.setUseExtensionPacks(useExtensionPacks); + } + + /** Checks if the CLI supports a specific feature. */ + public async supportsFeature(feature: keyof CliFeatures): Promise { + return (await this.getFeatures())[feature] === true; + } +} + +/** + * Spawns a child server process using the CodeQL CLI + * and attaches listeners to it. + * + * @param codeqlPath The configuration containing the path to the CLI. + * @param name Name of the server being started, to be shown in log and error messages. + * @param command The `codeql` command to be run, provided as an array of command/subcommand names. + * @param commandArgs The arguments to pass to the `codeql` command. + * @param logger Logger to write startup messages. + * @param stderrListener Listener for log messages from the server's stderr stream. + * @param stdoutListener Optional listener for messages from the server's stdout stream. + * @param progressReporter Used to output progress messages, e.g. to the status bar. + * @returns The started child process. + */ +export function spawnServer( + codeqlPath: string, + name: string, + command: string[], + commandArgs: string[], + logger: Logger, + stderrListener: (data: string | Buffer) => void, + stdoutListener?: (data: string | Buffer) => void, + progressReporter?: ProgressReporter, +): ChildProcessWithoutNullStreams { + // Enable verbose logging. + const args = command.concat(commandArgs).concat(LOGGING_FLAGS); + + // Start the server process. + const base = codeqlPath; + const argsString = args.join(" "); + + progressReporter?.report({ message: `Starting ${name}` }); + + void logger.log(`Starting ${name} using CodeQL CLI: ${base} ${argsString}`); + const child = spawnChildProcess(base, args); + if (!child || !child.pid) { + throw new Error( + `Failed to start ${name} using command ${base} ${argsString}.`, + ); + } + + let lastStdout: string | Buffer | undefined = undefined; + child.stdout.on("data", (data) => { + lastStdout = data; + }); + // Set up event listeners. + child.on("close", async (code, signal) => { + if (code !== null) { + void logger.log(`Child process exited with code ${code}`); + } + if (signal) { + void logger.log( + `Child process exited due to receipt of signal ${signal}`, + ); + } + // If the process exited abnormally, log the last stdout message, + // It may be from the jvm. + if (code !== 0 && lastStdout !== undefined) { + void logger.log(`Last stdout was "${lastStdout.toString()}"`); + } + }); + child.stderr.on("data", stderrListener); + if (stdoutListener !== undefined) { + child.stdout.on("data", stdoutListener); + } + + progressReporter?.report({ message: `Started ${name}` }); + + void logger.log(`${name} started on PID: ${child.pid}`); + return child; +} + +/** + * Log a text stream to a `Logger` interface. + * @param stream The stream to log. + * @param logger The logger that will consume the stream output. + */ +async function logStream(stream: Readable, logger: BaseLogger): Promise { + for await (const line of splitStreamAtSeparators(stream, LINE_ENDINGS)) { + // Await the result of log here in order to ensure the logs are written in the correct order. + await logger.log(line); + } +} + +function isEnvTrue(name: string): boolean { + return ( + name in process.env && + process.env[name] !== "0" && + // Use en-US since we expect the value to be either "false" or "FALSE", not a localized version. + process.env[name]?.toLocaleLowerCase("en-US") !== "false" + ); +} + +export function shouldDebugLanguageServer() { + return isEnvTrue("IDE_SERVER_JAVA_DEBUG"); +} + +export function shouldDebugQueryServer() { + return isEnvTrue("QUERY_SERVER_JAVA_DEBUG"); +} + +function shouldDebugCliServer() { + return isEnvTrue("CLI_SERVER_JAVA_DEBUG"); +} diff --git a/extensions/ql-vscode/src/codeql-cli/distribution.ts b/extensions/ql-vscode/src/codeql-cli/distribution.ts new file mode 100644 index 00000000000..35bbb7acf16 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/distribution.ts @@ -0,0 +1,897 @@ +import type { WriteStream } from "fs"; +import { + createWriteStream, + mkdtemp, + outputJson, + pathExists, + readJson, + remove, +} from "fs-extra"; +import { tmpdir } from "os"; +import { delimiter, dirname, join } from "path"; +import { Range, satisfies } from "semver"; +import type { Event, ExtensionContext } from "vscode"; +import type { DistributionConfig } from "../config"; +import { extLogger } from "../common/logging/vscode"; +import type { VersionAndFeatures } from "./cli-version"; +import { getCodeQlCliVersion } from "./cli-version"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { reportStreamProgress } from "../common/vscode/progress"; +import { + codeQlLauncherName, + deprecatedCodeQlLauncherName, + getRequiredAssetName, +} from "../common/distribution"; +import { + InvocationRateLimiter, + InvocationRateLimiterResultKind, +} from "../common/invocation-rate-limiter"; +import type { NotificationLogger } from "../common/logging"; +import { + showAndLogExceptionWithTelemetry, + showAndLogErrorMessage, + showAndLogWarningMessage, +} from "../common/logging"; +import { unzipToDirectoryConcurrently } from "../common/unzip-concurrently"; +import { reportUnzipProgress } from "../common/vscode/unzip-progress"; +import type { Release } from "./distribution/release"; +import { ReleasesApiConsumer } from "./distribution/releases-api-consumer"; +import { createTimeoutSignal } from "../common/fetch-stream"; +import { withDistributionUpdateLock } from "./lock"; +import { asError, getErrorMessage } from "../common/helpers-pure"; +import { isIOError } from "../common/files"; +import { telemetryListener } from "../common/vscode/telemetry"; +import { redactableError } from "../common/errors"; +import { ExtensionManagedDistributionCleaner } from "./distribution/cleaner"; + +/** + * distribution.ts + * ------------ + * + * Management of CodeQL CLI binaries. + */ + +/** + * Repository name with owner of the stable version of the extension-managed distribution on GitHub. + */ +const STABLE_DISTRIBUTION_REPOSITORY_NWO = "github/codeql-cli-binaries"; + +/** + * Repository name with owner of the nightly version of the extension-managed distribution on GitHub. + */ +const NIGHTLY_DISTRIBUTION_REPOSITORY_NWO = "dsp-testing/codeql-cli-nightlies"; + +/** + * Range of versions of the CLI that are compatible with the extension. + * + * This applies to both extension-managed and CLI distributions. + */ +export const DEFAULT_DISTRIBUTION_VERSION_RANGE: Range = new Range("2.x"); + +export interface DistributionState { + folderIndex: number; + release: Release | null; +} + +export interface DistributionProvider { + getCodeQlPathWithoutVersionCheck(): Promise; + onDidChangeDistribution?: Event; + getDistribution(): Promise; +} + +export class DistributionManager implements DistributionProvider { + constructor( + public readonly config: DistributionConfig, + private readonly versionRange: Range, + extensionContext: ExtensionContext, + logger: NotificationLogger, + ) { + this._onDidChangeDistribution = config.onDidChangeConfiguration; + this.extensionSpecificDistributionManager = + new ExtensionSpecificDistributionManager( + config, + versionRange, + extensionContext, + logger, + ); + this.updateCheckRateLimiter = new InvocationRateLimiter( + extensionContext.globalState, + "extensionSpecificDistributionUpdateCheck", + () => + this.extensionSpecificDistributionManager.checkForUpdatesToDistribution(), + ); + this.extensionManagedDistributionCleaner = + new ExtensionManagedDistributionCleaner( + extensionContext, + logger, + this.extensionSpecificDistributionManager, + ); + } + + public async initialize(): Promise { + await this.extensionSpecificDistributionManager.initialize(); + } + + /** + * Look up a CodeQL launcher binary. + */ + public async getDistribution(): Promise { + const distribution = await this.getDistributionWithoutVersionCheck(); + if (distribution === undefined) { + return { + kind: FindDistributionResultKind.NoDistribution, + }; + } + const versionAndFeatures = await getCodeQlCliVersion( + distribution.codeQlPath, + extLogger, + ); + if (versionAndFeatures === undefined) { + return { + distribution, + kind: FindDistributionResultKind.UnknownCompatibilityDistribution, + }; + } + + /** + * Specifies whether prerelease versions of the CodeQL CLI should be accepted. + * + * Suppose a user sets the includePrerelease config option, obtains a prerelease, then decides + * they no longer want a prerelease, so unsets the includePrerelease config option. + * Unsetting the includePrerelease config option should trigger an update check, and this + * update check should present them an update that returns them back to a non-prerelease + * version. + * + * Therefore, we adopt the following: + * + * - If the user is managing their own CLI, they can use a prerelease without specifying the + * includePrerelease option. + * - If the user is using an extension-managed CLI, then prereleases are only accepted when the + * includePrerelease config option is set. + */ + const includePrerelease = + distribution.kind !== DistributionKind.ExtensionManaged || + this.config.includePrerelease; + + if ( + !satisfies(versionAndFeatures.version, this.versionRange, { + includePrerelease, + }) + ) { + return { + distribution, + kind: FindDistributionResultKind.IncompatibleDistribution, + versionAndFeatures, + }; + } + return { + distribution, + kind: FindDistributionResultKind.CompatibleDistribution, + versionAndFeatures, + }; + } + + public async hasDistribution(): Promise { + const result = await this.getDistribution(); + return result.kind !== FindDistributionResultKind.NoDistribution; + } + + public async getCodeQlPathWithoutVersionCheck(): Promise { + const distribution = await this.getDistributionWithoutVersionCheck(); + return distribution?.codeQlPath; + } + + /** + * Returns the path to a possibly-compatible CodeQL launcher binary, or undefined if a binary not be found. + */ + async getDistributionWithoutVersionCheck(): Promise< + Distribution | undefined + > { + // Check config setting, then extension specific distribution, then PATH. + if (this.config.customCodeQlPath) { + if (!(await pathExists(this.config.customCodeQlPath))) { + void showAndLogErrorMessage( + extLogger, + `The CodeQL executable path is specified as "${this.config.customCodeQlPath}" ` + + "by a configuration setting, but a CodeQL executable could not be found at that path. Please check " + + "that a CodeQL executable exists at the specified path or remove the setting.", + ); + return undefined; + } + + // emit a warning if using a deprecated launcher and a non-deprecated launcher exists + if ( + deprecatedCodeQlLauncherName() && + this.config.customCodeQlPath.endsWith( + deprecatedCodeQlLauncherName()!, + ) && + (await this.hasNewLauncherName()) + ) { + warnDeprecatedLauncher(); + } + return { + codeQlPath: this.config.customCodeQlPath, + kind: DistributionKind.CustomPathConfig, + }; + } + + const extensionSpecificCodeQlPath = + await this.extensionSpecificDistributionManager.getCodeQlPathWithoutVersionCheck(); + if (extensionSpecificCodeQlPath !== undefined) { + return { + codeQlPath: extensionSpecificCodeQlPath, + kind: DistributionKind.ExtensionManaged, + }; + } + + if (process.env.PATH) { + for (const searchDirectory of process.env.PATH.split(delimiter)) { + const expectedLauncherPath = + await getExecutableFromDirectory(searchDirectory); + if (expectedLauncherPath) { + return { + codeQlPath: expectedLauncherPath, + kind: DistributionKind.PathEnvironmentVariable, + }; + } + } + void extLogger.log("INFO: Could not find CodeQL on path."); + } + + return undefined; + } + + /** + * Check for updates to the extension-managed distribution. If one has not already been installed, + * this will return an update available result with the latest available release. + * + * Returns a failed promise if an unexpected error occurs during installation. + */ + public async checkForUpdatesToExtensionManagedDistribution( + minSecondsSinceLastUpdateCheck: number, + ): Promise { + const distribution = await this.getDistributionWithoutVersionCheck(); + if (distribution === undefined) { + minSecondsSinceLastUpdateCheck = 0; + } + const extensionManagedCodeQlPath = + await this.extensionSpecificDistributionManager.getCodeQlPathWithoutVersionCheck(); + if (distribution?.codeQlPath !== extensionManagedCodeQlPath) { + // A distribution is present but it isn't managed by the extension. + return createInvalidLocationResult(); + } + const updateCheckResult = + await this.updateCheckRateLimiter.invokeFunctionIfIntervalElapsed( + minSecondsSinceLastUpdateCheck, + ); + switch (updateCheckResult.kind) { + case InvocationRateLimiterResultKind.Invoked: + return updateCheckResult.result; + case InvocationRateLimiterResultKind.RateLimited: + return createAlreadyCheckedRecentlyResult(); + } + } + + /** + * Installs a release of the extension-managed distribution. + * + * Returns a failed promise if an unexpected error occurs during installation. + */ + public installExtensionManagedDistributionRelease( + release: Release, + progressCallback?: ProgressCallback, + ): Promise { + return this.extensionSpecificDistributionManager.installDistributionRelease( + release, + progressCallback, + ); + } + + public startCleanup() { + this.extensionManagedDistributionCleaner.start(); + } + + public get onDidChangeDistribution(): Event | undefined { + return this._onDidChangeDistribution; + } + + /** + * @return true if the non-deprecated launcher name exists on the file system + * in the same directory as the specified launcher only if using an external + * installation. False otherwise. + */ + private async hasNewLauncherName(): Promise { + if (!this.config.customCodeQlPath) { + // not managed externally + return false; + } + const dir = dirname(this.config.customCodeQlPath); + const newLaunderPath = join(dir, codeQlLauncherName()); + return await pathExists(newLaunderPath); + } + + private readonly extensionSpecificDistributionManager: ExtensionSpecificDistributionManager; + private readonly updateCheckRateLimiter: InvocationRateLimiter; + private readonly extensionManagedDistributionCleaner: ExtensionManagedDistributionCleaner; + private readonly _onDidChangeDistribution: Event | undefined; +} + +class ExtensionSpecificDistributionManager { + private distributionState: DistributionState | undefined; + + constructor( + private readonly config: DistributionConfig, + private readonly versionRange: Range, + private readonly extensionContext: ExtensionContext, + private readonly logger: NotificationLogger, + ) { + /**/ + } + + public async initialize() { + await this.ensureDistributionStateExists(); + } + + private async ensureDistributionStateExists() { + const distributionStatePath = this.getDistributionStatePath(); + try { + this.distributionState = await readJson(distributionStatePath); + } catch (e) { + if (isIOError(e) && e.code === "ENOENT") { + // If the file doesn't exist, that just means we need to create it + + this.distributionState = { + folderIndex: + this.extensionContext.globalState.get( + "distributionFolderIndex", + 0, + ) ?? 0, + release: + this.extensionContext.globalState.get("distributionRelease") ?? + null, + }; + + // This may result in a race condition, but when this happens both processes should write the same file. + await outputJson(distributionStatePath, this.distributionState); + } else { + void showAndLogExceptionWithTelemetry( + this.logger, + telemetryListener, + redactableError( + asError(e), + )`Failed to read distribution state from ${distributionStatePath}: ${getErrorMessage(e)}`, + ); + this.distributionState = { + folderIndex: 0, + release: null, + }; + } + } + } + + public async getCodeQlPathWithoutVersionCheck(): Promise { + if (this.getInstalledRelease() !== undefined) { + // An extension specific distribution has been installed. + const expectedLauncherPath = await getExecutableFromDirectory( + this.getDistributionRootPath(), + true, + ); + if (expectedLauncherPath) { + return expectedLauncherPath; + } + + try { + await this.removeDistribution(); + } catch (e) { + void extLogger.log( + "WARNING: Tried to remove corrupted CodeQL CLI at " + + `${this.getDistributionStoragePath()} but encountered an error: ${getErrorMessage(e)}.`, + ); + } + } + return undefined; + } + + /** + * Check for updates to the extension-managed distribution. If one has not already been installed, + * this will return an update available result with the latest available release. + * + * Returns a failed promise if an unexpected error occurs during installation. + */ + public async checkForUpdatesToDistribution(): Promise { + const codeQlPath = await this.getCodeQlPathWithoutVersionCheck(); + const extensionSpecificRelease = this.getInstalledRelease(); + const latestRelease = await this.getLatestRelease(); + + // v2.12.3 was released with a bug that causes the extension to fail + // so we force the extension to ignore it. + if ( + extensionSpecificRelease && + extensionSpecificRelease.name === "v2.12.3" + ) { + return createUpdateAvailableResult(latestRelease); + } + + if ( + extensionSpecificRelease !== undefined && + codeQlPath !== undefined && + latestRelease.id === extensionSpecificRelease.id + ) { + return createAlreadyUpToDateResult(); + } + return createUpdateAvailableResult(latestRelease); + } + + /** + * Installs a release of the extension-managed distribution. + * + * Returns a failed promise if an unexpected error occurs during installation. + */ + public async installDistributionRelease( + release: Release, + progressCallback?: ProgressCallback, + ): Promise { + if (!this.distributionState) { + await this.ensureDistributionStateExists(); + } + + const distributionStatePath = this.getDistributionStatePath(); + + await withDistributionUpdateLock( + // .lock will be appended to this filename + distributionStatePath, + async () => { + await this.downloadDistribution(release, progressCallback); + // Store the installed release within the global extension state. + await this.storeInstalledRelease(release); + }, + ); + } + + private async downloadDistribution( + release: Release, + progressCallback?: ProgressCallback, + ): Promise { + try { + await this.removeDistribution(); + } catch (e) { + void extLogger.log( + `Tried to clean up old version of CLI at ${this.getDistributionStoragePath()} ` + + `but encountered an error: ${getErrorMessage(e)}.`, + ); + } + + // Filter assets to the unique one that we require. + const requiredAssetName = getRequiredAssetName(); + const assets = release.assets.filter( + (asset) => asset.name === requiredAssetName, + ); + if (assets.length === 0) { + throw new Error( + `Invariant violation: chose a release to install that didn't have ${requiredAssetName}`, + ); + } + if (assets.length > 1) { + void extLogger.log( + `WARNING: chose a release with more than one asset to install, found ${assets + .map((asset) => asset.name) + .join(", ")}`, + ); + } + + const { + signal, + onData, + dispose: disposeTimeout, + } = createTimeoutSignal(this.config.downloadTimeout); + + const tmpDirectory = await mkdtemp(join(tmpdir(), "vscode-codeql")); + + let archiveFile: WriteStream | undefined = undefined; + + try { + const assetStream = + await this.createReleasesApiConsumer().streamBinaryContentOfAsset( + assets[0], + signal, + ); + + const body = assetStream.body; + if (!body) { + throw new Error("No body in asset stream"); + } + + const archivePath = join(tmpDirectory, "distributionDownload.zip"); + archiveFile = createWriteStream(archivePath); + + const contentLength = assetStream.headers.get("content-length"); + const totalNumBytes = contentLength + ? parseInt(contentLength, 10) + : undefined; + + const reportProgress = reportStreamProgress( + `Downloading CodeQL CLI ${release.name}…`, + totalNumBytes, + progressCallback, + ); + + const reader = body.getReader(); + for (;;) { + const { done, value } = await reader.read(); + if (done) { + break; + } + + onData(); + reportProgress(value?.length ?? 0); + + await new Promise((resolve, reject) => { + archiveFile?.write(value, (err) => { + if (err) { + reject(err); + } + resolve(undefined); + }); + }); + } + + await new Promise((resolve, reject) => { + archiveFile?.close((err) => { + if (err) { + reject(err); + } + resolve(undefined); + }); + }); + + disposeTimeout(); + + await this.bumpDistributionFolderIndex(); + + void extLogger.log( + `Extracting CodeQL CLI to ${this.getDistributionStoragePath()}`, + ); + await unzipToDirectoryConcurrently( + archivePath, + this.getDistributionStoragePath(), + progressCallback + ? reportUnzipProgress( + `Extracting CodeQL CLI ${release.name}…`, + progressCallback, + ) + : undefined, + ); + } catch (e) { + if (e instanceof DOMException && e.name === "AbortError") { + const thrownError = new Error("The download timed out."); + thrownError.stack = e.stack; + throw thrownError; + } + + throw e; + } finally { + disposeTimeout(); + + archiveFile?.close(); + + await remove(tmpDirectory); + } + } + + /** + * Remove the extension-managed distribution. + * + * This should not be called for a distribution that is currently in use, as remove may fail. + */ + private async removeDistribution(): Promise { + await this.storeInstalledRelease(undefined); + if (await pathExists(this.getDistributionStoragePath())) { + await remove(this.getDistributionStoragePath()); + } + } + + private async getLatestRelease(): Promise { + const requiredAssetName = getRequiredAssetName(); + void extLogger.log( + `Searching for latest release including ${requiredAssetName}.`, + ); + + const versionRange = this.usingNightlyReleases + ? undefined + : this.versionRange; + const orderBySemver = !this.usingNightlyReleases; + const includePrerelease = + this.usingNightlyReleases || this.config.includePrerelease; + + return this.createReleasesApiConsumer().getLatestRelease( + versionRange, + orderBySemver, + includePrerelease, + (release) => { + // v2.12.3 was released with a bug that causes the extension to fail + // so we force the extension to ignore it. + if (release.name === "v2.12.3") { + return false; + } + + const matchingAssets = release.assets.filter( + (asset) => asset.name === requiredAssetName, + ); + if (matchingAssets.length === 0) { + // For example, this could be a release with no platform-specific assets. + void extLogger.log( + `INFO: Ignoring a release with no assets named ${requiredAssetName}`, + ); + return false; + } + if (matchingAssets.length > 1) { + void extLogger.log( + `WARNING: Ignoring a release with more than one asset named ${requiredAssetName}`, + ); + return false; + } + return true; + }, + ); + } + + private createReleasesApiConsumer(): ReleasesApiConsumer { + return new ReleasesApiConsumer( + this.distributionRepositoryNwo, + this.config.personalAccessToken, + ); + } + + private get distributionRepositoryNwo(): string { + if (this.config.channel === "nightly") { + return NIGHTLY_DISTRIBUTION_REPOSITORY_NWO; + } else { + return STABLE_DISTRIBUTION_REPOSITORY_NWO; + } + } + + private get usingNightlyReleases(): boolean { + return ( + this.distributionRepositoryNwo === NIGHTLY_DISTRIBUTION_REPOSITORY_NWO + ); + } + + private async bumpDistributionFolderIndex(): Promise { + await this.updateState((oldState) => { + return { + ...oldState, + folderIndex: (oldState.folderIndex ?? 0) + 1, + }; + }); + } + + private getDistributionStoragePath(): string { + const distributionState = this.getDistributionState(); + + // Use an empty string for the initial distribution for backwards compatibility. + const distributionFolderIndex = distributionState.folderIndex || ""; + return join( + this.extensionContext.globalStorageUri.fsPath, + ExtensionSpecificDistributionManager._currentDistributionFolderBaseName + + distributionFolderIndex, + ); + } + + private getDistributionRootPath(): string { + return join( + this.getDistributionStoragePath(), + ExtensionSpecificDistributionManager._codeQlExtractedFolderName, + ); + } + + private getDistributionStatePath(): string { + return join( + this.extensionContext.globalStorageUri.fsPath, + ExtensionSpecificDistributionManager._distributionStateFilename, + ); + } + + private getInstalledRelease(): Release | undefined { + return this.getDistributionState().release ?? undefined; + } + + private async storeInstalledRelease( + release: Release | undefined, + ): Promise { + await this.updateState((oldState) => ({ + ...oldState, + release: release ?? null, + })); + } + + private getDistributionState(): DistributionState { + const distributionState = this.distributionState; + if (distributionState === undefined) { + throw new Error( + "Invariant violation: distribution state not initialized", + ); + } + return distributionState; + } + + private async updateState( + f: (oldState: DistributionState) => DistributionState, + ) { + const oldState = this.distributionState; + if (oldState === undefined) { + throw new Error( + "Invariant violation: distribution state not initialized", + ); + } + const newState = f(oldState); + this.distributionState = newState; + + const distributionStatePath = this.getDistributionStatePath(); + await outputJson(distributionStatePath, newState); + } + + public get folderIndex() { + const distributionState = this.getDistributionState(); + + return distributionState.folderIndex; + } + + public get distributionFolderPrefix() { + return ExtensionSpecificDistributionManager._currentDistributionFolderBaseName; + } + + private static readonly _currentDistributionFolderBaseName = "distribution"; + private static readonly _codeQlExtractedFolderName = "codeql"; + private static readonly _distributionStateFilename = "distribution.json"; +} + +/* + * Types and helper functions relating to those types. + */ + +export enum DistributionKind { + CustomPathConfig, + ExtensionManaged, + PathEnvironmentVariable, +} + +interface Distribution { + codeQlPath: string; + kind: DistributionKind; +} + +export enum FindDistributionResultKind { + CompatibleDistribution, + UnknownCompatibilityDistribution, + IncompatibleDistribution, + NoDistribution, +} + +export type FindDistributionResult = + | CompatibleDistributionResult + | UnknownCompatibilityDistributionResult + | IncompatibleDistributionResult + | NoDistributionResult; + +/** + * A result representing a distribution of the CodeQL CLI that may or may not be compatible with + * the extension. + */ +interface DistributionResult { + distribution: Distribution; + kind: FindDistributionResultKind; +} + +interface CompatibleDistributionResult extends DistributionResult { + kind: FindDistributionResultKind.CompatibleDistribution; + versionAndFeatures: VersionAndFeatures; +} + +interface UnknownCompatibilityDistributionResult extends DistributionResult { + kind: FindDistributionResultKind.UnknownCompatibilityDistribution; +} + +interface IncompatibleDistributionResult extends DistributionResult { + kind: FindDistributionResultKind.IncompatibleDistribution; + versionAndFeatures: VersionAndFeatures; +} + +interface NoDistributionResult { + kind: FindDistributionResultKind.NoDistribution; +} + +export enum DistributionUpdateCheckResultKind { + AlreadyCheckedRecentlyResult, + AlreadyUpToDate, + InvalidLocation, + UpdateAvailable, +} + +type DistributionUpdateCheckResult = + | AlreadyCheckedRecentlyResult + | AlreadyUpToDateResult + | InvalidLocationResult + | UpdateAvailableResult; + +interface AlreadyCheckedRecentlyResult { + kind: DistributionUpdateCheckResultKind.AlreadyCheckedRecentlyResult; +} + +interface AlreadyUpToDateResult { + kind: DistributionUpdateCheckResultKind.AlreadyUpToDate; +} + +/** + * The distribution could not be installed or updated because it is not managed by the extension. + */ +interface InvalidLocationResult { + kind: DistributionUpdateCheckResultKind.InvalidLocation; +} + +interface UpdateAvailableResult { + kind: DistributionUpdateCheckResultKind.UpdateAvailable; + updatedRelease: Release; +} + +function createAlreadyCheckedRecentlyResult(): AlreadyCheckedRecentlyResult { + return { + kind: DistributionUpdateCheckResultKind.AlreadyCheckedRecentlyResult, + }; +} + +function createAlreadyUpToDateResult(): AlreadyUpToDateResult { + return { + kind: DistributionUpdateCheckResultKind.AlreadyUpToDate, + }; +} + +function createInvalidLocationResult(): InvalidLocationResult { + return { + kind: DistributionUpdateCheckResultKind.InvalidLocation, + }; +} + +function createUpdateAvailableResult( + updatedRelease: Release, +): UpdateAvailableResult { + return { + kind: DistributionUpdateCheckResultKind.UpdateAvailable, + updatedRelease, + }; +} + +// Exported for testing +export async function getExecutableFromDirectory( + directory: string, + warnWhenNotFound = false, +): Promise { + const expectedLauncherPath = join(directory, codeQlLauncherName()); + const deprecatedLauncherName = deprecatedCodeQlLauncherName(); + const alternateExpectedLauncherPath = deprecatedLauncherName + ? join(directory, deprecatedLauncherName) + : undefined; + if (await pathExists(expectedLauncherPath)) { + return expectedLauncherPath; + } else if ( + alternateExpectedLauncherPath && + (await pathExists(alternateExpectedLauncherPath)) + ) { + warnDeprecatedLauncher(); + return alternateExpectedLauncherPath; + } + if (warnWhenNotFound) { + void extLogger.log( + `WARNING: Expected to find a CodeQL CLI executable at ${expectedLauncherPath} but one was not found. ` + + "Will try PATH.", + ); + } + return undefined; +} + +function warnDeprecatedLauncher() { + void showAndLogWarningMessage( + extLogger, + `The "${deprecatedCodeQlLauncherName()!}" launcher has been deprecated and will be removed in a future version. ` + + `Please use "${codeQlLauncherName()}" instead. It is recommended to update to the latest CodeQL binaries.`, + ); +} diff --git a/extensions/ql-vscode/src/codeql-cli/distribution/cleaner.ts b/extensions/ql-vscode/src/codeql-cli/distribution/cleaner.ts new file mode 100644 index 00000000000..0b236cf66bd --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/distribution/cleaner.ts @@ -0,0 +1,127 @@ +import type { ExtensionContext } from "vscode"; +import { getDirectoryNamesInsidePath, isIOError } from "../../common/files"; +import { sleep } from "../../common/time"; +import type { BaseLogger } from "../../common/logging"; +import { join } from "path"; +import { getErrorMessage } from "../../common/helpers-pure"; +import { pathExists, remove } from "fs-extra"; + +interface ExtensionManagedDistributionManager { + folderIndex: number; + distributionFolderPrefix: string; +} + +interface DistributionDirectory { + directoryName: string; + folderIndex: number; +} + +/** + * This class is responsible for cleaning up old distributions that are no longer needed. In normal operation, this + * should not be necessary as the old distribution is deleted when the distribution is updated. However, in some cases + * the extension may leave behind old distribution which can result in a significant amount of space (> 100 GB) being + * taking up by unused distributions. + */ +export class ExtensionManagedDistributionCleaner { + constructor( + private readonly extensionContext: ExtensionContext, + private readonly logger: BaseLogger, + private readonly manager: ExtensionManagedDistributionManager, + ) {} + + public start() { + // Intentionally starting this without waiting for it + void this.cleanup().catch((e: unknown) => { + void this.logger.log( + `Failed to clean up old versions of the CLI: ${getErrorMessage(e)}`, + ); + }); + } + + public async cleanup() { + if (!(await pathExists(this.extensionContext.globalStorageUri.fsPath))) { + return; + } + + const currentFolderIndex = this.manager.folderIndex; + + const distributionDirectoryRegex = new RegExp( + `^${this.manager.distributionFolderPrefix}(\\d+)$`, + ); + + const existingDirectories = await getDirectoryNamesInsidePath( + this.extensionContext.globalStorageUri.fsPath, + ); + const distributionDirectories = existingDirectories + .map((dir): DistributionDirectory | null => { + const match = dir.match(distributionDirectoryRegex); + if (!match) { + // When the folderIndex is 0, the distributionFolderPrefix is used as the directory name + if (dir === this.manager.distributionFolderPrefix) { + return { + directoryName: dir, + folderIndex: 0, + }; + } + + return null; + } + + return { + directoryName: dir, + folderIndex: parseInt(match[1]), + }; + }) + .filter((dir) => dir !== null); + + // Clean up all directories that are older than the current one + const cleanableDirectories = distributionDirectories.filter( + (dir) => dir.folderIndex < currentFolderIndex, + ); + + if (cleanableDirectories.length === 0) { + return; + } + + // Shuffle the array so that multiple VS Code processes don't all try to clean up the same directory at the same time + for (let i = cleanableDirectories.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [cleanableDirectories[i], cleanableDirectories[j]] = [ + cleanableDirectories[j], + cleanableDirectories[i], + ]; + } + + void this.logger.log( + `Cleaning up ${cleanableDirectories.length} old versions of the CLI.`, + ); + + for (const cleanableDirectory of cleanableDirectories) { + // Wait 10 seconds between each cleanup to avoid overloading the system (even though the remove call should be async) + await sleep(10_000); + + const path = join( + this.extensionContext.globalStorageUri.fsPath, + cleanableDirectory.directoryName, + ); + + // Delete this directory + try { + await remove(path); + } catch (e) { + if (isIOError(e) && e.code === "ENOENT") { + // If the directory doesn't exist, that's fine + continue; + } + + void this.logger.log( + `Tried to clean up an old version of the CLI at ${path} but encountered an error: ${getErrorMessage(e)}.`, + ); + } + } + + void this.logger.log( + `Cleaned up ${cleanableDirectories.length} old versions of the CLI.`, + ); + } +} diff --git a/extensions/ql-vscode/src/codeql-cli/distribution/github-api-error.ts b/extensions/ql-vscode/src/codeql-cli/distribution/github-api-error.ts new file mode 100644 index 00000000000..f5d8bb95c33 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/distribution/github-api-error.ts @@ -0,0 +1,18 @@ +export class GithubApiError extends Error { + constructor( + public status: number, + public body: string, + ) { + super(`API call failed with status code ${status}, body: ${body}`); + } +} + +export class GithubRateLimitedError extends GithubApiError { + constructor( + public status: number, + public body: string, + public rateLimitResetDate: Date, + ) { + super(status, body); + } +} diff --git a/extensions/ql-vscode/src/codeql-cli/distribution/release.ts b/extensions/ql-vscode/src/codeql-cli/distribution/release.ts new file mode 100644 index 00000000000..529cd42d327 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/distribution/release.ts @@ -0,0 +1,48 @@ +/** + * A release of the CodeQL CLI hosted on GitHub. + */ +export interface Release { + /** + * The assets associated with the release on GitHub. + */ + assets: ReleaseAsset[]; + + /** + * The creation date of the release on GitHub. + * + * This is the date that the release was uploaded to GitHub, and not the date + * when we downloaded it or the date when we fetched the data from the GitHub API. + */ + createdAt: string; + + /** + * The id associated with the release on GitHub. + */ + id: number; + + /** + * The name associated with the release on GitHub. + */ + name: string; +} + +/** + * An asset attached to a release on GitHub. + * Each release may have multiple assets, and each asset can be downloaded independently. + */ +export interface ReleaseAsset { + /** + * The id associated with the asset on GitHub. + */ + id: number; + + /** + * The name associated with the asset on GitHub. + */ + name: string; + + /** + * The size of the asset in bytes. + */ + size: number; +} diff --git a/extensions/ql-vscode/src/codeql-cli/distribution/releases-api-consumer.ts b/extensions/ql-vscode/src/codeql-cli/distribution/releases-api-consumer.ts new file mode 100644 index 00000000000..4b28af44423 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/distribution/releases-api-consumer.ts @@ -0,0 +1,210 @@ +import type { Range } from "semver"; +import { compare, parse, satisfies } from "semver"; +import { URL } from "url"; +import type { Release, ReleaseAsset } from "./release"; +import { GithubApiError, GithubRateLimitedError } from "./github-api-error"; + +/** + * Communicates with the GitHub API to determine the latest compatible release and download assets. + */ +export class ReleasesApiConsumer { + private static readonly apiBase = "https://api.github.com"; + private static readonly maxRedirects = 20; + + private readonly defaultHeaders: { [key: string]: string } = {}; + + constructor( + private readonly repositoryNwo: string, + personalAccessToken?: string, + ) { + // Specify version of the GitHub API + this.defaultHeaders["accept"] = "application/vnd.github.v3+json"; + + if (personalAccessToken) { + this.defaultHeaders["authorization"] = `token ${personalAccessToken}`; + } + } + + public async getLatestRelease( + versionRange: Range | undefined, + orderBySemver = true, + includePrerelease = false, + additionalCompatibilityCheck?: (release: GithubRelease) => boolean, + ): Promise { + const apiPath = `/repos/${this.repositoryNwo}/releases`; + const allReleases = (await ( + await this.makeApiCall(apiPath) + ).json()) as GithubRelease[]; + const compatibleReleases = allReleases.filter((release) => { + if (release.prerelease && !includePrerelease) { + return false; + } + + if (versionRange !== undefined) { + const version = parse(release.tag_name); + if ( + version === null || + !satisfies(version, versionRange, { includePrerelease }) + ) { + return false; + } + } + + return ( + !additionalCompatibilityCheck || additionalCompatibilityCheck(release) + ); + }); + // Tag names must all be parsable to semvers due to the previous filtering step. + const latestRelease = compatibleReleases.sort((a, b) => { + const versionComparison = orderBySemver + ? compare(parse(b.tag_name)!, parse(a.tag_name)!) + : b.id - a.id; + if (versionComparison !== 0) { + return versionComparison; + } + return b.created_at.localeCompare(a.created_at, "en-US"); + })[0]; + if (latestRelease === undefined) { + throw new Error( + "No compatible CodeQL CLI releases were found. " + + "Please check that the CodeQL extension is up to date.", + ); + } + const assets: ReleaseAsset[] = latestRelease.assets.map((asset) => { + return { + id: asset.id, + name: asset.name, + size: asset.size, + }; + }); + + return { + assets, + createdAt: latestRelease.created_at, + id: latestRelease.id, + name: latestRelease.name, + }; + } + + public async streamBinaryContentOfAsset( + asset: ReleaseAsset, + signal?: AbortSignal, + ): Promise { + const apiPath = `/repos/${this.repositoryNwo}/releases/assets/${asset.id}`; + + return await this.makeApiCall( + apiPath, + { + accept: "application/octet-stream", + }, + signal, + ); + } + + protected async makeApiCall( + apiPath: string, + additionalHeaders: { [key: string]: string } = {}, + signal?: AbortSignal, + ): Promise { + const response = await this.makeRawRequest( + ReleasesApiConsumer.apiBase + apiPath, + Object.assign({}, this.defaultHeaders, additionalHeaders), + signal, + ); + + if (!response.ok) { + // Check for rate limiting + const rateLimitResetValue = response.headers.get("X-RateLimit-Reset"); + if (response.status === 403 && rateLimitResetValue) { + const secondsToMillisecondsFactor = 1000; + const rateLimitResetDate = new Date( + parseInt(rateLimitResetValue, 10) * secondsToMillisecondsFactor, + ); + throw new GithubRateLimitedError( + response.status, + await response.text(), + rateLimitResetDate, + ); + } + throw new GithubApiError(response.status, await response.text()); + } + return response; + } + + private async makeRawRequest( + requestUrl: string, + headers: { [key: string]: string }, + signal?: AbortSignal, + redirectCount = 0, + ): Promise { + const response = await fetch(requestUrl, { + headers, + redirect: "manual", + signal, + }); + + const redirectUrl = response.headers.get("location"); + if ( + isRedirectStatusCode(response.status) && + redirectUrl && + redirectCount < ReleasesApiConsumer.maxRedirects + ) { + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedRedirectUrl.protocol !== "https:") { + throw new Error("Encountered a non-https redirect, rejecting"); + } + if (parsedRedirectUrl.host !== "api.github.com") { + // Remove authorization header if we are redirected outside of the GitHub API. + // + // This is necessary to stream release assets since AWS fails if more than one auth + // mechanism is provided. + delete headers["authorization"]; + } + return await this.makeRawRequest( + redirectUrl, + headers, + signal, + redirectCount + 1, + ); + } + + return response; + } +} + +function isRedirectStatusCode(statusCode: number): boolean { + return ( + statusCode === 301 || + statusCode === 302 || + statusCode === 303 || + statusCode === 307 || + statusCode === 308 + ); +} + +/** + * The json returned from github for a release. + * See https://docs.github.com/en/rest/releases/releases#get-a-release for example response and response schema. + * + * This type must match the format of the GitHub API and is not intended to be used outside of this file except for tests. Please use the `Release` type instead. + */ +export interface GithubRelease { + assets: GithubReleaseAsset[]; + created_at: string; + id: number; + name: string; + prerelease: boolean; + tag_name: string; +} + +/** + * The json returned by github for an asset in a release. + * See https://docs.github.com/en/rest/releases/releases#get-a-release for example response and response schema. + * + * This type must match the format of the GitHub API and is not intended to be used outside of this file except for tests. Please use the `ReleaseAsset` type instead. + */ +interface GithubReleaseAsset { + id: number; + name: string; + size: number; +} diff --git a/extensions/ql-vscode/src/codeql-cli/lock.ts b/extensions/ql-vscode/src/codeql-cli/lock.ts new file mode 100644 index 00000000000..8dfc84d98d9 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/lock.ts @@ -0,0 +1,22 @@ +import { lock } from "proper-lockfile"; + +export async function withDistributionUpdateLock( + lockFile: string, + f: () => Promise, +) { + const release = await lock(lockFile, { + stale: 60_000, // 1 minute. We can take the lock longer than this because that's based on the update interval. + update: 10_000, // 10 seconds + retries: { + minTimeout: 10_000, + maxTimeout: 60_000, + retries: 100, + }, + }); + + try { + await f(); + } finally { + await release(); + } +} diff --git a/extensions/ql-vscode/src/codeql-cli/query-language.ts b/extensions/ql-vscode/src/codeql-cli/query-language.ts new file mode 100644 index 00000000000..1fe27474092 --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/query-language.ts @@ -0,0 +1,100 @@ +import type { CodeQLCliServer } from "./cli"; +import type { CancellationToken, Uri } from "vscode"; +import { window } from "vscode"; +import { + getLanguageDisplayName, + isQueryLanguage, + QueryLanguage, +} from "../common/query-language"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { extLogger } from "../common/logging/vscode"; +import { UserCancellationException } from "../common/vscode/progress"; +import { showAndLogErrorMessage } from "../common/logging"; + +/** + * Finds the language that a query targets. + * If it can't be autodetected, prompt the user to specify the language manually. + */ +export async function findLanguage( + cliServer: CodeQLCliServer, + queryUri: Uri | undefined, +): Promise { + const uri = queryUri ?? window.activeTextEditor?.document.uri; + if (uri !== undefined) { + try { + const queryInfo = await cliServer.resolveQueryByLanguage( + getOnDiskWorkspaceFolders(), + uri, + ); + const language = Object.keys(queryInfo.byLanguage)[0]; + void extLogger.log(`Detected query language: ${language}`); + + if (isQueryLanguage(language)) { + return language; + } + + void extLogger.log( + "Query language is unsupported. Select language manually.", + ); + } catch { + void extLogger.log( + "Could not autodetect query language. Select language manually.", + ); + } + } + + // will be undefined if user cancels the quick pick. + return await askForLanguage(cliServer, false); +} + +export async function askForLanguage( + cliServer: CodeQLCliServer, + throwOnEmpty = true, + token?: CancellationToken, +): Promise { + const supportedLanguages = await cliServer.getSupportedLanguages(); + + const items = supportedLanguages + .filter((language) => isQueryLanguage(language)) + .map((language) => ({ + label: getLanguageDisplayName(language), + description: language, + language, + })) + .sort((a, b) => a.label.localeCompare(b.label)); + + const selectedItem = await window.showQuickPick( + items, + { + placeHolder: "Select target query language", + ignoreFocusOut: true, + }, + token, + ); + if (!selectedItem) { + // This only happens if the user cancels the quick pick. + if (throwOnEmpty) { + throw new UserCancellationException("Cancelled."); + } else { + void showAndLogErrorMessage( + extLogger, + "Language not found. Language must be specified manually.", + ); + } + return undefined; + } + + const language = selectedItem.language; + + if (!isQueryLanguage(language)) { + void showAndLogErrorMessage( + extLogger, + `Language '${language as string}' is not supported. Only languages ${Object.values( + QueryLanguage, + ).join(", ")} are supported.`, + ); + return undefined; + } + + return language; +} diff --git a/extensions/ql-vscode/src/codeql-cli/query-metadata.ts b/extensions/ql-vscode/src/codeql-cli/query-metadata.ts new file mode 100644 index 00000000000..88fe52d49ba --- /dev/null +++ b/extensions/ql-vscode/src/codeql-cli/query-metadata.ts @@ -0,0 +1,25 @@ +import type { CodeQLCliServer } from "./cli"; +import type { QueryMetadata } from "../common/interface-types"; +import { extLogger } from "../common/logging/vscode"; +import { getErrorMessage } from "../common/helpers-pure"; + +/** + * Gets metadata for a query, if it exists. + * @param cliServer The CLI server. + * @param queryPath The path to the query. + * @returns A promise that resolves to the query metadata, if available. + */ +export async function tryGetQueryMetadata( + cliServer: CodeQLCliServer, + queryPath: string, +): Promise { + try { + return await cliServer.resolveMetadata(queryPath); + } catch (e) { + // Ignore errors and provide no metadata. + void extLogger.log( + `Couldn't resolve metadata for ${queryPath}: ${getErrorMessage(e)}`, + ); + return; + } +} diff --git a/extensions/ql-vscode/src/commandRunner.ts b/extensions/ql-vscode/src/commandRunner.ts deleted file mode 100644 index 7a367788492..00000000000 --- a/extensions/ql-vscode/src/commandRunner.ts +++ /dev/null @@ -1,246 +0,0 @@ -import { - CancellationToken, - ProgressOptions, - window as Window, - commands, - Disposable, - ProgressLocation -} from 'vscode'; -import { showAndLogErrorMessage, showAndLogWarningMessage } from './helpers'; -import { logger } from './logging'; -import { getErrorMessage, getErrorStack } from './pure/helpers-pure'; -import { telemetryListener } from './telemetry'; - -export class UserCancellationException extends Error { - /** - * @param message The error message - * @param silent If silent is true, then this exception will avoid showing a warning message to the user. - */ - constructor(message?: string, public readonly silent = false) { - super(message); - } -} - -export interface ProgressUpdate { - /** - * The current step - */ - step: number; - /** - * The maximum step. This *should* be constant for a single job. - */ - maxStep: number; - /** - * The current progress message - */ - message: string; -} - -export type ProgressCallback = (p: ProgressUpdate) => void; - -/** - * A task that handles command invocations from `commandRunner` - * and includes a progress monitor. - * - * - * Arguments passed to the command handler are passed along, - * untouched to this `ProgressTask` instance. - * - * @param progress a progress handler function. Call this - * function with a `ProgressUpdate` instance in order to - * denote some progress being achieved on this task. - * @param token a cencellation token - * @param args arguments passed to this task passed on from - * `commands.registerCommand`. - */ -export type ProgressTask = ( - progress: ProgressCallback, - token: CancellationToken, - ...args: any[] -) => Thenable; - -/** - * A task that handles command invocations from `commandRunner`. - * Arguments passed to the command handler are passed along, - * untouched to this `NoProgressTask` instance. - * - * @param args arguments passed to this task passed on from - * `commands.registerCommand`. - */ -type NoProgressTask = ((...args: any[]) => Promise); - -/** - * This mediates between the kind of progress callbacks we want to - * write (where we *set* current progress position and give - * `maxSteps`) and the kind vscode progress api expects us to write - * (which increment progress by a certain amount out of 100%). - * - * Where possible, the `commandRunner` function below should be used - * instead of this function. The commandRunner is meant for wrapping - * top-level commands and provides error handling and other support - * automatically. - * - * Only use this function if you need a progress monitor and the - * control flow does not always come from a command (eg- during - * extension activation, or from an internal language server - * request). - */ -export function withProgress( - options: ProgressOptions, - task: ProgressTask, - ...args: any[] -): Thenable { - let progressAchieved = 0; - return Window.withProgress(options, - (progress, token) => { - return task(p => { - const { message, step, maxStep } = p; - const increment = 100 * (step - progressAchieved) / maxStep; - progressAchieved = step; - progress.report({ message, increment }); - }, token, ...args); - }); -} - -/** - * A generic wrapper for command registration. This wrapper adds uniform error handling for commands. - * - * In this variant of the command runner, no progress monitor is used. - * - * @param commandId The ID of the command to register. - * @param task The task to run. It is passed directly to `commands.registerCommand`. Any - * arguments to the command handler are passed on to the task. - */ -export function commandRunner( - commandId: string, - task: NoProgressTask, -): Disposable { - return commands.registerCommand(commandId, async (...args: any[]) => { - const startTime = Date.now(); - let error: Error | undefined; - - try { - return await task(...args); - } catch (e) { - const errorMessage = `${getErrorMessage(e) || e} (${commandId})`; - error = e instanceof Error ? e : new Error(errorMessage); - const errorStack = getErrorStack(e); - if (e instanceof UserCancellationException) { - // User has cancelled this action manually - if (e.silent) { - void logger.log(errorMessage); - } else { - void showAndLogWarningMessage(errorMessage); - } - } else { - // Include the full stack in the error log only. - const fullMessage = errorStack - ? `${errorMessage}\n${errorStack}` - : errorMessage; - void showAndLogErrorMessage(errorMessage, { - fullMessage - }); - } - return undefined; - } finally { - const executionTime = Date.now() - startTime; - telemetryListener.sendCommandUsage(commandId, executionTime, error); - } - }); -} - -/** - * A generic wrapper for command registration. This wrapper adds uniform error handling, - * progress monitoring, and cancellation for commands. - * - * @param commandId The ID of the command to register. - * @param task The task to run. It is passed directly to `commands.registerCommand`. Any - * arguments to the command handler are passed on to the task after the progress callback - * and cancellation token. - * @param progressOptions Progress options to be sent to the progress monitor. - */ -export function commandRunnerWithProgress( - commandId: string, - task: ProgressTask, - progressOptions: Partial, - outputLogger = logger -): Disposable { - return commands.registerCommand(commandId, async (...args: any[]) => { - const startTime = Date.now(); - let error: Error | undefined; - const progressOptionsWithDefaults = { - location: ProgressLocation.Notification, - ...progressOptions - }; - try { - return await withProgress(progressOptionsWithDefaults, task, ...args); - } catch (e) { - const errorMessage = `${getErrorMessage(e) || e} (${commandId})`; - error = e instanceof Error ? e : new Error(errorMessage); - const errorStack = getErrorStack(e); - if (e instanceof UserCancellationException) { - // User has cancelled this action manually - if (e.silent) { - void outputLogger.log(errorMessage); - } else { - void showAndLogWarningMessage(errorMessage, { outputLogger }); - } - } else { - // Include the full stack in the error log only. - const fullMessage = errorStack - ? `${errorMessage}\n${errorStack}` - : errorMessage; - void showAndLogErrorMessage(errorMessage, { - outputLogger, - fullMessage - }); - } - return undefined; - } finally { - const executionTime = Date.now() - startTime; - telemetryListener.sendCommandUsage(commandId, executionTime, error); - } - }); -} - -/** - * Displays a progress monitor that indicates how much progess has been made - * reading from a stream. - * - * @param readable The stream to read progress from - * @param messagePrefix A prefix for displaying the message - * @param totalNumBytes Total number of bytes in this stream - * @param progress The progress callback used to set messages - */ -export function reportStreamProgress( - readable: NodeJS.ReadableStream, - messagePrefix: string, - totalNumBytes?: number, - progress?: ProgressCallback -) { - if (progress && totalNumBytes) { - let numBytesDownloaded = 0; - const bytesToDisplayMB = (numBytes: number): string => `${(numBytes / (1024 * 1024)).toFixed(1)} MB`; - const updateProgress = () => { - progress({ - step: numBytesDownloaded, - maxStep: totalNumBytes, - message: `${messagePrefix} [${bytesToDisplayMB(numBytesDownloaded)} of ${bytesToDisplayMB(totalNumBytes)}]`, - }); - }; - - // Display the progress straight away rather than waiting for the first chunk. - updateProgress(); - - readable.on('data', data => { - numBytesDownloaded += data.length; - updateProgress(); - }); - } else if (progress) { - progress({ - step: 1, - maxStep: 2, - message: `${messagePrefix} (Size unknown)`, - }); - } -} diff --git a/extensions/ql-vscode/src/common/app.ts b/extensions/ql-vscode/src/common/app.ts new file mode 100644 index 00000000000..510e4ed2bba --- /dev/null +++ b/extensions/ql-vscode/src/common/app.ts @@ -0,0 +1,32 @@ +import type { Credentials } from "./authentication"; +import type { Disposable } from "./disposable-object"; +import type { AppEventEmitter } from "./events"; +import type { NotificationLogger } from "./logging"; +import type { Memento } from "./memento"; +import type { AppCommandManager } from "./commands"; +import type { AppTelemetry } from "./telemetry"; + +export interface App { + createEventEmitter(): AppEventEmitter; + readonly mode: AppMode; + readonly logger: NotificationLogger; + readonly telemetry?: AppTelemetry; + readonly subscriptions: Disposable[]; + readonly extensionPath: string; + readonly globalStoragePath: string; + readonly workspaceStoragePath?: string; + readonly workspaceState: Memento; + readonly credentials: Credentials; + readonly commands: AppCommandManager; + readonly environment: EnvironmentContext; +} + +export enum AppMode { + Production = 1, + Development = 2, + Test = 3, +} + +export interface EnvironmentContext { + language: string; +} diff --git a/extensions/ql-vscode/src/common/authentication.ts b/extensions/ql-vscode/src/common/authentication.ts new file mode 100644 index 00000000000..3cdc36d678a --- /dev/null +++ b/extensions/ql-vscode/src/common/authentication.ts @@ -0,0 +1,39 @@ +import type { Octokit } from "@octokit/rest"; + +/** + * An interface providing methods for obtaining access tokens + * or an octokit instance for making HTTP requests. + */ +export interface Credentials { + /** + * Returns an authenticated instance of Octokit. + * May prompt the user to log in and grant permission to use their + * token, if they have not already done so. + * + * @returns An instance of Octokit. + */ + getOctokit(): Promise; + + /** + * Returns an OAuth access token. + * May prompt the user to log in and grant permission to use their + * token, if they have not already done so. + * + * @returns An OAuth access token. + */ + getAccessToken(): Promise; + + /** + * Returns an OAuth access token if one is available. + * If a token is not available this will return undefined and + * will not prompt the user to log in. + * + * @returns An OAuth access token, or undefined. + */ + getExistingAccessToken(): Promise; + + /** + * Returns the ID of the authentication provider to use. + */ + authProviderId: string; +} diff --git a/extensions/ql-vscode/src/common/bqrs-cli-types.ts b/extensions/ql-vscode/src/common/bqrs-cli-types.ts new file mode 100644 index 00000000000..e9e726957e3 --- /dev/null +++ b/extensions/ql-vscode/src/common/bqrs-cli-types.ts @@ -0,0 +1,98 @@ +/** + * The single-character codes used in the bqrs format for the the kind + * of a result column. This namespace is intentionally not an enum, see + * the "for the sake of extensibility" comment in messages.ts. + */ +// eslint-disable-next-line @typescript-eslint/no-namespace +export namespace BqrsColumnKindCode { + export const FLOAT = "f"; + export const INTEGER = "i"; + export const STRING = "s"; + export const BOOLEAN = "b"; + export const DATE = "d"; + export const ENTITY = "e"; + export const BIGINT = "z"; +} + +export type BqrsColumnKind = + | typeof BqrsColumnKindCode.FLOAT + | typeof BqrsColumnKindCode.INTEGER + | typeof BqrsColumnKindCode.STRING + | typeof BqrsColumnKindCode.BOOLEAN + | typeof BqrsColumnKindCode.DATE + | typeof BqrsColumnKindCode.ENTITY + | typeof BqrsColumnKindCode.BIGINT; + +export interface BqrsSchemaColumn { + name?: string; + kind: BqrsColumnKind; +} + +export interface BqrsResultSetSchema { + name: string; + rows: number; + columns: BqrsSchemaColumn[]; + pagination?: BqrsPaginationInfo; +} + +interface BqrsPaginationInfo { + "step-size": number; + offsets: number[]; +} + +export interface BqrsInfo { + "result-sets": BqrsResultSetSchema[]; +} + +export type BqrsId = number; + +export interface BqrsEntityValue { + url?: BqrsUrlValue; + label?: string; + id?: BqrsId; +} + +export interface BqrsLineColumnLocation { + uri: string; + startLine: number; + startColumn: number; + endLine: number; + endColumn: number; +} + +export interface BqrsWholeFileLocation { + uri: string; + startLine: never; + startColumn: never; + endLine: never; + endColumn: never; +} + +export type BqrsUrlValue = + | BqrsWholeFileLocation + | BqrsLineColumnLocation + | string; + +export type BqrsCellValue = BqrsEntityValue | number | string | boolean; + +export type BqrsKind = + | "String" + | "Float" + | "Integer" + | "Boolean" + | "Date" + | "Entity" + | "BigInt"; + +interface BqrsColumn { + name?: string; + kind: BqrsKind; +} + +export interface DecodedBqrsChunk { + tuples: BqrsCellValue[][]; + next?: number; + columns: BqrsColumn[]; +} + +export type DecodedBqrs = Record; diff --git a/extensions/ql-vscode/src/common/bqrs-raw-results-mapper.ts b/extensions/ql-vscode/src/common/bqrs-raw-results-mapper.ts new file mode 100644 index 00000000000..ec6a7bf5ee4 --- /dev/null +++ b/extensions/ql-vscode/src/common/bqrs-raw-results-mapper.ts @@ -0,0 +1,211 @@ +import type { + BqrsCellValue as BqrsCellValue, + BqrsColumnKind as BqrsColumnKind, + DecodedBqrsChunk, + BqrsEntityValue as BqrsEntityValue, + BqrsLineColumnLocation, + BqrsResultSetSchema, + BqrsUrlValue as BqrsUrlValue, + BqrsWholeFileLocation, + BqrsSchemaColumn, +} from "./bqrs-cli-types"; +import { BqrsColumnKindCode } from "./bqrs-cli-types"; +import type { + CellValue, + Column, + EntityValue, + RawResultSet, + Row, + UrlValue, + UrlValueResolvable, +} from "./raw-result-types"; +import { ColumnKind } from "./raw-result-types"; +import { assertNever } from "./helpers-pure"; +import { isEmptyPath } from "./bqrs-utils"; + +export function bqrsToResultSet( + schema: BqrsResultSetSchema, + chunk: DecodedBqrsChunk, +): RawResultSet { + const resultSet: RawResultSet = { + name: schema.name, + totalRowCount: schema.rows, + columns: schema.columns.map(mapColumn), + rows: chunk.tuples.map( + (tuple): Row => tuple.map((cell): CellValue => mapCellValue(cell)), + ), + }; + + if (chunk.next) { + resultSet.nextPageOffset = chunk.next; + } + + return resultSet; +} + +function mapColumn(column: BqrsSchemaColumn): Column { + const result: Column = { + kind: mapColumnKind(column.kind), + }; + + if (column.name) { + result.name = column.name; + } + + return result; +} + +function mapColumnKind(kind: BqrsColumnKind): ColumnKind { + switch (kind) { + case BqrsColumnKindCode.STRING: + return ColumnKind.String; + case BqrsColumnKindCode.FLOAT: + return ColumnKind.Float; + case BqrsColumnKindCode.INTEGER: + return ColumnKind.Integer; + case BqrsColumnKindCode.BOOLEAN: + return ColumnKind.Boolean; + case BqrsColumnKindCode.DATE: + return ColumnKind.Date; + case BqrsColumnKindCode.ENTITY: + return ColumnKind.Entity; + case BqrsColumnKindCode.BIGINT: + return ColumnKind.BigInt; + default: + assertNever(kind); + } +} + +function mapCellValue(cellValue: BqrsCellValue): CellValue { + switch (typeof cellValue) { + case "string": + return { + type: "string", + value: cellValue, + }; + case "number": + return { + type: "number", + value: cellValue, + }; + case "boolean": + return { + type: "boolean", + value: cellValue, + }; + case "object": + return { + type: "entity", + value: mapEntityValue(cellValue), + }; + } +} + +function mapEntityValue(cellValue: BqrsEntityValue): EntityValue { + const result: EntityValue = {}; + + if (cellValue.id) { + result.id = cellValue.id; + } + if (cellValue.label) { + result.label = cellValue.label; + } + if (cellValue.url) { + result.url = mapUrlValue(cellValue.url); + } + + return result; +} + +export function mapUrlValue(urlValue: BqrsUrlValue): UrlValue | undefined { + if (typeof urlValue === "string") { + const location = tryGetLocationFromString(urlValue); + if (location !== undefined) { + return location; + } + + return { + type: "string", + value: urlValue, + }; + } + + if (isWholeFileLoc(urlValue)) { + return { + type: "wholeFileLocation", + uri: urlValue.uri, + }; + } + + if (isLineColumnLoc(urlValue)) { + return { + type: "lineColumnLocation", + uri: urlValue.uri, + startLine: urlValue.startLine, + startColumn: urlValue.startColumn, + endLine: urlValue.endLine, + endColumn: urlValue.endColumn, + }; + } + + return undefined; +} + +function isLineColumnLoc(loc: BqrsUrlValue): loc is BqrsLineColumnLocation { + return ( + typeof loc !== "string" && + !isEmptyPath(loc.uri) && + "startLine" in loc && + "startColumn" in loc && + "endLine" in loc && + "endColumn" in loc + ); +} + +function isWholeFileLoc(loc: BqrsUrlValue): loc is BqrsWholeFileLocation { + return ( + typeof loc !== "string" && !isEmptyPath(loc.uri) && !isLineColumnLoc(loc) + ); +} + +/** + * The CodeQL filesystem libraries use this pattern in `getURL()` predicates + * to describe the location of an entire filesystem resource. + * Such locations appear as `StringLocation`s instead of `FivePartLocation`s. + * + * Folder resources also get similar URLs, but with the `folder` scheme. + * They are deliberately ignored here, since there is no suitable location to show the user. + */ +const FILE_LOCATION_REGEX = /file:\/\/(.+):([0-9]+):([0-9]+):([0-9]+):([0-9]+)/; + +function tryGetLocationFromString(loc: string): UrlValueResolvable | undefined { + const matches = FILE_LOCATION_REGEX.exec(loc); + if (matches && matches.length > 1 && matches[1]) { + if (isWholeFileMatch(matches)) { + return { + type: "wholeFileLocation", + uri: matches[1], + }; + } else { + return { + type: "lineColumnLocation", + uri: matches[1], + startLine: Number(matches[2]), + startColumn: Number(matches[3]), + endLine: Number(matches[4]), + endColumn: Number(matches[5]), + }; + } + } + + return undefined; +} + +function isWholeFileMatch(matches: RegExpExecArray): boolean { + return ( + matches[2] === "0" && + matches[3] === "0" && + matches[4] === "0" && + matches[5] === "0" + ); +} diff --git a/extensions/ql-vscode/src/common/bqrs-utils.ts b/extensions/ql-vscode/src/common/bqrs-utils.ts new file mode 100644 index 00000000000..1c0ec8e2834 --- /dev/null +++ b/extensions/ql-vscode/src/common/bqrs-utils.ts @@ -0,0 +1,60 @@ +import { createRemoteFileRef } from "../common/location-link-utils"; +import type { UrlValue } from "./raw-result-types"; +import { isUrlValueResolvable } from "./raw-result-types"; + +/** + * Checks whether the file path is empty. If so, we do not want to render this location + * as a link. + */ +export function isEmptyPath(uriStr: string) { + return !uriStr || uriStr === "file:/"; +} + +export function tryGetRemoteLocation( + loc: UrlValue | undefined, + fileLinkPrefix: string, + sourceLocationPrefix: string | undefined, +): string | undefined { + if (!loc || !isUrlValueResolvable(loc)) { + return undefined; + } + + let trimmedLocation: string; + + // Remote locations have the following format: + // "file:${sourceLocationPrefix}/relative/path/to/file" + // So we need to strip off the first part to get the relative path. + if (sourceLocationPrefix) { + if (!loc.uri.startsWith(`file:${sourceLocationPrefix}/`)) { + return undefined; + } + trimmedLocation = loc.uri.replace(`file:${sourceLocationPrefix}/`, ""); + } else { + // If the source location prefix is empty (e.g. for older remote queries), we assume that the database + // was created on a Linux actions runner and has the format: + // "file:/home/runner/work///relative/path/to/file" + // So we need to drop the first 6 parts of the path. + if (!loc.uri.startsWith("file:/home/runner/work/")) { + return undefined; + } + const locationParts = loc.uri.split("/"); + trimmedLocation = locationParts.slice(6, locationParts.length).join("/"); + } + + const fileLink = { + fileLinkPrefix, + filePath: trimmedLocation, + }; + + if (loc.type === "wholeFileLocation") { + return createRemoteFileRef(fileLink); + } + + return createRemoteFileRef( + fileLink, + loc.startLine, + loc.endLine, + loc.startColumn, + loc.endColumn, + ); +} diff --git a/extensions/ql-vscode/src/common/bytes.ts b/extensions/ql-vscode/src/common/bytes.ts new file mode 100644 index 00000000000..2dec138543b --- /dev/null +++ b/extensions/ql-vscode/src/common/bytes.ts @@ -0,0 +1,3 @@ +export function readableBytesMb(numBytes: number): string { + return `${(numBytes / (1024 * 1024)).toFixed(1)} MB`; +} diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts new file mode 100644 index 00000000000..f4126194aa2 --- /dev/null +++ b/extensions/ql-vscode/src/common/commands.ts @@ -0,0 +1,395 @@ +import type { CommandManager } from "../packages/commands"; +import type { Uri, Range, TextDocumentShowOptions, TestItem } from "vscode"; +import type { AstItem } from "../language-support"; +import type { DbTreeViewItem } from "../databases/ui/db-tree-view-item"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { QueryHistoryInfo } from "../query-history/query-history-info"; +import type { + VariantAnalysis, + VariantAnalysisScannedRepository, + VariantAnalysisScannedRepositoryResult, +} from "../variant-analysis/shared/variant-analysis"; +import type { QLDebugConfiguration } from "../debugger/debug-configuration"; +import type { QueryTreeViewItem } from "../queries-panel/query-tree-view-item"; +import type { LanguageSelectionTreeViewItem } from "../language-selection-panel/language-selection-data-provider"; +import type { Method, Usage } from "../model-editor/method"; + +// A command function matching the signature that VS Code calls when +// a command is invoked from a context menu on a TreeView with +// canSelectMany set to true. +// +// singleItem will always be defined and corresponds to the item that +// was hovered or right-clicked. If precisely one item was selected then +// multiSelect will be undefined. If more than one item is selected then +// multiSelect will contain all selected items, including singleItem. +export type TreeViewContextMultiSelectionCommandFunction = ( + singleItem: Item, + multiSelect: Item[] | undefined, +) => Promise; + +// A command function matching the signature that VS Code calls when +// a command is invoked from a context menu on a TreeView with +// canSelectMany set to false. +// +// It is guaranteed that precisely one item will be selected. +export type TreeViewContextSingleSelectionCommandFunction = ( + singleItem: Item, +) => Promise; + +// A command function matching the signature that VS Code calls when +// a command is invoked from a context menu on the file explorer. +// +// singleItem corresponds to the item that was right-clicked. +// multiSelect will always been defined and non-empty and contains +// all selected items, including singleItem. +export type ExplorerSelectionCommandFunction = ( + singleItem: Item, + multiSelect: Item[], +) => Promise; + +/** + * Contains type definitions for all commands used by the extension. + * + * To add a new command first define its type here, then provide + * the implementation in the corresponding `getCommands` function. + */ + +// Builtin commands where the implementation is provided by VS Code and not by this extension. +// See https://code.visualstudio.com/api/references/commands +type BuiltInVsCodeCommands = { + // The codeQLDatabases.focus command is provided by VS Code because we've registered the custom view + "codeQLDatabases.focus": () => Promise; + "markdown.showPreviewToSide": (uri: Uri) => Promise; + "workbench.action.closeActiveEditor": () => Promise; + revealFileInOS: (uri: Uri) => Promise; + setContext: ( + key: `${"codeql" | "codeQL"}${string}`, + value: unknown, + ) => Promise; + "workbench.action.reloadWindow": () => Promise; + "vscode.diff": ( + leftSideResource: Uri, + rightSideResource: Uri, + title?: string, + columnOrOptions?: TextDocumentShowOptions, + ) => Promise; + "vscode.open": (uri: Uri) => Promise; + "vscode.openFolder": (uri: Uri) => Promise; + revealInExplorer: (uri: Uri) => Promise; + // We type the `config` property specifically as a CodeQL debug configuration, since that's the + // only kinds we specify anyway. + "workbench.action.debug.start": (options?: { + config?: Partial; + noDebug?: boolean; + }) => Promise; + "workbench.action.debug.stepInto": () => Promise; + "workbench.action.debug.stepOver": () => Promise; + "workbench.action.debug.stepOut": () => Promise; +}; + +// Commands that are available before the extension is fully activated. +// These commands are *not* registered using the command manager, but can +// be invoked using the command manager. +export type PreActivationCommands = { + "codeQL.checkForUpdatesToCLI": () => Promise; +}; + +// Base commands not tied directly to a module like e.g. variant analysis. +export type BaseCommands = { + "codeQL.openDocumentation": () => Promise; + "codeQL.showLogs": () => Promise; + "codeQL.authenticateToGitHub": () => Promise; + + "codeQL.copyVersion": () => Promise; + "codeQL.restartQueryServer": () => Promise; + "codeQL.restartQueryServerOnConfigChange": () => Promise; + "codeQL.restartLegacyQueryServerOnConfigChange": () => Promise; + "codeQL.restartQueryServerOnExternalConfigChange": () => Promise; +}; + +// Commands used when working with queries in the editor +export type QueryEditorCommands = { + "codeQL.openReferencedFile": (selectedQuery: Uri) => Promise; + "codeQL.openReferencedFileContextEditor": ( + selectedQuery: Uri, + ) => Promise; + "codeQL.openReferencedFileContextExplorer": ( + selectedQuery: Uri, + ) => Promise; + "codeQL.previewQueryHelp": (selectedQuery: Uri) => Promise; + "codeQL.previewQueryHelpContextEditor": (selectedQuery: Uri) => Promise; + "codeQL.previewQueryHelpContextExplorer": ( + selectedQuery: Uri, + ) => Promise; +}; + +// Commands used for running local queries +export type LocalQueryCommands = { + "codeQL.runQuery": (uri?: Uri) => Promise; + "codeQL.runWarmOverlayBaseCacheForQuery": (uri?: Uri) => Promise; + "codeQL.runQueryContextEditor": (uri?: Uri) => Promise; + "codeQL.runWarmOverlayBaseCacheForQueryContextEditor": ( + uri?: Uri, + ) => Promise; + "codeQL.runQueryOnMultipleDatabases": (uri?: Uri) => Promise; + "codeQL.runQueryOnMultipleDatabasesContextEditor": ( + uri?: Uri, + ) => Promise; + "codeQLQueries.runLocalQueryFromQueriesPanel": TreeViewContextSingleSelectionCommandFunction; + "codeQLQueries.runLocalQueryContextMenu": TreeViewContextSingleSelectionCommandFunction; + "codeQLQueries.runLocalQueriesContextMenu": TreeViewContextSingleSelectionCommandFunction; + "codeQLQueries.runLocalQueriesFromPanel": TreeViewContextSingleSelectionCommandFunction; + "codeQLQueries.createQuery": () => Promise; + "codeQL.runLocalQueryFromFileTab": (uri: Uri) => Promise; + "codeQL.runQueries": ExplorerSelectionCommandFunction; + "codeQL.runWarmOverlayBaseCacheForQueries": ExplorerSelectionCommandFunction; + "codeQL.runQuerySuite": ExplorerSelectionCommandFunction; + "codeQL.runWarmOverlayBaseCacheForQuerySuite": ExplorerSelectionCommandFunction; + "codeQL.quickEval": (uri: Uri) => Promise; + "codeQL.quickEvalCount": (uri: Uri) => Promise; + "codeQL.quickEvalContextEditor": (uri: Uri) => Promise; + "codeQL.codeLensQuickEval": (uri: Uri, range: Range) => Promise; + "codeQL.quickQuery": () => Promise; + "codeQL.getCurrentQuery": () => Promise; + "codeQL.createQuery": () => Promise; + "codeQLQuickQuery.createQuery": () => Promise; +}; + +// Debugger commands +export type DebuggerCommands = { + "codeQL.debugQuery": (uri: Uri | undefined) => Promise; + "codeQL.debugQueryContextEditor": (uri: Uri) => Promise; + "codeQL.startDebuggingSelection": () => Promise; + "codeQL.startDebuggingSelectionContextEditor": () => Promise; + "codeQL.continueDebuggingSelection": () => Promise; + "codeQL.continueDebuggingSelectionContextEditor": () => Promise; +}; + +export type ResultsViewCommands = { + "codeQLQueryResults.up": () => Promise; + "codeQLQueryResults.down": () => Promise; + "codeQLQueryResults.left": () => Promise; + "codeQLQueryResults.right": () => Promise; + "codeQLQueryResults.nextPathStep": () => Promise; + "codeQLQueryResults.previousPathStep": () => Promise; +}; + +// Commands used for the query history panel +export type QueryHistoryCommands = { + // Commands in the "navigation" group + "codeQLQueryHistory.sortByName": () => Promise; + "codeQLQueryHistory.sortByDate": () => Promise; + "codeQLQueryHistory.sortByCount": () => Promise; + + // Commands in the context menu or in the hover menu + "codeQLQueryHistory.openQueryContextMenu": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.removeHistoryItemContextMenu": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.removeHistoryItemContextInline": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.renameItem": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.compareWith": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.comparePerformanceWith": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.showEvalLog": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.showEvalLogSummary": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.showEvalLogViewer": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.showQueryLog": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.showQueryText": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.openQueryDirectory": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.cancel": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.exportResults": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.viewCsvResults": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.viewCsvAlerts": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.viewSarifAlerts": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.viewDil": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.itemClicked": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.openOnGithub": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.copyRepoList": TreeViewContextMultiSelectionCommandFunction; + "codeQLQueryHistory.viewAutofixes": TreeViewContextMultiSelectionCommandFunction; + + // Commands in the command palette + "codeQL.exportSelectedVariantAnalysisResults": () => Promise; +}; + +// Commands user for the language selector panel +export type LanguageSelectionCommands = { + "codeQLLanguageSelection.setSelectedItem": ( + item: LanguageSelectionTreeViewItem, + ) => Promise; +}; + +// Commands used for the local databases panel +export type LocalDatabasesCommands = { + // Command palette commands + "codeQL.chooseDatabaseFolder": () => Promise; + "codeQL.chooseDatabaseFoldersParent": () => Promise; + "codeQL.chooseDatabaseArchive": () => Promise; + "codeQL.chooseDatabaseInternet": () => Promise; + "codeQL.chooseDatabaseGithub": () => Promise; + "codeQL.upgradeCurrentDatabase": () => Promise; + "codeQL.clearCache": () => Promise; + "codeQL.trimCache": () => Promise; + "codeQL.trimOverlayBaseCache": () => Promise; + + // Explorer context menu + "codeQL.setCurrentDatabase": (uri: Uri) => Promise; + "codeQL.importTestDatabase": (uri: Uri) => Promise; + + // Database panel view title commands + "codeQLDatabases.chooseDatabaseFolder": () => Promise; + "codeQLDatabases.chooseDatabaseArchive": () => Promise; + "codeQLDatabases.chooseDatabaseInternet": () => Promise; + "codeQLDatabases.chooseDatabaseGithub": () => Promise; + "codeQLDatabases.sortByName": () => Promise; + "codeQLDatabases.sortByLanguage": () => Promise; + "codeQLDatabases.sortByDateAdded": () => Promise; + + // Database panel context menu + "codeQLDatabases.setCurrentDatabase": ( + databaseItem: DatabaseItem, + ) => Promise; + + // Database panel selection commands + "codeQLDatabases.removeDatabase": TreeViewContextMultiSelectionCommandFunction; + "codeQLDatabases.upgradeDatabase": TreeViewContextMultiSelectionCommandFunction; + "codeQLDatabases.renameDatabase": TreeViewContextMultiSelectionCommandFunction; + "codeQLDatabases.openDatabaseFolder": TreeViewContextMultiSelectionCommandFunction; + "codeQLDatabases.addDatabaseSource": TreeViewContextMultiSelectionCommandFunction; + + // Codespace template commands + "codeQL.setDefaultTourDatabase": () => Promise; + + // Internal commands + "codeQLDatabases.removeOrphanedDatabases": () => Promise; + "codeQL.getCurrentDatabase": () => Promise; +}; + +// Commands tied to variant analysis +export type VariantAnalysisCommands = { + "codeQL.autoDownloadVariantAnalysisResult": ( + scannedRepo: VariantAnalysisScannedRepository, + variantAnalysisSummary: VariantAnalysis, + ) => Promise; + "codeQL.loadVariantAnalysisRepoResults": ( + variantAnalysisId: number, + repositoryFullName: string, + ) => Promise; + "codeQL.monitorNewVariantAnalysis": ( + variantAnalysis: VariantAnalysis, + ) => Promise; + "codeQL.monitorRehydratedVariantAnalysis": ( + variantAnalysis: VariantAnalysis, + ) => Promise; + "codeQL.monitorReauthenticatedVariantAnalysis": ( + variantAnalysis: VariantAnalysis, + ) => Promise; + "codeQL.openVariantAnalysisLogs": ( + variantAnalysisId: number, + ) => Promise; + "codeQLModelAlerts.openVariantAnalysisLogs": ( + variantAnalysisId: number, + ) => Promise; + "codeQL.openVariantAnalysisView": ( + variantAnalysisId: number, + ) => Promise; + "codeQL.runVariantAnalysis": () => Promise; + "codeQL.runVariantAnalysisContextEditor": (uri: Uri) => Promise; + "codeQL.runVariantAnalysisContextExplorer": ExplorerSelectionCommandFunction; + "codeQLQueries.runVariantAnalysisContextMenu": TreeViewContextSingleSelectionCommandFunction; + "codeQL.runVariantAnalysisPublishedPack": () => Promise; +}; + +export type DatabasePanelCommands = { + "codeQLVariantAnalysisRepositories.openConfigFile": () => Promise; + "codeQLVariantAnalysisRepositories.addNewDatabase": () => Promise; + "codeQLVariantAnalysisRepositories.addNewList": () => Promise; + "codeQLVariantAnalysisRepositories.setupControllerRepository": () => Promise; + + "codeQLVariantAnalysisRepositories.setSelectedItem": TreeViewContextSingleSelectionCommandFunction; + "codeQLVariantAnalysisRepositories.setSelectedItemContextMenu": TreeViewContextSingleSelectionCommandFunction; + "codeQLVariantAnalysisRepositories.openOnGitHubContextMenu": TreeViewContextSingleSelectionCommandFunction; + "codeQLVariantAnalysisRepositories.renameItemContextMenu": TreeViewContextSingleSelectionCommandFunction; + "codeQLVariantAnalysisRepositories.removeItemContextMenu": TreeViewContextSingleSelectionCommandFunction; + "codeQLVariantAnalysisRepositories.importFromCodeSearch": TreeViewContextSingleSelectionCommandFunction; +}; + +export type AstCfgCommands = { + "codeQL.viewAst": (selectedFile: Uri) => Promise; + "codeQL.viewAstContextExplorer": (selectedFile: Uri) => Promise; + "codeQL.viewAstContextEditor": (selectedFile: Uri) => Promise; + "codeQL.viewCfg": () => Promise; + "codeQL.viewCfgContextExplorer": () => Promise; + "codeQL.viewCfgContextEditor": () => Promise; +}; + +export type AstViewerCommands = { + "codeQLAstViewer.clear": () => Promise; + "codeQLAstViewer.gotoCode": (item: AstItem) => Promise; +}; + +export type PackagingCommands = { + "codeQL.installPackDependencies": () => Promise; + "codeQL.downloadPacks": () => Promise; +}; + +export type ModelEditorCommands = { + "codeQL.openModelEditor": () => Promise; + "codeQL.openModelEditorFromModelingPanel": () => Promise; + "codeQLModelEditor.jumpToMethod": ( + method: Method, + usage: Usage, + databaseItem: DatabaseItem, + ) => Promise; +}; + +export type EvalLogViewerCommands = { + "codeQLEvalLogViewer.clear": () => Promise; +}; + +export type SummaryLanguageSupportCommands = { + "codeQL.gotoQL": () => Promise; + "codeQL.gotoQLContextEditor": () => Promise; +}; + +export type TestUICommands = { + "codeQLTests.showOutputDifferences": (node: TestItem) => Promise; + "codeQLTests.acceptOutput": (node: TestItem) => Promise; + "codeQLTests.acceptOutputContextTestItem": (node: TestItem) => Promise; +}; + +export type MockGitHubApiServerCommands = { + "codeQL.mockGitHubApiServer.startRecording": () => Promise; + "codeQL.mockGitHubApiServer.saveScenario": () => Promise; + "codeQL.mockGitHubApiServer.cancelRecording": () => Promise; + "codeQL.mockGitHubApiServer.loadScenario": ( + scenario?: string, + ) => Promise; + "codeQL.mockGitHubApiServer.unloadScenario": () => Promise; +}; + +// All commands where the implementation is provided by this activated extension. +export type AllExtensionCommands = BaseCommands & + QueryEditorCommands & + ResultsViewCommands & + QueryHistoryCommands & + LanguageSelectionCommands & + LocalDatabasesCommands & + DebuggerCommands & + VariantAnalysisCommands & + DatabasePanelCommands & + AstCfgCommands & + AstViewerCommands & + PackagingCommands & + ModelEditorCommands & + EvalLogViewerCommands & + SummaryLanguageSupportCommands & + Partial & + MockGitHubApiServerCommands; + +export type AllCommands = AllExtensionCommands & + PreActivationCommands & + BuiltInVsCodeCommands; + +export type AppCommandManager = CommandManager; + +// Separate command manager because it uses a different logger +export type QueryServerCommands = LocalQueryCommands; +export type QueryServerCommandManager = CommandManager; diff --git a/extensions/ql-vscode/src/common/config-template.ts b/extensions/ql-vscode/src/common/config-template.ts new file mode 100644 index 00000000000..dfc948d9b2b --- /dev/null +++ b/extensions/ql-vscode/src/common/config-template.ts @@ -0,0 +1,57 @@ +// Based on https://github.com/microsoft/vscode/blob/edfd5b8ba54d50f3f5c2ebee877af088803def88/src/vs/base/common/labels.ts#L316C1-L400 + +/** + * Helper to insert values for specific template variables into the string. E.g. "this ${is} a ${template}" can be + * passed to this function together with an object that maps "is" and "template" to strings to have them replaced. + * + * @param template string to which template is applied + * @param values the values of the templates to use + */ +export function substituteConfigVariables( + template: string, + values: { + [key: string]: string | undefined | null; + }, +): string { + const segments: string[] = []; + + let inVariable = false; + let currentValue = ""; + for (const char of template) { + // Beginning of variable + if (char === "$" || (inVariable && char === "{")) { + if (currentValue) { + segments.push(currentValue); + } + + currentValue = ""; + inVariable = true; + } + + // End of variable + else if (char === "}" && inVariable) { + const resolved = values[currentValue]; + + // Variable + if (resolved && resolved.length > 0) { + segments.push(resolved); + } + // If the variable, doesn't exist, we discard it (i.e. replace it by the empty string) + + currentValue = ""; + inVariable = false; + } + + // Text or Variable Name + else { + currentValue += char; + } + } + + // Tail + if (currentValue && !inVariable) { + segments.push(currentValue); + } + + return segments.join(""); +} diff --git a/extensions/ql-vscode/src/common/date.ts b/extensions/ql-vscode/src/common/date.ts new file mode 100644 index 00000000000..5bea8b49e5d --- /dev/null +++ b/extensions/ql-vscode/src/common/date.ts @@ -0,0 +1,39 @@ +/* + * Contains an assortment of helper constants and functions for working with dates. + */ + +const dateWithoutYearFormatter = new Intl.DateTimeFormat("en-US", { + month: "short", + day: "numeric", + hour: "numeric", + minute: "2-digit", +}); + +const dateFormatter = new Intl.DateTimeFormat("en-US", { + year: "numeric", + month: "short", + day: "numeric", + hour: "numeric", + minute: "2-digit", +}); + +export function formatDate(value: Date): string { + if (value.getFullYear() === new Date().getFullYear()) { + return dateWithoutYearFormatter.format(value); + } + + return dateFormatter.format(value); +} + +// These are overloads for the function that allow us to not add an extra +// type check when the value is definitely not undefined. +export function parseDate(value: string): Date; +export function parseDate(value: string | undefined | null): Date | undefined; + +export function parseDate(value: string | undefined | null): Date | undefined { + if (value === undefined || value === null) { + return undefined; + } + + return new Date(value); +} diff --git a/extensions/ql-vscode/src/common/discovery.ts b/extensions/ql-vscode/src/common/discovery.ts new file mode 100644 index 00000000000..8ac905de626 --- /dev/null +++ b/extensions/ql-vscode/src/common/discovery.ts @@ -0,0 +1,93 @@ +import { DisposableObject } from "./disposable-object"; +import { getErrorMessage } from "./helpers-pure"; +import type { BaseLogger } from "./logging"; + +/** + * Base class for "discovery" operations, which scan the file system to find specific kinds of + * files. This class automatically prevents more than one discovery operation from running at the + * same time. + */ +export abstract class Discovery extends DisposableObject { + private restartWhenFinished = false; + private currentDiscoveryPromise: Promise | undefined; + + constructor( + protected readonly name: string, + protected readonly logger: BaseLogger, + ) { + super(); + } + + /** + * Returns the promise of the currently running refresh operation, if one is in progress. + * Otherwise returns a promise that resolves immediately. + */ + public waitForCurrentRefresh(): Promise { + return this.currentDiscoveryPromise ?? Promise.resolve(); + } + + /** + * Force the discovery process to run. Normally invoked by the derived class when a relevant file + * system change is detected. + * + * Returns a promise that resolves when the refresh is complete, including any retries. + */ + public refresh(): Promise { + // We avoid having multiple discovery operations in progress at the same time. Otherwise, if we + // got a storm of refresh requests due to, say, the copying or deletion of a large directory + // tree, we could potentially spawn a separate simultaneous discovery operation for each + // individual file change notification. + // Our approach is to spawn a discovery operation immediately upon receiving the first refresh + // request. If we receive any additional refresh requests before the first one is complete, we + // record this fact by setting `this.retry = true`. When the original discovery operation + // completes, we discard its results and spawn another one to account for that additional + // changes that have happened since. + // The means that for the common case of a single file being modified, we'll complete the + // discovery and update as soon as possible. If multiple files are being modified, we'll + // probably wind up doing discovery at least twice. + // We could choose to delay the initial discovery request by a second or two to wait for any + // other change notifications that might be coming along. However, this would create more + // latency in the common case, in order to save a bit of latency in the uncommon case. + + if (this.currentDiscoveryPromise !== undefined) { + // There's already a discovery operation in progress. Tell it to restart when it's done. + this.restartWhenFinished = true; + } else { + // No discovery in progress, so start one now. + this.currentDiscoveryPromise = this.launchDiscovery().finally(() => { + this.currentDiscoveryPromise = undefined; + }); + } + return this.currentDiscoveryPromise; + } + + /** + * Starts the asynchronous discovery operation by invoking the `discover` function. When the + * discovery operation completes, the `update` function will be invoked with the results of the + * discovery. + */ + private async launchDiscovery(): Promise { + try { + await this.discover(); + } catch (err) { + void this.logger.log( + `${this.name} failed. Reason: ${getErrorMessage(err)}`, + ); + } + + if (this.restartWhenFinished) { + // Another refresh request came in while we were still running a previous discovery + // operation. Since the discovery results we just computed are now stale, we'll launch + // another discovery operation instead of updating. + // We want to relaunch discovery regardless of if the initial discovery operation + // succeeded or failed. + this.restartWhenFinished = false; + await this.launchDiscovery(); + } + } + + /** + * Overridden by the derived class to spawn the actual discovery operation, returning the results. + */ + protected abstract discover(): Promise; +} diff --git a/extensions/ql-vscode/src/pure/disposable-object.ts b/extensions/ql-vscode/src/common/disposable-object.ts similarity index 91% rename from extensions/ql-vscode/src/pure/disposable-object.ts rename to extensions/ql-vscode/src/common/disposable-object.ts index f351892b831..8c4cfd4950f 100644 --- a/extensions/ql-vscode/src/pure/disposable-object.ts +++ b/extensions/ql-vscode/src/common/disposable-object.ts @@ -1,8 +1,7 @@ - // Avoid explicitly referencing Disposable type in vscode. // This file cannot have dependencies on the vscode API. -interface Disposable { - dispose(): any; +export interface Disposable { + dispose(): unknown; } export type DisposeHandler = (disposable: Disposable) => void; @@ -10,10 +9,16 @@ export type DisposeHandler = (disposable: Disposable) => void; /** * Base class to make it easier to implement a `Disposable` that owns other disposable object. */ -export abstract class DisposableObject implements Disposable { +export class DisposableObject implements Disposable { private disposables: Disposable[] = []; private tracked?: Set = undefined; + constructor(...dispoables: Disposable[]) { + for (const d of dispoables) { + this.push(d); + } + } + /** * Adds `obj` to a list of objects to dispose when `this` is disposed. Objects added by `push` are * disposed in reverse order of being added. diff --git a/extensions/ql-vscode/src/common/distribution.ts b/extensions/ql-vscode/src/common/distribution.ts new file mode 100644 index 00000000000..0e5d9212c74 --- /dev/null +++ b/extensions/ql-vscode/src/common/distribution.ts @@ -0,0 +1,25 @@ +import { platform } from "os"; + +/** + * Get the name of the codeql cli installation we prefer to install, based on our current platform. + */ +export function getRequiredAssetName(): string { + switch (platform()) { + case "linux": + return "codeql-linux64.zip"; + case "darwin": + return "codeql-osx64.zip"; + case "win32": + return "codeql-win64.zip"; + default: + return "codeql.zip"; + } +} + +export function codeQlLauncherName(): string { + return platform() === "win32" ? "codeql.exe" : "codeql"; +} + +export function deprecatedCodeQlLauncherName(): string | undefined { + return platform() === "win32" ? "codeql.cmd" : undefined; +} diff --git a/extensions/ql-vscode/src/common/errors.ts b/extensions/ql-vscode/src/common/errors.ts new file mode 100644 index 00000000000..60a8ad6f3e8 --- /dev/null +++ b/extensions/ql-vscode/src/common/errors.ts @@ -0,0 +1,96 @@ +export class RedactableError extends Error { + constructor( + cause: ErrorLike | undefined, + private readonly strings: TemplateStringsArray, + private readonly values: unknown[], + ) { + super(); + + this.message = this.fullMessage; + if (cause !== undefined) { + this.stack = cause.stack; + } + } + + public toString(): string { + return this.fullMessage; + } + + public get fullMessage(): string { + return this.strings + .map((s, i) => s + (this.hasValue(i) ? this.getValue(i) : "")) + .join(""); + } + + public get fullMessageWithStack(): string { + if (!this.stack) { + return this.fullMessage; + } + + return `${this.fullMessage}\n${this.stack}`; + } + + public get redactedMessage(): string { + return this.strings + .map((s, i) => s + (this.hasValue(i) ? this.getRedactedValue(i) : "")) + .join(""); + } + + private getValue(index: number): unknown { + const value = this.values[index]; + if (value instanceof RedactableError) { + return value.fullMessage; + } + return value; + } + + private getRedactedValue(index: number): unknown { + const value = this.values[index]; + if (value instanceof RedactableError) { + return value.redactedMessage; + } + return "[REDACTED]"; + } + + private hasValue(index: number): boolean { + return index < this.values.length; + } +} + +export function redactableError( + strings: TemplateStringsArray, + ...values: unknown[] +): RedactableError; +export function redactableError( + error: ErrorLike, +): (strings: TemplateStringsArray, ...values: unknown[]) => RedactableError; + +export function redactableError( + errorOrStrings: ErrorLike | TemplateStringsArray, + ...values: unknown[] +): + | ((strings: TemplateStringsArray, ...values: unknown[]) => RedactableError) + | RedactableError { + if (isErrorLike(errorOrStrings)) { + return (strings: TemplateStringsArray, ...values: unknown[]) => + new RedactableError(errorOrStrings, strings, values); + } else { + return new RedactableError(undefined, errorOrStrings, values); + } +} + +export interface ErrorLike { + message: string; + stack?: string; +} + +function isErrorLike(error: unknown): error is ErrorLike { + return ( + error !== undefined && + error !== null && + typeof error === "object" && + "message" in error && + typeof error.message === "string" && + (!("stack" in error) || typeof error.stack === "string") + ); +} diff --git a/extensions/ql-vscode/src/common/events.ts b/extensions/ql-vscode/src/common/events.ts new file mode 100644 index 00000000000..fb2eb2584f1 --- /dev/null +++ b/extensions/ql-vscode/src/common/events.ts @@ -0,0 +1,10 @@ +import type { Disposable } from "./disposable-object"; + +export interface AppEvent { + (listener: (event: T) => void): Disposable; +} + +export interface AppEventEmitter extends Disposable { + event: AppEvent; + fire(data: T): void; +} diff --git a/extensions/ql-vscode/src/common/fetch-stream.ts b/extensions/ql-vscode/src/common/fetch-stream.ts new file mode 100644 index 00000000000..b60bda83ada --- /dev/null +++ b/extensions/ql-vscode/src/common/fetch-stream.ts @@ -0,0 +1,36 @@ +import { clearTimeout } from "node:timers"; + +export function createTimeoutSignal(timeoutSeconds: number): { + signal: AbortSignal; + onData: () => void; + dispose: () => void; +} { + const timeout = timeoutSeconds * 1000; + + const abortController = new AbortController(); + + let timeoutId: NodeJS.Timeout; + + // If we don't get any data within the timeout, abort the download + timeoutId = setTimeout(() => { + abortController.abort(); + }, timeout); + + // If we receive any data within the timeout, reset the timeout + const onData = () => { + clearTimeout(timeoutId); + timeoutId = setTimeout(() => { + abortController.abort(); + }, timeout); + }; + + const dispose = () => { + clearTimeout(timeoutId); + }; + + return { + signal: abortController.signal, + onData, + dispose, + }; +} diff --git a/extensions/ql-vscode/src/common/file-tree-nodes.ts b/extensions/ql-vscode/src/common/file-tree-nodes.ts new file mode 100644 index 00000000000..5b9d427983f --- /dev/null +++ b/extensions/ql-vscode/src/common/file-tree-nodes.ts @@ -0,0 +1,122 @@ +import { basename, dirname, join } from "path"; +import type { EnvironmentContext } from "./app"; + +/** + * A node in the tree of files. This will be either a `FileTreeDirectory` or a `FileTreeLeaf`. + */ +export abstract class FileTreeNode { + constructor( + private _path: string, + private _name: string, + private _data?: T, + ) {} + + public get path(): string { + return this._path; + } + + public get name(): string { + return this._name; + } + + public get data(): T | undefined { + return this._data; + } + + public abstract get children(): ReadonlyArray>; + + public abstract finish(): void; +} + +/** + * A directory containing one or more files or other directories. + */ +export class FileTreeDirectory extends FileTreeNode { + constructor( + _path: string, + _name: string, + protected readonly env: EnvironmentContext, + private _children: Array> = [], + ) { + super(_path, _name); + } + + public get children(): ReadonlyArray> { + return this._children; + } + + public addChild(child: FileTreeNode): void { + this._children.push(child); + } + + public createDirectory(relativePath: string): FileTreeDirectory { + if (relativePath === ".") { + return this; + } + const dirName = dirname(relativePath); + if (dirName === ".") { + return this.createChildDirectory(relativePath); + } else { + const parent = this.createDirectory(dirName); + return parent.createDirectory(basename(relativePath)); + } + } + + public finish(): void { + // remove empty directories + this._children.filter( + (child) => child instanceof FileTreeLeaf || child.children.length > 0, + ); + this._children.sort((a, b) => + a.name.localeCompare(b.name, this.env.language), + ); + this._children.forEach((child, i) => { + child.finish(); + if ( + child.children?.length === 1 && + child.children[0] instanceof FileTreeDirectory + ) { + // collapse children + const replacement = new FileTreeDirectory( + child.children[0].path, + `${child.name} / ${child.children[0].name}`, + this.env, + Array.from(child.children[0].children), + ); + this._children[i] = replacement; + } + }); + } + + private createChildDirectory(name: string): FileTreeDirectory { + const existingChild = this._children.find((child) => child.name === name); + if (existingChild !== undefined) { + return existingChild as FileTreeDirectory; + } else { + const newChild = new FileTreeDirectory( + join(this.path, name), + name, + this.env, + ); + this.addChild(newChild); + return newChild; + } + } +} + +/** + * A single file. + */ +export class FileTreeLeaf extends FileTreeNode { + constructor(_path: string, _name: string, _data?: T) { + super(_path, _name, _data); + } + + public get children(): ReadonlyArray> { + return []; + } + + public finish(): void { + /**/ + } +} diff --git a/extensions/ql-vscode/src/common/filenames.ts b/extensions/ql-vscode/src/common/filenames.ts new file mode 100644 index 00000000000..7e621a190df --- /dev/null +++ b/extensions/ql-vscode/src/common/filenames.ts @@ -0,0 +1,44 @@ +type FilenameOptions = { + removeDots?: boolean; +}; + +/** + * This will create a filename from an arbitrary string by removing + * all characters which are not allowed in filenames and making them + * more filesystem-friendly be replacing undesirable characters with + * hyphens. The result will always be lowercase ASCII. + * + * @param str The string to create a filename from + * @param removeDots Whether to remove dots from the filename [default: false] + * @returns The filename + */ +export function createFilenameFromString( + str: string, + { removeDots }: FilenameOptions = {}, +) { + let fileName = str; + + // Lowercase everything + fileName = fileName.toLowerCase(); + + // Replace all spaces, underscores, slashes, and backslashes with hyphens + fileName = fileName.replaceAll(/[\s_/\\]+/g, "-"); + + // Replace all characters which are not allowed by empty strings + fileName = fileName.replaceAll(/[^a-z0-9.-]/g, ""); + + // Remove any leading or trailing hyphens or dots + fileName = fileName.replaceAll(/^[.-]+|[.-]+$/g, ""); + + // Replace dots by hyphens if dots are not allowed + if (removeDots) { + fileName = fileName.replaceAll(/\./g, "-"); + } + + // Remove any duplicate hyphens + fileName = fileName.replaceAll(/-{2,}/g, "-"); + // Remove any duplicate dots + fileName = fileName.replaceAll(/\.{2,}/g, "."); + + return fileName; +} diff --git a/extensions/ql-vscode/src/common/files.ts b/extensions/ql-vscode/src/common/files.ts new file mode 100644 index 00000000000..2e631ce6f75 --- /dev/null +++ b/extensions/ql-vscode/src/common/files.ts @@ -0,0 +1,207 @@ +import { pathExists, stat, readdir, opendir, lstatSync } from "fs-extra"; +import { dirname, isAbsolute, join, relative, resolve } from "path"; +import { tmpdir as osTmpdir } from "os"; + +/** + * Recursively finds all .ql files in this set of Uris. + * + * @param paths The list of Uris to search through + * + * @returns list of ql files and a boolean describing whether or not a directory was found/ + */ +export async function gatherQlFiles( + paths: string[], +): Promise<[string[], boolean]> { + const gatheredUris: Set = new Set(); + let dirFound = false; + for (const nextPath of paths) { + if ((await pathExists(nextPath)) && (await stat(nextPath)).isDirectory()) { + dirFound = true; + const subPaths = await readdir(nextPath); + const fullPaths = subPaths.map((p) => join(nextPath, p)); + const nestedFiles = (await gatherQlFiles(fullPaths))[0]; + nestedFiles.forEach((nested) => gatheredUris.add(nested)); + } else if (nextPath.endsWith(".ql")) { + gatheredUris.add(nextPath); + } + } + return [Array.from(gatheredUris), dirFound]; +} + +/** + * Lists the names of directories inside the given path. + * @param path The path to the directory to read. + * @returns the names of the directories inside the given path. + */ +export async function getDirectoryNamesInsidePath( + path: string, +): Promise { + if (!(await pathExists(path))) { + throw Error(`Path does not exist: ${path}`); + } + if (!(await stat(path)).isDirectory()) { + throw Error(`Path is not a directory: ${path}`); + } + + const dirItems = await readdir(path, { withFileTypes: true }); + + const dirNames = dirItems + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); + + return dirNames; +} + +export function normalizePath(path: string): string { + // On Windows, "C:/", "C:\", and "c:/" are all equivalent. We need + // to normalize the paths to ensure they all get resolved to the + // same format. On Windows, we also need to do the comparison + // case-insensitively. + path = resolve(path); + if (process.platform === "win32") { + path = path.toLowerCase(); + } + return path; +} + +export function pathsEqual(path1: string, path2: string): boolean { + return normalizePath(path1) === normalizePath(path2); +} + +/** + * Returns true if `parent` contains `child`, or if they are equal. + */ +export function containsPath(parent: string, child: string): boolean { + const relativePath = relative(parent, child); + return ( + !relativePath.startsWith("..") && + // On windows, if the two paths are in different drives, then the + // relative path will be an absolute path to the other drive. + !isAbsolute(relativePath) + ); +} + +export async function readDirFullPaths(path: string): Promise { + const baseNames = await readdir(path); + return baseNames.map((baseName) => join(path, baseName)); +} + +/** + * Recursively walk a directory and return the full path to all files found. + * Symbolic links are ignored. + * + * @param dir the directory to walk + * @param includeDirectories whether to include directories in the results + * + * @return An iterator of the full path to all files recursively found in the directory. + */ +export async function* walkDirectory( + dir: string, + includeDirectories = false, +): AsyncIterableIterator { + const seenFiles = new Set(); + for await (const d of await opendir(dir)) { + const entry = join(dir, d.name); + seenFiles.add(entry); + if (d.isDirectory()) { + if (includeDirectories) { + yield entry; + } + yield* walkDirectory(entry, includeDirectories); + } else if (d.isFile()) { + yield entry; + } + } +} + +/** + * Error thrown from methods from the `fs` module. + * + * In practice, any error matching this is likely an instance of `NodeJS.ErrnoException`. + * If desired in the future, we could model more fields or use `NodeJS.ErrnoException` directly. + */ +export interface IOError { + readonly code: string; +} + +export function isIOError(e: unknown): e is IOError { + return ( + e !== undefined && + e !== null && + typeof e === "object" && + "code" in e && + typeof e.code === "string" + ); +} + +// This function is a wrapper around `os.tmpdir()` to make it easier to mock in tests. +export function tmpdir(): string { + return osTmpdir(); +} + +/** + * Finds the common parent directory of an arbitrary number of absolute paths. The result + * will be an absolute path. + * @param paths The array of paths. + * @returns The common parent directory of the paths. + */ +export function findCommonParentDir(...paths: string[]): string { + if (paths.length === 0) { + throw new Error("At least one path must be provided"); + } + if (paths.some((path) => !isAbsolute(path))) { + throw new Error("All paths must be absolute"); + } + + paths = paths.map((path) => normalizePath(path)); + + // If there's only one path and it's a file, return its dirname + if (paths.length === 1) { + return lstatSync(paths[0]).isFile() ? dirname(paths[0]) : paths[0]; + } + + let commonDir = paths[0]; + while (!paths.every((path) => containsPath(commonDir, path))) { + if (isTopLevelPath(commonDir)) { + throw new Error( + "Reached filesystem root and didn't find a common parent directory", + ); + } + commonDir = dirname(commonDir); + } + + return commonDir; +} + +function isTopLevelPath(path: string): boolean { + return dirname(path) === path; +} + +/** + * Recursively looks for a file in a directory. If the file exists, then returns the directory containing the file. + * + * @param dir The directory to search + * @param toFind The file to recursively look for in this directory + * + * @returns the directory containing the file, or undefined if not found. + */ +export async function findDirWithFile( + dir: string, + ...toFind: string[] +): Promise { + if (!(await stat(dir)).isDirectory()) { + return; + } + const files = await readdir(dir); + if (toFind.some((file) => files.includes(file))) { + return dir; + } + for (const file of files) { + const newPath = join(dir, file); + const result = await findDirWithFile(newPath, ...toFind); + if (result) { + return result; + } + } + return; +} diff --git a/extensions/ql-vscode/src/common/github-url-identifier-helper.ts b/extensions/ql-vscode/src/common/github-url-identifier-helper.ts new file mode 100644 index 00000000000..1ea4e327b9d --- /dev/null +++ b/extensions/ql-vscode/src/common/github-url-identifier-helper.ts @@ -0,0 +1,85 @@ +import { OWNER_REGEX, REPO_REGEX } from "./helpers-pure"; + +/** + * Checks if a string is a valid GitHub NWO. + * @param identifier The GitHub NWO + * @returns + */ +export function isValidGitHubNwo(identifier: string): boolean { + return validGitHubNwoOrOwner(identifier, "nwo"); +} + +/** + * Checks if a string is a valid GitHub owner. + * @param identifier The GitHub owner + * @returns + */ +export function isValidGitHubOwner(identifier: string): boolean { + return validGitHubNwoOrOwner(identifier, "owner"); +} + +function validGitHubNwoOrOwner( + identifier: string, + kind: "owner" | "nwo", +): boolean { + return kind === "owner" + ? OWNER_REGEX.test(identifier) + : REPO_REGEX.test(identifier); +} + +/** + * Extracts an NWO from a GitHub URL. + * @param repositoryUrl The GitHub repository URL + * @param githubUrl The URL of the GitHub instance + * @return The corresponding NWO, or undefined if the URL is not valid + */ +export function getNwoFromGitHubUrl( + repositoryUrl: string, + githubUrl: URL, +): string | undefined { + return getNwoOrOwnerFromGitHubUrl(repositoryUrl, githubUrl, "nwo"); +} + +/** + * Extracts an owner from a GitHub URL. + * @param repositoryUrl The GitHub repository URL + * @param githubUrl The URL of the GitHub instance + * @return The corresponding Owner, or undefined if the URL is not valid + */ +export function getOwnerFromGitHubUrl( + repositoryUrl: string, + githubUrl: URL, +): string | undefined { + return getNwoOrOwnerFromGitHubUrl(repositoryUrl, githubUrl, "owner"); +} + +function getNwoOrOwnerFromGitHubUrl( + repositoryUrl: string, + githubUrl: URL, + kind: "owner" | "nwo", +): string | undefined { + const validHostnames = [githubUrl.hostname, `www.${githubUrl.hostname}`]; + + try { + let paths: string[]; + const urlElements = repositoryUrl.split("/"); + if (validHostnames.includes(urlElements[0])) { + paths = repositoryUrl.split("/").slice(1); + } else { + const uri = new URL(repositoryUrl); + if (!validHostnames.includes(uri.hostname)) { + return; + } + paths = uri.pathname.split("/").filter((segment: string) => segment); + } + const owner = `${paths[0]}`; + if (kind === "owner") { + return owner ? owner : undefined; + } + const nwo = `${paths[0]}/${paths[1]}`; + return paths[1] ? nwo : undefined; + } catch { + // Ignore the error here, since we catch failures at a higher level. + return; + } +} diff --git a/extensions/ql-vscode/src/common/helpers-pure.ts b/extensions/ql-vscode/src/common/helpers-pure.ts new file mode 100644 index 00000000000..861e250b93f --- /dev/null +++ b/extensions/ql-vscode/src/common/helpers-pure.ts @@ -0,0 +1,104 @@ +/** + * helpers-pure.ts + * ------------ + * + * Helper functions that don't depend on vscode or the CLI and therefore can be used by the front-end and pure unit tests. + */ + +import { RedactableError } from "./errors"; + +// Matches any type that is not an array. This is useful to help avoid +// nested arrays, or for cases like createSingleSelectionCommand to avoid T +// accidentally getting instantiated as DatabaseItem[] instead of DatabaseItem. +export type NotArray = + | string + | bigint + | number + | boolean + | (object & { + length?: never; + }); + +/** + * This error is used to indicate a runtime failure of an exhaustivity check enforced at compile time. + */ +class ExhaustivityCheckingError extends Error { + constructor(public expectedExhaustiveValue: never) { + super("Internal error: exhaustivity checking failure"); + } +} + +/** + * Used to perform compile-time exhaustivity checking on a value. This function will not be executed at runtime unless + * the type system has been subverted. + */ +export function assertNever(value: never): never { + throw new ExhaustivityCheckingError(value); +} + +/** + * Use to perform array filters where the predicate is asynchronous. + */ +export async function asyncFilter( + arr: T[], + predicate: (arg0: T) => Promise, +) { + const results = await Promise.all(arr.map(predicate)); + return arr.filter((_, index) => results[index]); +} + +/** + * This regex matches strings of the form `owner/repo` where: + * - `owner` is made up of alphanumeric characters, hyphens, underscores, or periods + * - `repo` is made up of alphanumeric characters, hyphens, underscores, or periods + */ +export const REPO_REGEX = /^[a-zA-Z0-9-_.]+\/[a-zA-Z0-9-_.]+$/; + +/** + * This regex matches GiHub organization and user strings. These are made up for alphanumeric + * characters, hyphens, underscores or periods. + */ +export const OWNER_REGEX = /^[a-zA-Z0-9-_.]+$/; + +export function getErrorMessage(e: unknown): string { + if (e instanceof RedactableError) { + return e.fullMessage; + } + + return e instanceof Error ? e.message : String(e); +} + +export function getErrorStack(e: unknown): string { + return e instanceof Error ? (e.stack ?? "") : ""; +} + +export function asError(e: unknown): Error { + if (e instanceof RedactableError) { + return new Error(e.fullMessage); + } + + return e instanceof Error ? e : new Error(String(e)); +} + +/** + * Get error message when the error may have come from a method from the `child_process` module. + */ +export function getChildProcessErrorMessage(e: unknown): string { + return isChildProcessError(e) ? e.stderr : getErrorMessage(e); +} + +/** + * Error thrown from methods from the `child_process` module. + */ +interface ChildProcessError { + readonly stderr: string; +} + +function isChildProcessError(e: unknown): e is ChildProcessError { + return ( + typeof e === "object" && + e !== null && + "stderr" in e && + typeof e.stderr === "string" + ); +} diff --git a/extensions/ql-vscode/src/common/interface-types.ts b/extensions/ql-vscode/src/common/interface-types.ts new file mode 100644 index 00000000000..60d87cd7083 --- /dev/null +++ b/extensions/ql-vscode/src/common/interface-types.ts @@ -0,0 +1,883 @@ +import type { Log, Result } from "sarif"; +import type { + VariantAnalysis, + VariantAnalysisScannedRepositoryResult, + VariantAnalysisScannedRepositoryState, +} from "../variant-analysis/shared/variant-analysis"; +import type { + RepositoriesFilterSortState, + RepositoriesFilterSortStateWithIds, +} from "../variant-analysis/shared/variant-analysis-filter-sort"; +import type { ErrorLike } from "../common/errors"; +import type { DataFlowPaths } from "../variant-analysis/shared/data-flow-paths"; +import type { Method, MethodSignature } from "../model-editor/method"; +import type { ModeledMethod } from "../model-editor/modeled-method"; +import type { + MethodModelingPanelViewState, + ModelAlertsViewState, + ModelEditorViewState, +} from "../model-editor/shared/view-state"; +import type { Mode } from "../model-editor/shared/mode"; +import type { QueryLanguage } from "./query-language"; +import type { + Column, + RawResultSet, + Row, + UrlValueResolvable, +} from "./raw-result-types"; +import type { AccessPathSuggestionOptions } from "../model-editor/suggestions"; +import type { ModelEvaluationRunState } from "../model-editor/shared/model-evaluation-run-state"; +import type { PerformanceComparisonDataFromLog } from "../log-insights/performance-comparison"; + +/** + * This module contains types and code that are shared between + * the webview and the extension. + */ + +export const SELECT_TABLE_NAME = "#select"; +export const ALERTS_TABLE_NAME = "alerts"; +export const GRAPH_TABLE_NAME = "graph"; + +type RawTableResultSet = { + t: "RawResultSet"; + resultSet: RawResultSet; +}; + +type InterpretedResultSet = { + t: "InterpretedResultSet"; + name: string; + interpretation: InterpretationT; +}; + +export type ResultSet = + | RawTableResultSet + | InterpretedResultSet; + +/** + * Only ever show this many rows in a raw result table. + */ +export const RAW_RESULTS_LIMIT = 10000; + +export interface DatabaseInfo { + name: string; + databaseUri: string; + language?: QueryLanguage; +} + +/** Arbitrary query metadata */ +export interface QueryMetadata { + name?: string; + description?: string; + id?: string; + kind?: string; + scored?: string; +} + +export type SarifInterpretationData = { + t: "SarifInterpretationData"; + /** + * sortState being undefined means don't sort, just present results in the order + * they appear in the sarif file. + */ + sortState?: InterpretedResultsSortState; +} & Log; + +export type GraphInterpretationData = { + t: "GraphInterpretationData"; + dot: string[]; +}; + +type InterpretationData = SarifInterpretationData | GraphInterpretationData; + +interface InterpretationT { + sourceLocationPrefix: string; + numTruncatedResults: number; + numTotalResults: number; + data: T; +} + +export type Interpretation = InterpretationT; + +export interface ResultsPaths { + resultsPath: string; + interpretedResultsPath: string; +} + +export interface SortedResultSetInfo { + resultsPath: string; + sortState: RawResultsSortState; +} + +export type SortedResultsMap = { [resultSet: string]: SortedResultSetInfo }; + +/** + * A message to indicate that the results are being updated. + * + * As a result of receiving this message, listeners might want to display a loading indicator. + */ +interface ResultsUpdatingMsg { + t: "resultsUpdating"; +} + +/** + * Message to set the initial state of the results view with a new + * query. + */ +interface SetStateMsg { + t: "setState"; + resultsPath: string; + origResultsPaths: ResultsPaths; + sortedResultsMap: SortedResultsMap; + interpretation: undefined | Interpretation; + database: DatabaseInfo; + metadata?: QueryMetadata; + queryName: string; + queryPath: string; + /** + * Whether to keep displaying the old results while rendering the new results. + * + * This is useful to prevent properties like scroll state being lost when rendering the sorted results after sorting a column. + */ + shouldKeepOldResultsWhileRendering: boolean; + + /** + * An experimental way of providing results from the extension. + * Should be in the WebviewParsedResultSets branch of the type + * unless config.EXPERIMENTAL_BQRS_SETTING is set to true. + */ + parsedResultSets: ParsedResultSets; +} + +export interface UserSettings { + /** Whether to display links to the dataflow models that generated particular nodes in a flow path. */ + shouldShowProvenance: boolean; +} + +export const DEFAULT_USER_SETTINGS: UserSettings = { + shouldShowProvenance: false, +}; + +/** Message indicating that the user's configuration settings have changed. */ +interface SetUserSettingsMsg { + t: "setUserSettings"; + userSettings: UserSettings; +} + +export interface VariantAnalysisUserSettings { + /** Whether to display the "View Autofixes" button. */ + shouldShowViewAutofixesButton: boolean; +} + +export const DEFAULT_VARIANT_ANALYSIS_USER_SETTINGS: VariantAnalysisUserSettings = + { + shouldShowViewAutofixesButton: false, + }; + +/** + * Message indicating that the user's variant analysis configuration + * settings have changed. + */ +interface SetVariantAnalysisUserSettingsMsg { + t: "setVariantAnalysisUserSettings"; + variantAnalysisUserSettings: VariantAnalysisUserSettings; +} + +/** + * Message indicating that the results view should display interpreted + * results. + */ +interface ShowInterpretedPageMsg { + t: "showInterpretedPage"; + interpretation: Interpretation; + database: DatabaseInfo; + metadata?: QueryMetadata; + pageNumber: number; + numPages: number; + pageSize: number; + resultSetNames: string[]; + queryName: string; + queryPath: string; +} + +export const enum NavigationDirection { + up = "up", + down = "down", + left = "left", + right = "right", +} + +/** Move up, down, left, or right in the result viewer. */ +export interface NavigateMsg { + t: "navigate"; + direction: NavigationDirection; +} + +/** + * A message indicating that the results view should untoggle the + * "Show results in Problems view" checkbox. + */ +interface UntoggleShowProblemsMsg { + t: "untoggleShowProblems"; +} + +export const enum SourceArchiveRelationship { + /** The file is in the source archive of the database the query was run on. */ + CorrectArchive = "correct-archive", + /** The file is in a source archive, but for a different database. */ + WrongArchive = "wrong-archive", + /** The file is not in any source archive. */ + NotInArchive = "not-in-archive", +} + +/** + * Information about the current editor selection, sent to the results view + * so it can filter results to only those overlapping the selection. + */ +export interface EditorSelection { + /** The file URI in result-compatible format. */ + fileUri: string; + startLine: number; + endLine: number; + startColumn: number; + endColumn: number; + /** True if the selection is empty (just a cursor), in which case we match the whole file. */ + isEmpty: boolean; + /** Describes the relationship between the current file and the query's database source archive. */ + sourceArchiveRelationship: SourceArchiveRelationship; +} + +interface SetEditorSelectionMsg { + t: "setEditorSelection"; + selection: EditorSelection | undefined; + wasFromUserInteraction?: boolean; +} + +/** + * Results pre-filtered by file URI, sent from the extension when the + * selection filter is active and the editor's file changes. + * This bypasses pagination so the webview can apply line-range filtering + * on the complete set of results for the file. + */ +export interface FileFilteredResults { + /** The file URI these results were filtered for. */ + fileUri: string; + /** The result set table these results were filtered for. */ + selectedTable: string; + /** Raw result rows from the current result set that reference this file. */ + rawRows?: Row[]; + /** SARIF results that reference this file. */ + sarifResults?: Result[]; +} + +interface SetFileFilteredResultsMsg { + t: "setFileFilteredResults"; + results: FileFilteredResults; +} + +/** + * A message sent into the results view. + */ +export type IntoResultsViewMsg = + | ResultsUpdatingMsg + | SetStateMsg + | SetUserSettingsMsg + | ShowInterpretedPageMsg + | NavigateMsg + | UntoggleShowProblemsMsg + | SetFileFilteredResultsMsg + | SetEditorSelectionMsg; + +/** + * A message sent from the results view. + */ +export type FromResultsViewMsg = + | CommonFromViewMessages + | ViewSourceFileMsg + | ToggleDiagnostics + | ChangeRawResultsSortMsg + | ChangeInterpretedResultsSortMsg + | ChangePage + | OpenFileMsg + | RequestFileFilteredResultsMsg; + +/** + * Message from the results view to request pre-filtered results for + * a specific (file, table) pair. The extension loads all results from + * the given table that reference the given file and sends them back + * via setFileFilteredResults. + */ +interface RequestFileFilteredResultsMsg { + t: "requestFileFilteredResults"; + fileUri: string; + selectedTable: string; +} + +/** + * Message from the results view to open a source + * file at the provided location. + */ +interface ViewSourceFileMsg { + t: "viewSourceFile"; + loc: UrlValueResolvable; + /** URI of the database whose source archive contains the file, or `undefined` to open a file from + * the local disk. The latter case is used for opening links to data extension model files. */ + databaseUri: string | undefined; +} + +/** + * Message from the results view to open a file in an editor. + */ +interface OpenFileMsg { + t: "openFile"; + /* Full path to the file to open. */ + filePath: string; +} + +/** + * Message from the results view to toggle the display of + * query diagnostics. + */ +interface ToggleDiagnostics { + t: "toggleDiagnostics"; + databaseUri: string; + metadata?: QueryMetadata; + origResultsPaths: ResultsPaths; + visible: boolean; + kind?: string; +} + +/** + * Message from a view signal that loading is complete. + */ +interface ViewLoadedMsg { + t: "viewLoaded"; + viewName: string; +} + +interface TelemetryMessage { + t: "telemetry"; + action: string; +} + +interface UnhandledErrorMessage { + t: "unhandledError"; + error: ErrorLike; +} + +type CommonFromViewMessages = + | ViewLoadedMsg + | TelemetryMessage + | UnhandledErrorMessage; + +/** + * Message from the results view to signal a request to change the + * page. + */ +interface ChangePage { + t: "changePage"; + pageNumber: number; // 0-indexed, displayed to the user as 1-indexed + selectedTable: string; +} + +export enum SortDirection { + asc, + desc, +} + +export interface RawResultsSortState { + columnIndex: number; + sortDirection: SortDirection; +} + +type InterpretedResultsSortColumn = "alert-message"; + +export interface InterpretedResultsSortState { + sortBy: InterpretedResultsSortColumn; + sortDirection: SortDirection; +} + +/** + * Message from the results view to request a sorting change. + */ +interface ChangeRawResultsSortMsg { + t: "changeSort"; + resultSetName: string; + /** + * sortState being undefined means don't sort, just present results in the order + * they appear in the sarif file. + */ + sortState?: RawResultsSortState; +} + +/** + * Message from the results view to request a sorting change in interpreted results. + */ +interface ChangeInterpretedResultsSortMsg { + t: "changeInterpretedSort"; + /** + * sortState being undefined means don't sort, just present results in the order + * they appear in the sarif file. + */ + sortState?: InterpretedResultsSortState; +} + +/** + * Message from the compare view to the extension. + */ +export type FromCompareViewMessage = + | CommonFromViewMessages + | ChangeCompareMessage + | ViewSourceFileMsg + | OpenQueryMessage; + +/** + * Message from the compare view to request opening a query. + */ +interface OpenQueryMessage { + readonly t: "openQuery"; + readonly kind: "from" | "to"; +} + +/** + * Message from the compare view to request changing the result set to compare. + */ +interface ChangeCompareMessage { + t: "changeCompare"; + newResultSetName: string; +} + +export type ToCompareViewMessage = + | SetComparisonQueryInfoMessage + | SetComparisonsMessage + | StreamingComparisonSetupMessage + | StreamingComparisonAddResultsMessage + | StreamingComparisonCompleteMessage + | SetUserSettingsMsg; + +/** + * Message to the compare view that sets the metadata of the compared queries. + */ +export interface SetComparisonQueryInfoMessage { + readonly t: "setComparisonQueryInfo"; + readonly stats: { + fromQuery?: { + name: string; + status: string; + time: string; + }; + toQuery?: { + name: string; + status: string; + time: string; + }; + }; + readonly databaseUri: string; + readonly commonResultSetNames: string[]; +} + +/** + * Message to the compare view that specifies the query results to compare. + */ +export interface SetComparisonsMessage { + readonly t: "setComparisons"; + readonly currentResultSetName: string; + readonly result: QueryCompareResult | undefined; + readonly message: string | undefined; +} + +export type ToComparePerformanceViewMessage = SetPerformanceComparisonQueries; + +export interface SetPerformanceComparisonQueries { + readonly t: "setPerformanceComparison"; + readonly from: { name: string; data: PerformanceComparisonDataFromLog }; + readonly to: { name: string; data: PerformanceComparisonDataFromLog }; + readonly comparison: boolean; +} + +export type FromComparePerformanceViewMessage = CommonFromViewMessages; + +export type QueryCompareResult = + | RawQueryCompareResult + | InterpretedQueryCompareResult; + +/** + * from is the set of rows that have changes in the "from" query. + * to is the set of rows that have changes in the "to" query. + */ +export type RawQueryCompareResult = { + kind: "raw"; + columns: readonly Column[]; + from: Row[]; + to: Row[]; +}; + +/** + * from is the set of results that have changes in the "from" query. + * to is the set of results that have changes in the "to" query. + */ +export type InterpretedQueryCompareResult = { + kind: "interpreted"; + sourceLocationPrefix: string; + from: Result[]; + to: Result[]; +}; + +export interface StreamingComparisonSetupMessage { + readonly t: "streamingComparisonSetup"; + // The id of this streaming comparison + readonly id: string; + readonly currentResultSetName: string; + readonly message: string | undefined; + // The from and to fields will only contain a chunk of the results + readonly result: QueryCompareResult; +} + +interface StreamingComparisonAddResultsMessage { + readonly t: "streamingComparisonAddResults"; + readonly id: string; + // The from and to fields will only contain a chunk of the results + readonly result: QueryCompareResult; +} + +interface StreamingComparisonCompleteMessage { + readonly t: "streamingComparisonComplete"; + readonly id: string; +} + +/** + * Extract the name of the default result. Prefer returning + * 'alerts', or '#select'. Otherwise return the first in the list. + * + * Note that this is the only function in this module. It must be + * placed here since it is shared across the webview boundary. + * + * We should consider moving to a separate module to ensure this + * one is types only. + * + * @param resultSetNames + */ +export function getDefaultResultSetName( + resultSetNames: readonly string[], +): string { + // Choose first available result set from the array + return [ + ALERTS_TABLE_NAME, + GRAPH_TABLE_NAME, + SELECT_TABLE_NAME, + resultSetNames[0], + ].filter((resultSetName) => resultSetNames.includes(resultSetName))[0]; +} + +export interface ParsedResultSets { + pageNumber: number; + pageSize: number; + numPages: number; + numInterpretedPages: number; + selectedTable?: string; // when undefined, means 'show default table' + resultSetNames: string[]; + resultSet: ResultSet; +} + +interface SetVariantAnalysisMessage { + t: "setVariantAnalysis"; + variantAnalysis: VariantAnalysis; +} + +interface SetFilterSortStateMessage { + t: "setFilterSortState"; + filterSortState: RepositoriesFilterSortState; +} + +export type VariantAnalysisState = { + variantAnalysisId: number; +}; + +interface SetRepoResultsMessage { + t: "setRepoResults"; + repoResults: VariantAnalysisScannedRepositoryResult[]; +} + +interface SetRepoStatesMessage { + t: "setRepoStates"; + repoStates: VariantAnalysisScannedRepositoryState[]; +} + +interface RequestRepositoryResultsMessage { + t: "requestRepositoryResults"; + repositoryFullName: string; +} + +interface OpenQueryFileMessage { + t: "openQueryFile"; +} + +interface OpenQueryTextMessage { + t: "openQueryText"; +} + +interface ViewAutofixesMessage { + t: "viewAutofixes"; + filterSort?: RepositoriesFilterSortStateWithIds; +} + +interface CopyRepositoryListMessage { + t: "copyRepositoryList"; + filterSort?: RepositoriesFilterSortStateWithIds; +} + +interface ExportResultsMessage { + t: "exportResults"; + filterSort?: RepositoriesFilterSortStateWithIds; +} + +interface OpenLogsMessage { + t: "openLogs"; +} + +interface CancelVariantAnalysisMessage { + t: "cancelVariantAnalysis"; +} + +interface ShowDataFlowPathsMessage { + t: "showDataFlowPaths"; + dataFlowPaths: DataFlowPaths; +} + +export type ToVariantAnalysisMessage = + | SetVariantAnalysisMessage + | SetFilterSortStateMessage + | SetRepoResultsMessage + | SetRepoStatesMessage + | SetVariantAnalysisUserSettingsMsg; + +export type FromVariantAnalysisMessage = + | CommonFromViewMessages + | RequestRepositoryResultsMessage + | OpenQueryFileMessage + | OpenQueryTextMessage + | ViewAutofixesMessage + | CopyRepositoryListMessage + | ExportResultsMessage + | OpenLogsMessage + | CancelVariantAnalysisMessage + | ShowDataFlowPathsMessage; + +interface SetDataFlowPathsMessage { + t: "setDataFlowPaths"; + dataFlowPaths: DataFlowPaths; +} + +export type ToDataFlowPathsMessage = SetDataFlowPathsMessage; + +export type FromDataFlowPathsMessage = CommonFromViewMessages; + +interface SetExtensionPackStateMessage { + t: "setModelEditorViewState"; + viewState: ModelEditorViewState; +} + +interface SetMethodsMessage { + t: "setMethods"; + methods: Method[]; +} + +interface SetModeledAndModifiedMethodsMessage { + t: "setModeledAndModifiedMethods"; + methods: Record; + modifiedMethodSignatures: string[]; +} + +interface SetModifiedMethodsMessage { + t: "setModifiedMethods"; + methodSignatures: string[]; +} + +interface SwitchModeMessage { + t: "switchMode"; + mode: Mode; +} + +interface JumpToMethodMessage { + t: "jumpToMethod"; + methodSignature: string; +} + +interface OpenDatabaseMessage { + t: "openDatabase"; +} + +interface OpenExtensionPackMessage { + t: "openExtensionPack"; +} + +interface RefreshMethods { + t: "refreshMethods"; +} + +interface SaveModeledMethods { + t: "saveModeledMethods"; + methodSignatures?: string[]; +} + +interface GenerateMethodMessage { + t: "generateMethod"; +} + +interface StartModelEvaluationMessage { + t: "startModelEvaluation"; +} + +interface StopModelEvaluationMessage { + t: "stopModelEvaluation"; +} + +interface OpenModelAlertsViewMessage { + t: "openModelAlertsView"; +} + +interface RevealInModelAlertsViewMessage { + t: "revealInModelAlertsView"; + modeledMethod: ModeledMethod; +} + +interface ModelDependencyMessage { + t: "modelDependency"; +} + +interface HideModeledMethodsMessage { + t: "hideModeledMethods"; + hideModeledMethods: boolean; +} + +interface SetMultipleModeledMethodsMessage { + t: "setMultipleModeledMethods"; + methodSignature: string; + modeledMethods: ModeledMethod[]; +} + +interface SetInModelingModeMessage { + t: "setInModelingMode"; + inModelingMode: boolean; +} + +interface RevealMethodMessage { + t: "revealMethod"; + methodSignature: string; +} + +interface SetAccessPathSuggestionsMessage { + t: "setAccessPathSuggestions"; + accessPathSuggestions: AccessPathSuggestionOptions; +} + +interface SetModelEvaluationRunMessage { + t: "setModelEvaluationRun"; + run: ModelEvaluationRunState | undefined; +} + +export type ToModelEditorMessage = + | SetExtensionPackStateMessage + | SetMethodsMessage + | SetModeledAndModifiedMethodsMessage + | SetModifiedMethodsMessage + | RevealMethodMessage + | SetAccessPathSuggestionsMessage + | SetModelEvaluationRunMessage; + +export type FromModelEditorMessage = + | CommonFromViewMessages + | SwitchModeMessage + | RefreshMethods + | OpenDatabaseMessage + | OpenExtensionPackMessage + | JumpToMethodMessage + | SaveModeledMethods + | GenerateMethodMessage + | ModelDependencyMessage + | HideModeledMethodsMessage + | SetMultipleModeledMethodsMessage + | StartModelEvaluationMessage + | StopModelEvaluationMessage + | OpenModelAlertsViewMessage + | RevealInModelAlertsViewMessage; + +interface RevealInEditorMessage { + t: "revealInModelEditor"; + method: MethodSignature; +} + +interface StartModelingMessage { + t: "startModeling"; +} + +export type FromMethodModelingMessage = + | CommonFromViewMessages + | SetMultipleModeledMethodsMessage + | RevealInEditorMessage + | StartModelingMessage; + +interface SetMethodModelingPanelViewStateMessage { + t: "setMethodModelingPanelViewState"; + viewState: MethodModelingPanelViewState; +} + +interface SetMethodModifiedMessage { + t: "setMethodModified"; + isModified: boolean; +} + +interface SetNoMethodSelectedMessage { + t: "setNoMethodSelected"; +} + +interface SetSelectedMethodMessage { + t: "setSelectedMethod"; + method: Method; + modeledMethods: ModeledMethod[]; + isModified: boolean; +} + +export type ToMethodModelingMessage = + | SetMethodModelingPanelViewStateMessage + | SetMultipleModeledMethodsMessage + | SetMethodModifiedMessage + | SetNoMethodSelectedMessage + | SetSelectedMethodMessage + | SetInModelingModeMessage; + +interface SetModelAlertsViewStateMessage { + t: "setModelAlertsViewState"; + viewState: ModelAlertsViewState; +} + +interface OpenModelPackMessage { + t: "openModelPack"; + path: string; +} + +interface OpenActionsLogsMessage { + t: "openActionsLogs"; + variantAnalysisId: number; +} + +interface StopEvaluationRunMessage { + t: "stopEvaluationRun"; +} + +interface RevealModelMessage { + t: "revealModel"; + modeledMethod: ModeledMethod; +} + +export type ToModelAlertsMessage = + | SetModelAlertsViewStateMessage + | SetVariantAnalysisMessage + | SetRepoResultsMessage + | RevealModelMessage; + +export type FromModelAlertsMessage = + | CommonFromViewMessages + | OpenModelPackMessage + | OpenActionsLogsMessage + | StopEvaluationRunMessage + | RevealInEditorMessage; diff --git a/extensions/ql-vscode/src/common/invocation-rate-limiter.ts b/extensions/ql-vscode/src/common/invocation-rate-limiter.ts new file mode 100644 index 00000000000..a36feb4b3b3 --- /dev/null +++ b/extensions/ql-vscode/src/common/invocation-rate-limiter.ts @@ -0,0 +1,89 @@ +import type { Memento } from "./memento"; + +/** + * Provides a utility method to invoke a function only if a minimum time interval has elapsed since + * the last invocation of that function. + */ +export class InvocationRateLimiter { + constructor( + private readonly globalState: Memento, + private readonly funcIdentifier: string, + private readonly func: () => Promise, + private readonly createDate: (dateString?: string) => Date = (s) => + s ? new Date(s) : new Date(), + ) {} + + /** + * Invoke the function if `minSecondsSinceLastInvocation` seconds have elapsed since the last invocation. + */ + public async invokeFunctionIfIntervalElapsed( + minSecondsSinceLastInvocation: number, + ): Promise> { + const updateCheckStartDate = this.createDate(); + const lastInvocationDate = this.getLastInvocationDate(); + if ( + minSecondsSinceLastInvocation && + lastInvocationDate && + lastInvocationDate <= updateCheckStartDate && + lastInvocationDate.getTime() + minSecondsSinceLastInvocation * 1000 > + updateCheckStartDate.getTime() + ) { + return createRateLimitedResult(); + } + const result = await this.func(); + await this.setLastInvocationDate(updateCheckStartDate); + return createInvokedResult(result); + } + + private getLastInvocationDate(): Date | undefined { + const maybeDateString: string | undefined = this.globalState.get( + InvocationRateLimiter._invocationRateLimiterPrefix + this.funcIdentifier, + ); + return maybeDateString ? this.createDate(maybeDateString) : undefined; + } + + private async setLastInvocationDate(date: Date): Promise { + return await this.globalState.update( + InvocationRateLimiter._invocationRateLimiterPrefix + this.funcIdentifier, + date, + ); + } + + private static readonly _invocationRateLimiterPrefix = + "invocationRateLimiter_lastInvocationDate_"; +} + +export enum InvocationRateLimiterResultKind { + Invoked, + RateLimited, +} + +/** + * The function was invoked and returned the value `result`. + */ +interface InvokedResult { + kind: InvocationRateLimiterResultKind.Invoked; + result: T; +} + +/** + * The function was not invoked as the minimum interval since the last invocation had not elapsed. + */ +interface RateLimitedResult { + kind: InvocationRateLimiterResultKind.RateLimited; +} + +type InvocationRateLimiterResult = InvokedResult | RateLimitedResult; + +function createInvokedResult(result: T): InvokedResult { + return { + kind: InvocationRateLimiterResultKind.Invoked, + result, + }; +} + +function createRateLimitedResult(): RateLimitedResult { + return { + kind: InvocationRateLimiterResultKind.RateLimited, + }; +} diff --git a/extensions/ql-vscode/src/common/jsonl-reader.ts b/extensions/ql-vscode/src/common/jsonl-reader.ts new file mode 100644 index 00000000000..cff0dcf0ec2 --- /dev/null +++ b/extensions/ql-vscode/src/common/jsonl-reader.ts @@ -0,0 +1,62 @@ +import { stat } from "fs/promises"; +import { createReadStream } from "fs-extra"; +import type { BaseLogger } from "./logging"; +import { asError } from "./helpers-pure"; + +const doubleLineBreakRegexp = /\n\r?\n/; + +/** + * Read a file consisting of multiple JSON objects. Each object is separated from the previous one + * by a double newline sequence. This is basically a more human-readable form of JSONL. + * + * @param path The path to the file. + * @param handler Callback to be invoked for each top-level JSON object in order. + */ +export async function readJsonlFile( + path: string, + handler: (value: T) => Promise, + logger?: BaseLogger, +): Promise { + // Stream the data as large evaluator logs won't fit in memory. + // Also avoid using 'readline' as it is slower than our manual line splitting. + void logger?.log( + `Parsing ${path} (${(await stat(path)).size / 1024 / 1024} MB)...`, + ); + return new Promise((resolve, reject) => { + const stream = createReadStream(path, { encoding: "utf8" }); + let buffer = ""; + stream.on("data", async (chunk: string | Buffer) => { + if (typeof chunk !== "string") { + // This should never happen because we specify the encoding as "utf8". + throw new Error("Invalid chunk"); + } + + const parts = (buffer + chunk).split(doubleLineBreakRegexp); + buffer = parts.pop()!; + if (parts.length > 0) { + try { + stream.pause(); + for (const part of parts) { + await handler(JSON.parse(part)); + } + stream.resume(); + } catch (e) { + stream.destroy(); + reject(asError(e)); + } + } + }); + stream.on("end", async () => { + try { + if (buffer.trim().length > 0) { + await handler(JSON.parse(buffer)); + } + void logger?.log(`Finished parsing ${path}`); + resolve(); + } catch (e) { + reject(asError(e)); + } + }); + stream.on("error", reject); + }); +} diff --git a/extensions/ql-vscode/src/common/location-link-utils.ts b/extensions/ql-vscode/src/common/location-link-utils.ts new file mode 100644 index 00000000000..6ed58336e7a --- /dev/null +++ b/extensions/ql-vscode/src/common/location-link-utils.ts @@ -0,0 +1,27 @@ +import type { FileLink } from "../variant-analysis/shared/analysis-result"; + +export function createRemoteFileRef( + fileLink: FileLink, + startLine?: number, + endLine?: number, + startColumn?: number, + endColumn?: number, +): string { + if ( + startColumn && + endColumn && + startLine && + endLine && + // Verify that location information is valid; otherwise highlighting might be broken + ((startLine === endLine && startColumn < endColumn) || startLine < endLine) + ) { + // This relies on column highlighting of new code view on GitHub + return `${fileLink.fileLinkPrefix}/${fileLink.filePath}#L${startLine}C${startColumn}-L${endLine}C${endColumn}`; + } else if (startLine && endLine && startLine < endLine) { + return `${fileLink.fileLinkPrefix}/${fileLink.filePath}#L${startLine}-L${endLine}`; + } else if (startLine) { + return `${fileLink.fileLinkPrefix}/${fileLink.filePath}#L${startLine}`; + } else { + return `${fileLink.fileLinkPrefix}/${fileLink.filePath}`; + } +} diff --git a/extensions/ql-vscode/src/common/logging/index.ts b/extensions/ql-vscode/src/common/logging/index.ts new file mode 100644 index 00000000000..7c0e9a739db --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/index.ts @@ -0,0 +1,4 @@ +export * from "./logger"; +export * from "./notification-logger"; +export * from "./notifications"; +export * from "./tee-logger"; diff --git a/extensions/ql-vscode/src/common/logging/logger.ts b/extensions/ql-vscode/src/common/logging/logger.ts new file mode 100644 index 00000000000..a38d0fb2533 --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/logger.ts @@ -0,0 +1,29 @@ +export interface LogOptions { + // If false, don't output a trailing newline for the log entry. Default true. + trailingNewline?: boolean; +} + +/** Minimal logger interface. */ +export interface BaseLogger { + /** + * Writes the given log message, optionally followed by a newline. + * This function is asynchronous and will only resolve once the message is written + * to the side log (if required). It is not necessary to await the results of this + * function if you don't need to guarantee that the log writing is complete before + * continuing. + * + * @param message The message to log. + * @param options Optional settings. + */ + log(message: string, options?: LogOptions): Promise; +} + +/** Full logger interface, including a function to show the log in the UI. */ +export interface Logger extends BaseLogger { + /** + * Reveal the logger channel in the UI. + * + * @param preserveFocus When `true` the channel will not take focus. + */ + show(preserveFocus?: boolean): void; +} diff --git a/extensions/ql-vscode/src/common/logging/notification-logger.ts b/extensions/ql-vscode/src/common/logging/notification-logger.ts new file mode 100644 index 00000000000..cc9f635259e --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/notification-logger.ts @@ -0,0 +1,7 @@ +import type { Logger } from "./logger"; + +export interface NotificationLogger extends Logger { + showErrorMessage(message: string): Promise; + showWarningMessage(message: string): Promise; + showInformationMessage(message: string): Promise; +} diff --git a/extensions/ql-vscode/src/common/logging/notifications.ts b/extensions/ql-vscode/src/common/logging/notifications.ts new file mode 100644 index 00000000000..f592a91ccda --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/notifications.ts @@ -0,0 +1,116 @@ +import type { NotificationLogger } from "./notification-logger"; +import type { AppTelemetry } from "../telemetry"; +import type { RedactableError } from "../errors"; + +interface ShowAndLogOptions { + /** + * An alternate message that is added to the log, but not displayed in the popup. + * This is useful for adding extra detail to the logs that would be too noisy for the popup. + */ + fullMessage?: string; +} + +/** + * Show an error message and log it to the console + * + * @param logger The logger that will receive the message. + * @param message The message to show. + * @param options? See individual fields on `ShowAndLogOptions` type. + * + * @return A promise that resolves to the selected item or undefined when being dismissed. + */ +export async function showAndLogErrorMessage( + logger: NotificationLogger, + message: string, + options?: ShowAndLogOptions, +): Promise { + return internalShowAndLog( + logger, + dropLinesExceptInitial(message), + logger.showErrorMessage, + { fullMessage: message, ...options }, + ); +} + +function dropLinesExceptInitial(message: string, n = 2) { + return message.toString().split(/\r?\n/).slice(0, n).join("\n"); +} + +/** + * Show a warning message and log it to the console + * + * @param logger The logger that will receive the message. + * @param message The message to show. + * @param options? See individual fields on `ShowAndLogOptions` type. + * + * @return A promise that resolves to the selected item or undefined when being dismissed. + */ +export async function showAndLogWarningMessage( + logger: NotificationLogger, + message: string, + options?: ShowAndLogOptions, +): Promise { + return internalShowAndLog( + logger, + message, + logger.showWarningMessage, + options, + ); +} + +/** + * Show an information message and log it to the console + * + * @param logger The logger that will receive the message. + * @param message The message to show. + * @param options? See individual fields on `ShowAndLogOptions` type. + * + * @return A promise that resolves to the selected item or undefined when being dismissed. + */ +export async function showAndLogInformationMessage( + logger: NotificationLogger, + message: string, + options?: ShowAndLogOptions, +): Promise { + return internalShowAndLog( + logger, + message, + logger.showInformationMessage, + options, + ); +} + +async function internalShowAndLog( + logger: NotificationLogger, + message: string, + fn: (message: string) => Promise, + { fullMessage }: ShowAndLogOptions = {}, +): Promise { + void logger.log(fullMessage || message); + await fn.bind(logger)(message); +} + +interface ShowAndLogExceptionOptions extends ShowAndLogOptions { + /** Custom properties to include in the telemetry report. */ + extraTelemetryProperties?: { [key: string]: string }; +} + +/** + * Show an error message, log it to the console, and emit redacted information as telemetry + * + * @param logger The logger that will receive the message. + * @param telemetry The telemetry instance to use for reporting. + * @param error The error to show. Only redacted information will be included in the telemetry. + * @param options See individual fields on `ShowAndLogExceptionOptions` type. + * + * @return A promise that resolves to the selected item or undefined when being dismissed. + */ +export async function showAndLogExceptionWithTelemetry( + logger: NotificationLogger, + telemetry: AppTelemetry | undefined, + error: RedactableError, + options: ShowAndLogExceptionOptions = {}, +): Promise { + telemetry?.sendError(error, options.extraTelemetryProperties); + return showAndLogErrorMessage(logger, error.fullMessageWithStack, options); +} diff --git a/extensions/ql-vscode/src/common/logging/tee-logger.ts b/extensions/ql-vscode/src/common/logging/tee-logger.ts new file mode 100644 index 00000000000..991bcdd422c --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/tee-logger.ts @@ -0,0 +1,95 @@ +import { ensureFile } from "fs-extra"; +import { open } from "node:fs/promises"; +import type { FileHandle } from "node:fs/promises"; +import { isAbsolute } from "path"; +import { getErrorMessage } from "../helpers-pure"; +import type { Logger, LogOptions } from "./logger"; +import type { Disposable } from "../disposable-object"; + +/** + * An implementation of {@link Logger} that sends the output both to another {@link Logger} + * and to a file. + * + * The first time a message is written, an additional banner is written to the underlying logger + * pointing the user to the "side log" file. + */ +export class TeeLogger implements Logger, Disposable { + private emittedRedirectMessage = false; + private error = false; + private fileHandle: FileHandle | undefined = undefined; + + public constructor( + private readonly logger: Logger, + private readonly location: string, + ) { + if (!isAbsolute(location)) { + throw new Error( + `Additional Log Location must be an absolute path: ${location}`, + ); + } + } + + async log(message: string, options = {} as LogOptions): Promise { + if (!this.emittedRedirectMessage) { + this.emittedRedirectMessage = true; + const msg = `| Log being saved to ${this.location} |`; + const separator = new Array(msg.length).fill("-").join(""); + await this.logger.log(separator); + await this.logger.log(msg); + await this.logger.log(separator); + } + + if (!this.error) { + try { + if (!this.fileHandle) { + await ensureFile(this.location); + + this.fileHandle = await open(this.location, "a"); + } + + const trailingNewline = options.trailingNewline ?? true; + + await this.fileHandle.appendFile( + message + (trailingNewline ? "\n" : ""), + { + encoding: "utf8", + }, + ); + } catch (e) { + // Write an error message to the primary log, and stop trying to write to the side log. + this.error = true; + try { + await this.fileHandle?.close(); + } catch (e) { + void this.logger.log( + `Failed to close file handle: ${getErrorMessage(e)}`, + ); + } + this.fileHandle = undefined; + const errorMessage = getErrorMessage(e); + await this.logger.log( + `Error writing to additional log file: ${errorMessage}`, + ); + } + } + + if (!this.error) { + await this.logger.log(message, options); + } + } + + show(preserveFocus?: boolean): void { + this.logger.show(preserveFocus); + } + + dispose(): void { + try { + void this.fileHandle?.close(); + } catch (e) { + void this.logger.log( + `Failed to close file handle: ${getErrorMessage(e)}`, + ); + } + this.fileHandle = undefined; + } +} diff --git a/extensions/ql-vscode/src/common/logging/vscode/index.ts b/extensions/ql-vscode/src/common/logging/vscode/index.ts new file mode 100644 index 00000000000..38e8353b916 --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/vscode/index.ts @@ -0,0 +1,2 @@ +export * from "./loggers"; +export * from "./output-channel-logger"; diff --git a/extensions/ql-vscode/src/common/logging/vscode/loggers.ts b/extensions/ql-vscode/src/common/logging/vscode/loggers.ts new file mode 100644 index 00000000000..eee921210c1 --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/vscode/loggers.ts @@ -0,0 +1,33 @@ +/** + * This module contains instantiated loggers to use in the extension. + */ + +import { OutputChannelLogger } from "./output-channel-logger"; + +// Global logger for the extension. +export const extLogger = new OutputChannelLogger("CodeQL Extension Log"); + +// Logger for messages from the query server. +export const queryServerLogger = new OutputChannelLogger("CodeQL Query Server"); + +// Logger for messages from the query server for warming overlay-base cache. +let queryServerForWarmingOverlayBaseCacheLogger: + | OutputChannelLogger + | undefined; + +// construct queryServerForWarmingOverlayBaseCacheLogger lazily, as most users don't need it +export function getQueryServerForWarmingOverlayBaseCacheLogger(): OutputChannelLogger { + if (!queryServerForWarmingOverlayBaseCacheLogger) + queryServerForWarmingOverlayBaseCacheLogger = new OutputChannelLogger( + "CodeQL Query Server for warming overlay-base cache", + ); + return queryServerForWarmingOverlayBaseCacheLogger; +} + +// Logger for messages from the language server. +export const languageServerLogger = new OutputChannelLogger( + "CodeQL Language Server", +); + +// Logger for messages from tests. +export const testLogger = new OutputChannelLogger("CodeQL Tests"); diff --git a/extensions/ql-vscode/src/common/logging/vscode/output-channel-logger.ts b/extensions/ql-vscode/src/common/logging/vscode/output-channel-logger.ts new file mode 100644 index 00000000000..85a433dc57c --- /dev/null +++ b/extensions/ql-vscode/src/common/logging/vscode/output-channel-logger.ts @@ -0,0 +1,76 @@ +import type { OutputChannel, Progress } from "vscode"; +import { window as Window } from "vscode"; +import type { Logger, LogOptions } from "../logger"; +import { DisposableObject } from "../../disposable-object"; +import type { NotificationLogger } from "../notification-logger"; + +/** + * A logger that writes messages to an output channel in the VS Code Output tab. + */ +export class OutputChannelLogger + extends DisposableObject + implements Logger, NotificationLogger +{ + public readonly outputChannel: OutputChannel; + isCustomLogDirectory: boolean; + + constructor(title: string) { + super(); + this.outputChannel = Window.createOutputChannel(title); + this.push(this.outputChannel); + this.isCustomLogDirectory = false; + } + + async log(message: string, options = {} as LogOptions): Promise { + try { + if (options.trailingNewline === undefined) { + options.trailingNewline = true; + } + if (options.trailingNewline) { + this.outputChannel.appendLine(message); + } else { + this.outputChannel.append(message); + } + } catch (e) { + if (e instanceof Error && e.message === "Channel has been closed") { + // Output channel is closed logging to console instead + console.log( + "Output channel is closed logging to console instead:", + message, + ); + } else { + throw e; + } + } + } + + show(preserveFocus?: boolean): void { + this.outputChannel.show(preserveFocus); + } + + async showErrorMessage(message: string): Promise { + await this.showMessage(message, Window.showErrorMessage); + } + + async showInformationMessage(message: string): Promise { + await this.showMessage(message, Window.showInformationMessage); + } + + async showWarningMessage(message: string): Promise { + await this.showMessage(message, Window.showWarningMessage); + } + + private async showMessage( + message: string, + show: (message: string, ...items: string[]) => Thenable, + ): Promise { + const label = "View extension logs"; + const result = await show(message, label); + + if (result === label) { + this.show(); + } + } +} + +export type ProgressReporter = Progress<{ message: string }>; diff --git a/extensions/ql-vscode/src/common/memento.ts b/extensions/ql-vscode/src/common/memento.ts new file mode 100644 index 00000000000..325195484df --- /dev/null +++ b/extensions/ql-vscode/src/common/memento.ts @@ -0,0 +1,44 @@ +/** + * A memento represents a storage utility. It can store and retrieve + * values. + * + * It is an interface used by the VS Code API. We replicate it here + * to avoid the dependency to the VS Code API. + */ +export interface Memento { + /** + * Returns the stored keys. + * + * @return The stored keys. + */ + keys(): readonly string[]; + + /** + * Return a value. + * + * @param key A string. + * @return The stored value or `undefined`. + */ + get(key: string): T | undefined; + + /** + * Return a value. + * + * @param key A string. + * @param defaultValue A value that should be returned when there is no + * value (`undefined`) with the given key. + * @return The stored value or the defaultValue. + */ + get(key: string, defaultValue: T): T; + + /** + * Store a value. The value must be JSON-stringifyable. + * + * *Note* that using `undefined` as value removes the key from the underlying + * storage. + * + * @param key A string. + * @param value A value. MUST not contain cyclic references. + */ + update(key: string, value: T | undefined): Thenable; +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/gh-api-request.ts b/extensions/ql-vscode/src/common/mock-gh-api/gh-api-request.ts new file mode 100644 index 00000000000..b27533bccd1 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/gh-api-request.ts @@ -0,0 +1,129 @@ +import type { Repository } from "../../variant-analysis/gh-api/repository"; +import type { + VariantAnalysis, + VariantAnalysisRepoTask, +} from "../../variant-analysis/gh-api/variant-analysis"; + +// Types that represent requests/responses from the GitHub API +// that we need to mock. + +export enum RequestKind { + GetRepo = "getRepo", + SubmitVariantAnalysis = "submitVariantAnalysis", + GetVariantAnalysis = "getVariantAnalysis", + GetVariantAnalysisRepo = "getVariantAnalysisRepo", + GetVariantAnalysisRepoResult = "getVariantAnalysisRepoResult", + CodeSearch = "codeSearch", +} + +export interface BasicErrorResponse { + message: string; +} + +interface GetRepoRequest { + request: { + kind: RequestKind.GetRepo; + }; + response: { + status: number; + body: Repository | BasicErrorResponse | undefined; + }; +} + +interface SubmitVariantAnalysisRequest { + request: { + kind: RequestKind.SubmitVariantAnalysis; + }; + response: { + status: number; + body?: VariantAnalysis | BasicErrorResponse; + }; +} + +interface GetVariantAnalysisRequest { + request: { + kind: RequestKind.GetVariantAnalysis; + }; + response: { + status: number; + body?: VariantAnalysis | BasicErrorResponse; + }; +} + +interface GetVariantAnalysisRepoRequest { + request: { + kind: RequestKind.GetVariantAnalysisRepo; + repositoryId: number; + }; + response: { + status: number; + body?: VariantAnalysisRepoTask | BasicErrorResponse; + }; +} + +export interface GetVariantAnalysisRepoResultRequest { + request: { + kind: RequestKind.GetVariantAnalysisRepoResult; + repositoryId: number; + }; + response: { + status: number; + body?: ArrayBuffer | string; + contentType: string; + }; +} + +export interface CodeSearchResponse { + total_count: number; + items: Array<{ + repository: Repository; + }>; +} + +interface CodeSearchRequest { + request: { + kind: RequestKind.CodeSearch; + query: string; + }; + response: { + status: number; + body?: CodeSearchResponse | BasicErrorResponse; + }; +} + +export type GitHubApiRequest = + | GetRepoRequest + | SubmitVariantAnalysisRequest + | GetVariantAnalysisRequest + | GetVariantAnalysisRepoRequest + | GetVariantAnalysisRepoResultRequest + | CodeSearchRequest; + +export const isGetRepoRequest = ( + request: GitHubApiRequest, +): request is GetRepoRequest => request.request.kind === RequestKind.GetRepo; + +export const isSubmitVariantAnalysisRequest = ( + request: GitHubApiRequest, +): request is SubmitVariantAnalysisRequest => + request.request.kind === RequestKind.SubmitVariantAnalysis; + +export const isGetVariantAnalysisRequest = ( + request: GitHubApiRequest, +): request is GetVariantAnalysisRequest => + request.request.kind === RequestKind.GetVariantAnalysis; + +export const isGetVariantAnalysisRepoRequest = ( + request: GitHubApiRequest, +): request is GetVariantAnalysisRepoRequest => + request.request.kind === RequestKind.GetVariantAnalysisRepo; + +export const isGetVariantAnalysisRepoResultRequest = ( + request: GitHubApiRequest, +): request is GetVariantAnalysisRepoResultRequest => + request.request.kind === RequestKind.GetVariantAnalysisRepoResult; + +export const isCodeSearchRequest = ( + request: GitHubApiRequest, +): request is CodeSearchRequest => + request.request.kind === RequestKind.CodeSearch; diff --git a/extensions/ql-vscode/src/common/mock-gh-api/mock-gh-api-server.ts b/extensions/ql-vscode/src/common/mock-gh-api/mock-gh-api-server.ts new file mode 100644 index 00000000000..34f1a954861 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/mock-gh-api-server.ts @@ -0,0 +1,151 @@ +import { join, resolve } from "path"; +import { pathExists } from "fs-extra"; +import type { SetupServer } from "msw/node"; +import { setupServer } from "msw/node"; +import type { UnhandledRequestStrategy } from "msw/lib/core/utils/request/onUnhandledRequest"; + +import { DisposableObject } from "../disposable-object"; + +import { Recorder } from "./recorder"; +import { createRequestHandlers } from "./request-handlers"; +import { getDirectoryNamesInsidePath } from "../files"; + +/** + * Enables mocking of the GitHub API server via HTTP interception, using msw. + */ +export class MockGitHubApiServer extends DisposableObject { + private _isListening: boolean; + + private readonly server: SetupServer; + private readonly recorder: Recorder; + + constructor() { + super(); + this._isListening = false; + + this.server = setupServer(); + this.recorder = this.push(new Recorder(this.server)); + } + + public startServer( + onUnhandledRequest: UnhandledRequestStrategy = "bypass", + ): void { + if (this._isListening) { + return; + } + + this.server.listen({ onUnhandledRequest }); + this._isListening = true; + } + + public stopServer(): void { + this.server.close(); + this._isListening = false; + } + + public async loadScenario( + scenarioName: string, + scenariosPath?: string, + ): Promise { + if (!scenariosPath) { + scenariosPath = await this.getDefaultScenariosPath(); + if (!scenariosPath) { + return; + } + } + + const scenarioPath = join(scenariosPath, scenarioName); + + const handlers = await createRequestHandlers(scenarioPath); + this.server.resetHandlers(...handlers); + } + + public async saveScenario( + scenarioName: string, + scenariosPath?: string, + ): Promise { + if (!scenariosPath) { + scenariosPath = await this.getDefaultScenariosPath(); + if (!scenariosPath) { + throw new Error("Could not find scenarios path"); + } + } + + const filePath = await this.recorder.save(scenariosPath, scenarioName); + + await this.stopRecording(); + + return filePath; + } + + public async unloadScenario(): Promise { + if (!this.isScenarioLoaded) { + return; + } + + await this.unloadAllScenarios(); + } + + public async startRecording(): Promise { + if (this.recorder.isRecording) { + return; + } + + if (this.isScenarioLoaded) { + await this.unloadAllScenarios(); + } + + this.recorder.start(); + } + + public async stopRecording(): Promise { + this.recorder.stop(); + this.recorder.clear(); + } + + public async getScenarioNames(scenariosPath?: string): Promise { + if (!scenariosPath) { + scenariosPath = await this.getDefaultScenariosPath(); + if (!scenariosPath) { + return []; + } + } + + return await getDirectoryNamesInsidePath(scenariosPath); + } + + public get isListening(): boolean { + return this._isListening; + } + + public get isRecording(): boolean { + return this.recorder.isRecording; + } + + public get anyRequestsRecorded(): boolean { + return this.recorder.anyRequestsRecorded; + } + + public get isScenarioLoaded(): boolean { + return this.server.listHandlers().length > 0; + } + + public async getDefaultScenariosPath(): Promise { + // This should be the directory where package.json is located + const rootDirectory = resolve(__dirname, "../../.."); + + const scenariosPath = resolve( + rootDirectory, + "src/common/mock-gh-api/scenarios", + ); + if (await pathExists(scenariosPath)) { + return scenariosPath; + } + + return undefined; + } + + private async unloadAllScenarios(): Promise { + this.server.resetHandlers(); + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/recorder.ts b/extensions/ql-vscode/src/common/mock-gh-api/recorder.ts new file mode 100644 index 00000000000..4f82b0f5493 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/recorder.ts @@ -0,0 +1,293 @@ +import { ensureDir, writeFile } from "fs-extra"; +import { join } from "path"; + +import type { SetupServer } from "msw/node"; + +import { DisposableObject } from "../disposable-object"; +import { gzipDecode } from "../zlib"; + +import type { + BasicErrorResponse, + CodeSearchResponse, + GetVariantAnalysisRepoResultRequest, + GitHubApiRequest, +} from "./gh-api-request"; +import { RequestKind } from "./gh-api-request"; +import type { + VariantAnalysis, + VariantAnalysisRepoTask, +} from "../../variant-analysis/gh-api/variant-analysis"; +import type { Repository } from "../../variant-analysis/gh-api/repository"; + +export class Recorder extends DisposableObject { + private currentRecordedScenario: GitHubApiRequest[] = []; + + private _isRecording = false; + + constructor(private readonly server: SetupServer) { + super(); + this.onResponseBypass = this.onResponseBypass.bind(this); + } + + public get isRecording(): boolean { + return this._isRecording; + } + + public get anyRequestsRecorded(): boolean { + return this.currentRecordedScenario.length > 0; + } + + public start(): void { + if (this._isRecording) { + return; + } + + this._isRecording = true; + + this.clear(); + + this.server.events.on("response:bypass", this.onResponseBypass); + } + + public stop(): void { + if (!this._isRecording) { + return; + } + + this._isRecording = false; + + this.server.events.removeListener("response:bypass", this.onResponseBypass); + } + + public clear() { + this.currentRecordedScenario = []; + } + + public async save(scenariosPath: string, name: string): Promise { + const scenarioDirectory = join(scenariosPath, name); + + await ensureDir(scenarioDirectory); + + for (let i = 0; i < this.currentRecordedScenario.length; i++) { + const request = this.currentRecordedScenario[i]; + + const fileName = `${i}-${request.request.kind}.json`; + const filePath = join(scenarioDirectory, fileName); + + let writtenRequest = { + ...request, + }; + + if (shouldWriteBodyToFile(writtenRequest)) { + const extension = + writtenRequest.response.contentType === "application/zip" + ? "zip" + : "bin"; + + const bodyFileName = `${i}-${writtenRequest.request.kind}.body.${extension}`; + const bodyFilePath = join(scenarioDirectory, bodyFileName); + + let bodyFileLink = undefined; + if (writtenRequest.response.body) { + if (typeof writtenRequest.response.body === "string") { + await writeFile(bodyFilePath, writtenRequest.response.body); + } else { + await writeFile( + bodyFilePath, + Buffer.from(writtenRequest.response.body), + ); + } + bodyFileLink = `file:${bodyFileName}`; + } + + writtenRequest = { + ...writtenRequest, + response: { + ...writtenRequest.response, + body: bodyFileLink, + }, + }; + } + + await writeFile(filePath, JSON.stringify(writtenRequest, null, 2)); + } + + this.stop(); + + return scenarioDirectory; + } + + private async onResponseBypass({ + response, + request, + }: { + response: Response; + request: Request; + requestId: string; + }): Promise { + if (request.headers.has("x-vscode-codeql-msw-bypass")) { + return; + } + + const gitHubApiRequest = await createGitHubApiRequest( + request.url, + response, + ); + if (!gitHubApiRequest) { + return; + } + + this.currentRecordedScenario.push(gitHubApiRequest); + } +} + +async function createGitHubApiRequest( + url: string, + response: Response, +): Promise { + if (!url) { + return undefined; + } + + const status = response.status; + + if (url.match(/\/repos\/[a-zA-Z0-9-_.]+\/[a-zA-Z0-9-_.]+$/)) { + return { + request: { + kind: RequestKind.GetRepo, + }, + response: { + status, + body: await jsonResponseBody< + Repository | BasicErrorResponse | undefined + >(response), + }, + }; + } + + if ( + url.match(/\/repositories\/\d+\/code-scanning\/codeql\/variant-analyses$/) + ) { + return { + request: { + kind: RequestKind.SubmitVariantAnalysis, + }, + response: { + status, + body: await jsonResponseBody< + VariantAnalysis | BasicErrorResponse | undefined + >(response), + }, + }; + } + + if ( + url.match( + /\/repositories\/\d+\/code-scanning\/codeql\/variant-analyses\/\d+$/, + ) + ) { + return { + request: { + kind: RequestKind.GetVariantAnalysis, + }, + response: { + status, + body: await jsonResponseBody< + VariantAnalysis | BasicErrorResponse | undefined + >(response), + }, + }; + } + + const repoTaskMatch = url.match( + /\/repositories\/\d+\/code-scanning\/codeql\/variant-analyses\/\d+\/repositories\/(?\d+)$/, + ); + if (repoTaskMatch?.groups?.repositoryId) { + return { + request: { + kind: RequestKind.GetVariantAnalysisRepo, + repositoryId: parseInt(repoTaskMatch.groups.repositoryId, 10), + }, + response: { + status, + body: await jsonResponseBody< + VariantAnalysisRepoTask | BasicErrorResponse | undefined + >(response), + }, + }; + } + + // if url is a download URL for a variant analysis result, then it's a get-variant-analysis-repoResult. + const repoDownloadMatch = url.match( + /objects-origin\.githubusercontent\.com\/codeql-query-console\/codeql-variant-analysis-repo-tasks\/\d+\/(?\d+)/, + ); + if (repoDownloadMatch?.groups?.repositoryId) { + // msw currently doesn't support binary response bodies, so we need to download this separately + // see https://github.com/mswjs/interceptors/blob/15eafa6215a328219999403e3ff110e71699b016/src/interceptors/ClientRequest/utils/getIncomingMessageBody.ts#L24-L33 + // Essentially, mws is trying to decode a ZIP file as UTF-8 which changes the bytes and corrupts the file. + const response = await fetch(url, { + headers: { + // We need to ensure we don't end up in an infinite loop, since this request will also be intercepted + "x-vscode-codeql-msw-bypass": "true", + }, + }); + const responseBuffer = await response.arrayBuffer(); + + return { + request: { + kind: RequestKind.GetVariantAnalysisRepoResult, + repositoryId: parseInt(repoDownloadMatch.groups.repositoryId, 10), + }, + response: { + status: response.status, + body: responseBuffer, + contentType: + response.headers.get("content-type") ?? "application/octet-stream", + }, + }; + } + + const codeSearchMatch = url.match(/\/search\/code\?q=(?.*)$/); + if (codeSearchMatch?.groups?.query) { + return { + request: { + kind: RequestKind.CodeSearch, + query: codeSearchMatch?.groups?.query, + }, + response: { + status, + body: await jsonResponseBody< + CodeSearchResponse | BasicErrorResponse | undefined + >(response), + }, + }; + } + + return undefined; +} + +async function responseBody(response: Response): Promise { + const body = await response.arrayBuffer(); + const view = new Uint8Array(body); + + if (view[0] === 0x1f && view[1] === 0x8b) { + // Response body is gzipped, so we need to un-gzip it. + + return await gzipDecode(view); + } else { + return view; + } +} + +async function jsonResponseBody(response: Response): Promise { + const body = await responseBody(response); + const text = new TextDecoder("utf-8").decode(body); + + return JSON.parse(text) as T; +} + +function shouldWriteBodyToFile( + request: GitHubApiRequest, +): request is GetVariantAnalysisRepoResultRequest { + return request.response.body instanceof Buffer; +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/request-handlers.ts b/extensions/ql-vscode/src/common/mock-gh-api/request-handlers.ts new file mode 100644 index 00000000000..b6d3dc8b403 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/request-handlers.ts @@ -0,0 +1,231 @@ +import { join } from "path"; +import { readdir, readJson, readFile } from "fs-extra"; +import type { RequestHandler } from "msw"; +import { http } from "msw"; +import type { GitHubApiRequest } from "./gh-api-request"; +import { + isCodeSearchRequest, + isGetRepoRequest, + isGetVariantAnalysisRepoRequest, + isGetVariantAnalysisRepoResultRequest, + isGetVariantAnalysisRequest, + isSubmitVariantAnalysisRequest, +} from "./gh-api-request"; + +const baseUrl = "https://api.github.com"; + +const jsonResponse = ( + body: T, + init?: ResponseInit, + contentType = "application/json", +): Response => { + return new Response(JSON.stringify(body), { + ...init, + headers: { + "Content-Type": contentType, + ...init?.headers, + }, + }); +}; + +export async function createRequestHandlers( + scenarioDirPath: string, +): Promise { + const requests = await readRequestFiles(scenarioDirPath); + + const handlers = [ + createGetRepoRequestHandler(requests), + createSubmitVariantAnalysisRequestHandler(requests), + createGetVariantAnalysisRequestHandler(requests), + createGetVariantAnalysisRepoRequestHandler(requests), + createGetVariantAnalysisRepoResultRequestHandler(requests), + createCodeSearchRequestHandler(requests), + ]; + + return handlers; +} + +async function readRequestFiles( + scenarioDirPath: string, +): Promise { + const files = await readdir(scenarioDirPath); + + const orderedFiles = files.sort((a, b) => { + const aNum = parseInt(a.split("-")[0]); + const bNum = parseInt(b.split("-")[0]); + return aNum - bNum; + }); + + const requests: GitHubApiRequest[] = []; + for (const file of orderedFiles) { + if (!file.endsWith(".json")) { + continue; + } + + const filePath = join(scenarioDirPath, file); + const request: GitHubApiRequest = await readJson(filePath, { + encoding: "utf8", + }); + + if ( + typeof request.response.body === "string" && + request.response.body.startsWith("file:") + ) { + const buffer = await readFile( + join(scenarioDirPath, request.response.body.substring(5)), + ); + request.response.body = buffer.buffer; + } + + requests.push(request); + } + + return requests; +} + +function createGetRepoRequestHandler( + requests: GitHubApiRequest[], +): RequestHandler { + const getRepoRequests = requests.filter(isGetRepoRequest); + + if (getRepoRequests.length > 1) { + throw Error("More than one get repo request found"); + } + + const getRepoRequest = getRepoRequests[0]; + + return http.get(`${baseUrl}/repos/:owner/:name`, () => { + return jsonResponse(getRepoRequest.response.body, { + status: getRepoRequest.response.status, + }); + }); +} + +function createSubmitVariantAnalysisRequestHandler( + requests: GitHubApiRequest[], +): RequestHandler { + const submitVariantAnalysisRequests = requests.filter( + isSubmitVariantAnalysisRequest, + ); + + if (submitVariantAnalysisRequests.length > 1) { + throw Error("More than one submit variant analysis request found"); + } + + const getRepoRequest = submitVariantAnalysisRequests[0]; + + return http.post( + `${baseUrl}/repositories/:controllerRepoId/code-scanning/codeql/variant-analyses`, + () => { + return jsonResponse(getRepoRequest.response.body, { + status: getRepoRequest.response.status, + }); + }, + ); +} + +function createGetVariantAnalysisRequestHandler( + requests: GitHubApiRequest[], +): RequestHandler { + const getVariantAnalysisRequests = requests.filter( + isGetVariantAnalysisRequest, + ); + let requestIndex = 0; + + // During the lifetime of a variant analysis run, there are multiple requests + // to get the variant analysis. We need to return different responses for each + // request, so keep an index of the request and return the appropriate response. + return http.get( + `${baseUrl}/repositories/:controllerRepoId/code-scanning/codeql/variant-analyses/:variantAnalysisId`, + () => { + const request = getVariantAnalysisRequests[requestIndex]; + + if (requestIndex < getVariantAnalysisRequests.length - 1) { + // If there are more requests to come, increment the index. + requestIndex++; + } + + return jsonResponse(request.response.body, { + status: request.response.status, + }); + }, + ); +} + +function createGetVariantAnalysisRepoRequestHandler( + requests: GitHubApiRequest[], +): RequestHandler { + const getVariantAnalysisRepoRequests = requests.filter( + isGetVariantAnalysisRepoRequest, + ); + + return http.get( + `${baseUrl}/repositories/:controllerRepoId/code-scanning/codeql/variant-analyses/:variantAnalysisId/repositories/:repoId`, + ({ request, params }) => { + const scenarioRequest = getVariantAnalysisRepoRequests.find( + (r) => r.request.repositoryId.toString() === params.repoId, + ); + if (!scenarioRequest) { + throw Error(`No scenario request found for ${request.url}`); + } + + return jsonResponse(scenarioRequest.response.body, { + status: scenarioRequest.response.status, + }); + }, + ); +} + +function createGetVariantAnalysisRepoResultRequestHandler( + requests: GitHubApiRequest[], +): RequestHandler { + const getVariantAnalysisRepoResultRequests = requests.filter( + isGetVariantAnalysisRepoResultRequest, + ); + + return http.get( + "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/:variantAnalysisId/:repoId/*", + ({ request, params }) => { + const scenarioRequest = getVariantAnalysisRepoResultRequests.find( + (r) => r.request.repositoryId.toString() === params.repoId, + ); + if (!scenarioRequest) { + throw Error(`No scenario request found for ${request.url}`); + } + + if (scenarioRequest.response.body) { + return new Response(scenarioRequest.response.body, { + status: scenarioRequest.response.status, + headers: { + "Content-Type": scenarioRequest.response.contentType, + }, + }); + } else { + return new Response(null, { status: scenarioRequest.response.status }); + } + }, + ); +} + +function createCodeSearchRequestHandler( + requests: GitHubApiRequest[], +): RequestHandler { + const codeSearchRequests = requests.filter(isCodeSearchRequest); + let requestIndex = 0; + + // During a code search, there are multiple request to get pages of results. We + // need to return different responses for each request, so keep an index of the + // request and return the appropriate response. + return http.get(`${baseUrl}/search/code`, () => { + const request = codeSearchRequests[requestIndex]; + + if (requestIndex < codeSearchRequests.length - 1) { + // If there are more requests to come, increment the index. + requestIndex++; + } + + return jsonResponse(request.response.body, { + status: request.response.status, + }); + }); +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/0-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/0-codeSearch.json new file mode 100644 index 00000000000..e517513d300 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/0-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet%20project%20language%3Acsharp&per_page=100" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "Project.cs", + "path": "src/ProjectTemplates/Shared/Project.cs", + "sha": "b2b7e4f685020c2282e0cb75c1a808601c50c041", + "url": "https://api.github.com/repositories/17620347/contents/src/ProjectTemplates/Shared/Project.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/b2b7e4f685020c2282e0cb75c1a808601c50c041", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/ProjectTemplates/Shared/Project.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/dotnet-ef/Project.cs", + "sha": "dfe78a6f61b91850f75a40831236a60d53c7d669", + "url": "https://api.github.com/repositories/16157746/contents/src/dotnet-ef/Project.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/dfe78a6f61b91850f75a40831236a60d53c7d669", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/dotnet-ef/Project.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "PcaTrainer.cs", + "path": "src/Microsoft.ML.PCA/PcaTrainer.cs", + "sha": "1101f98fae131df5563e1b0348445c77ccb16cfc", + "url": "https://api.github.com/repositories/132021166/contents/src/Microsoft.ML.PCA/PcaTrainer.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/1101f98fae131df5563e1b0348445c77ccb16cfc", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/src/Microsoft.ML.PCA/PcaTrainer.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + }, + { + "name": "ProjectKey.cs", + "path": "src/Tools/BuildBoss/ProjectKey.cs", + "sha": "258d2389fe68b31a037cd04f199154ee0bce4064", + "url": "https://api.github.com/repositories/29078997/contents/src/Tools/BuildBoss/ProjectKey.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/258d2389fe68b31a037cd04f199154ee0bce4064", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Tools/BuildBoss/ProjectKey.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "build.cake", + "path": "build.cake", + "sha": "79ffca79367e4bbc20f10b476218893c51fe6b61", + "url": "https://api.github.com/repositories/262395224/contents/build.cake?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/79ffca79367e4bbc20f10b476218893c51fe6b61", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/build.cake", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "Error.cs", + "path": "src/Tasks/Error.cs", + "sha": "8cbca5f2ebdee63ea5a1df2da062081b930725db", + "url": "https://api.github.com/repositories/32051890/contents/src/Tasks/Error.cs?ref=946c584115367635c37ac7ecaadb2f36542f88b0", + "git_url": "https://api.github.com/repositories/32051890/git/blobs/8cbca5f2ebdee63ea5a1df2da062081b930725db", + "html_url": "https://github.com/dotnet/msbuild/blob/946c584115367635c37ac7ecaadb2f36542f88b0/src/Tasks/Error.cs", + "repository": { + "id": 32051890, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjA1MTg5MA==", + "name": "msbuild", + "full_name": "dotnet/msbuild", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/msbuild", + "description": "The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/msbuild", + "forks_url": "https://api.github.com/repos/dotnet/msbuild/forks", + "keys_url": "https://api.github.com/repos/dotnet/msbuild/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/msbuild/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/msbuild/teams", + "hooks_url": "https://api.github.com/repos/dotnet/msbuild/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/msbuild/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/msbuild/events", + "assignees_url": "https://api.github.com/repos/dotnet/msbuild/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/msbuild/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/msbuild/tags", + "blobs_url": "https://api.github.com/repos/dotnet/msbuild/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/msbuild/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/msbuild/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/msbuild/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/msbuild/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/msbuild/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/msbuild/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/msbuild/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/msbuild/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/msbuild/subscription", + "commits_url": "https://api.github.com/repos/dotnet/msbuild/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/msbuild/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/msbuild/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/msbuild/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/msbuild/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/msbuild/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/msbuild/merges", + "archive_url": "https://api.github.com/repos/dotnet/msbuild/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/msbuild/downloads", + "issues_url": "https://api.github.com/repos/dotnet/msbuild/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/msbuild/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/msbuild/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/msbuild/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/msbuild/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/msbuild/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/msbuild/deployments" + }, + "score": 1 + }, + { + "name": "ProjectIdResolver.cs", + "path": "src/Tools/Shared/SecretsHelpers/ProjectIdResolver.cs", + "sha": "d9c794586ae4771bf07bbf7f0f46cc0711b79c23", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Shared/SecretsHelpers/ProjectIdResolver.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/d9c794586ae4771bf07bbf7f0f46cc0711b79c23", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Shared/SecretsHelpers/ProjectIdResolver.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "LsifProject.cs", + "path": "src/Features/Lsif/Generator/Graph/LsifProject.cs", + "sha": "b196243abcad644ebaf5aecf43de80859455703c", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Lsif/Generator/Graph/LsifProject.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/b196243abcad644ebaf5aecf43de80859455703c", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Lsif/Generator/Graph/LsifProject.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "provisioning.csx", + "path": "eng/provisioning/provisioning.csx", + "sha": "22ff422ca66368c17882e12216f2e1f3b6ccc73a", + "url": "https://api.github.com/repositories/307816689/contents/eng/provisioning/provisioning.csx?ref=9294a8c8d87db7e08330d2c33174a0b455c01fdc", + "git_url": "https://api.github.com/repositories/307816689/git/blobs/22ff422ca66368c17882e12216f2e1f3b6ccc73a", + "html_url": "https://github.com/dotnet/Microsoft.Maui.Graphics/blob/9294a8c8d87db7e08330d2c33174a0b455c01fdc/eng/provisioning/provisioning.csx", + "repository": { + "id": 307816689, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDc4MTY2ODk=", + "name": "Microsoft.Maui.Graphics", + "full_name": "dotnet/Microsoft.Maui.Graphics", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Microsoft.Maui.Graphics", + "description": "An experimental cross-platform native graphics library.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics", + "forks_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/forks", + "keys_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/events", + "assignees_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/merges", + "archive_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics/deployments" + }, + "score": 1 + }, + { + "name": "android.cake", + "path": "eng/devices/android.cake", + "sha": "7974deb5577f22e026a99306ca6af866b0fddb78", + "url": "https://api.github.com/repositories/262395224/contents/eng/devices/android.cake?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/7974deb5577f22e026a99306ca6af866b0fddb78", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/eng/devices/android.cake", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "BundleProjectGenerator.cs", + "path": "src/ef/Generators/BundleProjectGenerator.cs", + "sha": "a828d208ba50a6cb272235d4b44d5cc95521e137", + "url": "https://api.github.com/repositories/16157746/contents/src/ef/Generators/BundleProjectGenerator.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/a828d208ba50a6cb272235d4b44d5cc95521e137", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/ef/Generators/BundleProjectGenerator.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "ProjectExtensions.cs", + "path": "src/Tools/Microsoft.dotnet-openapi/src/ProjectExtensions.cs", + "sha": "3d76c83170e867e2275216f4adf5c9e4e4868a10", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Microsoft.dotnet-openapi/src/ProjectExtensions.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/3d76c83170e867e2275216f4adf5c9e4e4868a10", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Microsoft.dotnet-openapi/src/ProjectExtensions.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "ProjectMap.cs", + "path": "src/Workspaces/Core/MSBuild/MSBuild/ProjectMap.cs", + "sha": "242809c13f33d39936dc1d96e34ec15b50f9093a", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/MSBuild/MSBuild/ProjectMap.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/242809c13f33d39936dc1d96e34ec15b50f9093a", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/MSBuild/MSBuild/ProjectMap.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "PCACatalog.cs", + "path": "src/Microsoft.ML.PCA/PCACatalog.cs", + "sha": "fb28765a0061b2137540c9f8bb6b4382cab545c8", + "url": "https://api.github.com/repositories/132021166/contents/src/Microsoft.ML.PCA/PCACatalog.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/fb28765a0061b2137540c9f8bb6b4382cab545c8", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/src/Microsoft.ML.PCA/PCACatalog.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray.cs", + "sha": "69ac799c32268960307141168a97049c410976d8", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/69ac799c32268960307141168a97049c410976d8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Exec.cs", + "path": "src/Tasks/Exec.cs", + "sha": "dbf4be1fc51385b5f13801cd948361eb4c82ba22", + "url": "https://api.github.com/repositories/32051890/contents/src/Tasks/Exec.cs?ref=946c584115367635c37ac7ecaadb2f36542f88b0", + "git_url": "https://api.github.com/repositories/32051890/git/blobs/dbf4be1fc51385b5f13801cd948361eb4c82ba22", + "html_url": "https://github.com/dotnet/msbuild/blob/946c584115367635c37ac7ecaadb2f36542f88b0/src/Tasks/Exec.cs", + "repository": { + "id": 32051890, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjA1MTg5MA==", + "name": "msbuild", + "full_name": "dotnet/msbuild", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/msbuild", + "description": "The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/msbuild", + "forks_url": "https://api.github.com/repos/dotnet/msbuild/forks", + "keys_url": "https://api.github.com/repos/dotnet/msbuild/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/msbuild/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/msbuild/teams", + "hooks_url": "https://api.github.com/repos/dotnet/msbuild/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/msbuild/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/msbuild/events", + "assignees_url": "https://api.github.com/repos/dotnet/msbuild/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/msbuild/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/msbuild/tags", + "blobs_url": "https://api.github.com/repos/dotnet/msbuild/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/msbuild/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/msbuild/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/msbuild/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/msbuild/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/msbuild/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/msbuild/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/msbuild/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/msbuild/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/msbuild/subscription", + "commits_url": "https://api.github.com/repos/dotnet/msbuild/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/msbuild/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/msbuild/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/msbuild/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/msbuild/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/msbuild/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/msbuild/merges", + "archive_url": "https://api.github.com/repos/dotnet/msbuild/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/msbuild/downloads", + "issues_url": "https://api.github.com/repos/dotnet/msbuild/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/msbuild/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/msbuild/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/msbuild/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/msbuild/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/msbuild/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/msbuild/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "build/Program.cs", + "sha": "e816a1c49e86bb479c27a9c800c9d641706de91d", + "url": "https://api.github.com/repositories/12191244/contents/build/Program.cs?ref=c4debeabe8472481ba9ff46c5ebb73f296295a85", + "git_url": "https://api.github.com/repositories/12191244/git/blobs/e816a1c49e86bb479c27a9c800c9d641706de91d", + "html_url": "https://github.com/dotnet/BenchmarkDotNet/blob/c4debeabe8472481ba9ff46c5ebb73f296295a85/build/Program.cs", + "repository": { + "id": 12191244, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE5MTI0NA==", + "name": "BenchmarkDotNet", + "full_name": "dotnet/BenchmarkDotNet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/BenchmarkDotNet", + "description": "Powerful .NET library for benchmarking", + "fork": false, + "url": "https://api.github.com/repos/dotnet/BenchmarkDotNet", + "forks_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/forks", + "keys_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/events", + "assignees_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/merges", + "archive_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/BenchmarkDotNet/deployments" + }, + "score": 1 + }, + { + "name": "Xcode.cs", + "path": "src/tasks/AppleAppBuilder/Xcode.cs", + "sha": "dc01dadd30e8f298219008e75f2d09dfb76d8f73", + "url": "https://api.github.com/repositories/210716005/contents/src/tasks/AppleAppBuilder/Xcode.cs?ref=79c2669e8551ba0f42f04e4bea9e1e692dca6d17", + "git_url": "https://api.github.com/repositories/210716005/git/blobs/dc01dadd30e8f298219008e75f2d09dfb76d8f73", + "html_url": "https://github.com/dotnet/runtime/blob/79c2669e8551ba0f42f04e4bea9e1e692dca6d17/src/tasks/AppleAppBuilder/Xcode.cs", + "repository": { + "id": 210716005, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTA3MTYwMDU=", + "name": "runtime", + "full_name": "dotnet/runtime", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/runtime", + "description": ".NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/runtime", + "forks_url": "https://api.github.com/repos/dotnet/runtime/forks", + "keys_url": "https://api.github.com/repos/dotnet/runtime/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/runtime/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/runtime/teams", + "hooks_url": "https://api.github.com/repos/dotnet/runtime/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/runtime/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/runtime/events", + "assignees_url": "https://api.github.com/repos/dotnet/runtime/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/runtime/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/runtime/tags", + "blobs_url": "https://api.github.com/repos/dotnet/runtime/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/runtime/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/runtime/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/runtime/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/runtime/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/runtime/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/runtime/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/runtime/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/runtime/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/runtime/subscription", + "commits_url": "https://api.github.com/repos/dotnet/runtime/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/runtime/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/runtime/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/runtime/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/runtime/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/runtime/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/runtime/merges", + "archive_url": "https://api.github.com/repos/dotnet/runtime/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/runtime/downloads", + "issues_url": "https://api.github.com/repos/dotnet/runtime/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/runtime/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/runtime/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/runtime/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/runtime/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/runtime/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/runtime/deployments" + }, + "score": 1 + }, + { + "name": "ContextCommandBase.cs", + "path": "src/ef/Commands/ContextCommandBase.cs", + "sha": "f778b561f298a797c91acbe4867e49ee6fdef929", + "url": "https://api.github.com/repositories/16157746/contents/src/ef/Commands/ContextCommandBase.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/f778b561f298a797c91acbe4867e49ee6fdef929", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/ef/Commands/ContextCommandBase.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "Options.cs", + "path": "src/Tools/Source/RunTests/Options.cs", + "sha": "d3ce7af3ed56d50a3c5ebad3a6bc9f92623b43c2", + "url": "https://api.github.com/repositories/29078997/contents/src/Tools/Source/RunTests/Options.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/d3ce7af3ed56d50a3c5ebad3a6bc9f92623b43c2", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Tools/Source/RunTests/Options.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineOptions.cs", + "path": "src/Tools/dotnet-user-secrets/src/CommandLineOptions.cs", + "sha": "af97626c7d89814cb9bdf23712349c174e17d298", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-secrets/src/CommandLineOptions.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/af97626c7d89814cb9bdf23712349c174e17d298", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-secrets/src/CommandLineOptions.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "RootComponent.cs", + "path": "src/BlazorWebView/src/Wpf/RootComponent.cs", + "sha": "c119af42a054debe2a1b2dbe5e7fd6692da7dc63", + "url": "https://api.github.com/repositories/262395224/contents/src/BlazorWebView/src/Wpf/RootComponent.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/c119af42a054debe2a1b2dbe5e7fd6692da7dc63", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/BlazorWebView/src/Wpf/RootComponent.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "Flex.cs", + "path": "src/Core/src/Layouts/Flex.cs", + "sha": "381462e1c5fc096fa0ea2780dfff8bde267e5f80", + "url": "https://api.github.com/repositories/262395224/contents/src/Core/src/Layouts/Flex.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/381462e1c5fc096fa0ea2780dfff8bde267e5f80", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/Core/src/Layouts/Flex.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "ErrorCode.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs", + "sha": "683d84b2055c161273741984bdbd427c45cc6818", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/683d84b2055c161273741984bdbd427c45cc6818", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SyntaxParser.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Parser/SyntaxParser.cs", + "sha": "baa4e8f84410ffa5aff849d553eb80673d699d4c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Parser/SyntaxParser.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/baa4e8f84410ffa5aff849d553eb80673d699d4c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Parser/SyntaxParser.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "samples/dependadotnet/Program.cs", + "sha": "5a11beb799102a178d4daa57b039995737a64cbf", + "url": "https://api.github.com/repositories/26784827/contents/samples/dependadotnet/Program.cs?ref=51d61b7b346f92f62ea49bc79e3bef01b060234f", + "git_url": "https://api.github.com/repositories/26784827/git/blobs/5a11beb799102a178d4daa57b039995737a64cbf", + "html_url": "https://github.com/dotnet/core/blob/51d61b7b346f92f62ea49bc79e3bef01b060234f/samples/dependadotnet/Program.cs", + "repository": { + "id": 26784827, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjc4NDgyNw==", + "name": "core", + "full_name": "dotnet/core", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/core", + "description": "Home repository for .NET Core", + "fork": false, + "url": "https://api.github.com/repos/dotnet/core", + "forks_url": "https://api.github.com/repos/dotnet/core/forks", + "keys_url": "https://api.github.com/repos/dotnet/core/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/core/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/core/teams", + "hooks_url": "https://api.github.com/repos/dotnet/core/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/core/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/core/events", + "assignees_url": "https://api.github.com/repos/dotnet/core/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/core/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/core/tags", + "blobs_url": "https://api.github.com/repos/dotnet/core/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/core/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/core/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/core/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/core/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/core/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/core/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/core/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/core/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/core/subscription", + "commits_url": "https://api.github.com/repos/dotnet/core/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/core/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/core/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/core/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/core/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/core/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/core/merges", + "archive_url": "https://api.github.com/repos/dotnet/core/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/core/downloads", + "issues_url": "https://api.github.com/repos/dotnet/core/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/core/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/core/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/core/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/core/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/core/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/core/deployments" + }, + "score": 1 + }, + { + "name": "KeyCommand.cs", + "path": "src/Tools/dotnet-user-jwts/src/Commands/KeyCommand.cs", + "sha": "55454b71693e222fe418f77c5c05d543b41a152d", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-jwts/src/Commands/KeyCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/55454b71693e222fe418f77c5c05d543b41a152d", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-jwts/src/Commands/KeyCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "GenericHostBuilderExtensions.cs", + "path": "src/DefaultBuilder/src/GenericHostBuilderExtensions.cs", + "sha": "f61d482b4066ce9df4a333ad0ccf6bedf36bcced", + "url": "https://api.github.com/repositories/17620347/contents/src/DefaultBuilder/src/GenericHostBuilderExtensions.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/f61d482b4066ce9df4a333ad0ccf6bedf36bcced", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/DefaultBuilder/src/GenericHostBuilderExtensions.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "ThrowHelper.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ThrowHelper.cs", + "sha": "6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ThrowHelper.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ThrowHelper.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RemoveCommand.cs", + "path": "src/Tools/dotnet-user-jwts/src/Commands/RemoveCommand.cs", + "sha": "0c3a69eaf40e79857fea3c4d8d0cacdfcaa9a4f3", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-jwts/src/Commands/RemoveCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/0c3a69eaf40e79857fea3c4d8d0cacdfcaa9a4f3", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-jwts/src/Commands/RemoveCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "PathKind.cs", + "path": "src/Compilers/Core/Portable/FileSystem/PathKind.cs", + "sha": "573eef19e47ae6b1ef8edeee56127e8eb79b0186", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/FileSystem/PathKind.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/573eef19e47ae6b1ef8edeee56127e8eb79b0186", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/FileSystem/PathKind.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RegexClassifierBenchmarks.cs", + "path": "src/Tools/IdeBenchmarks/RegexClassifierBenchmarks.cs", + "sha": "d79e6c2a5f1bc7a1cc92f425b6cc1f0e8133c8ac", + "url": "https://api.github.com/repositories/29078997/contents/src/Tools/IdeBenchmarks/RegexClassifierBenchmarks.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/d79e6c2a5f1bc7a1cc92f425b6cc1f0e8133c8ac", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Tools/IdeBenchmarks/RegexClassifierBenchmarks.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RQVoidType.cs", + "path": "src/Features/Core/Portable/RQName/Nodes/RQVoidType.cs", + "sha": "4210dfda8693068a8c42205de21234de7ec6db06", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/RQName/Nodes/RQVoidType.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/4210dfda8693068a8c42205de21234de7ec6db06", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/RQName/Nodes/RQVoidType.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ProjectOptions.cs", + "path": "src/Tools/dotnet-getdocument/src/ProjectOptions.cs", + "sha": "f2b55eec5eb2de63819a9755c28beb7b9cbec762", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-getdocument/src/ProjectOptions.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/f2b55eec5eb2de63819a9755c28beb7b9cbec762", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-getdocument/src/ProjectOptions.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "ProjectCommandBase.cs", + "path": "src/Tools/GetDocumentInsider/src/Commands/ProjectCommandBase.cs", + "sha": "823f3fe88378a2cad2827a0055621d6a9ed3b77a", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/GetDocumentInsider/src/Commands/ProjectCommandBase.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/823f3fe88378a2cad2827a0055621d6a9ed3b77a", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/GetDocumentInsider/src/Commands/ProjectCommandBase.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "ProjectCommandBase.cs", + "path": "src/dotnet-ef/Commands/ProjectCommandBase.cs", + "sha": "5aeb80372d41139c0933e142a6d5fffefea36597", + "url": "https://api.github.com/repositories/16157746/contents/src/dotnet-ef/Commands/ProjectCommandBase.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/5aeb80372d41139c0933e142a6d5fffefea36597", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/dotnet-ef/Commands/ProjectCommandBase.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "Csc.cs", + "path": "src/Compilers/Core/MSBuildTask/Csc.cs", + "sha": "ea3fd91183d8458a6ab69223f0601336a3dab391", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/MSBuildTask/Csc.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/ea3fd91183d8458a6ab69223f0601336a3dab391", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/MSBuildTask/Csc.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "TypeInfo.cs", + "path": "src/Compilers/CSharp/Portable/Compilation/TypeInfo.cs", + "sha": "68de547a3edb6a20785eddf71a66b0d9e8140266", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Compilation/TypeInfo.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/68de547a3edb6a20785eddf71a66b0d9e8140266", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Compilation/TypeInfo.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SyntaxKind.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Syntax/SyntaxKind.cs", + "sha": "bb0108538a18b29b96d9f2b5fa52fe63f7bacd1c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Syntax/SyntaxKind.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/bb0108538a18b29b96d9f2b5fa52fe63f7bacd1c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Syntax/SyntaxKind.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TypeofBinder.cs", + "path": "src/Compilers/CSharp/Portable/Binder/TypeofBinder.cs", + "sha": "279fbd58e052c3b3ab9735621dce4bc0de027220", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Binder/TypeofBinder.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/279fbd58e052c3b3ab9735621dce4bc0de027220", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Binder/TypeofBinder.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ImportAdder.cs", + "path": "src/Workspaces/Core/Portable/Editing/ImportAdder.cs", + "sha": "3659aeec125c1c71940b37b8b2269a04d1595da3", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Editing/ImportAdder.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/3659aeec125c1c71940b37b8b2269a04d1595da3", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Editing/ImportAdder.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "BaseCommand.cs", + "path": "src/Tools/Microsoft.dotnet-openapi/src/Commands/BaseCommand.cs", + "sha": "007c287e29ba87edee89adbf87a216e511dcfae9", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Microsoft.dotnet-openapi/src/Commands/BaseCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/007c287e29ba87edee89adbf87a216e511dcfae9", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Microsoft.dotnet-openapi/src/Commands/BaseCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "MakeDir.cs", + "path": "src/Tasks/MakeDir.cs", + "sha": "eb7d2ef328170e22cf0de5a075848757598533a9", + "url": "https://api.github.com/repositories/32051890/contents/src/Tasks/MakeDir.cs?ref=946c584115367635c37ac7ecaadb2f36542f88b0", + "git_url": "https://api.github.com/repositories/32051890/git/blobs/eb7d2ef328170e22cf0de5a075848757598533a9", + "html_url": "https://github.com/dotnet/msbuild/blob/946c584115367635c37ac7ecaadb2f36542f88b0/src/Tasks/MakeDir.cs", + "repository": { + "id": 32051890, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjA1MTg5MA==", + "name": "msbuild", + "full_name": "dotnet/msbuild", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/msbuild", + "description": "The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/msbuild", + "forks_url": "https://api.github.com/repos/dotnet/msbuild/forks", + "keys_url": "https://api.github.com/repos/dotnet/msbuild/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/msbuild/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/msbuild/teams", + "hooks_url": "https://api.github.com/repos/dotnet/msbuild/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/msbuild/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/msbuild/events", + "assignees_url": "https://api.github.com/repos/dotnet/msbuild/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/msbuild/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/msbuild/tags", + "blobs_url": "https://api.github.com/repos/dotnet/msbuild/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/msbuild/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/msbuild/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/msbuild/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/msbuild/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/msbuild/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/msbuild/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/msbuild/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/msbuild/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/msbuild/subscription", + "commits_url": "https://api.github.com/repos/dotnet/msbuild/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/msbuild/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/msbuild/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/msbuild/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/msbuild/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/msbuild/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/msbuild/merges", + "archive_url": "https://api.github.com/repos/dotnet/msbuild/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/msbuild/downloads", + "issues_url": "https://api.github.com/repos/dotnet/msbuild/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/msbuild/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/msbuild/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/msbuild/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/msbuild/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/msbuild/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/msbuild/deployments" + }, + "score": 1 + }, + { + "name": "IISExpressDeployer.cs", + "path": "src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs", + "sha": "951491335c543561d68fecfb50a3c02853f4b64e", + "url": "https://api.github.com/repositories/17620347/contents/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/951491335c543561d68fecfb50a3c02853f4b64e", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "MapRenderer.cs", + "path": "src/Compatibility/Maps/src/Android/MapRenderer.cs", + "sha": "fe526759bf13b52532139bb41b24bd97b2b4e744", + "url": "https://api.github.com/repositories/262395224/contents/src/Compatibility/Maps/src/Android/MapRenderer.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/fe526759bf13b52532139bb41b24bd97b2b4e744", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/Compatibility/Maps/src/Android/MapRenderer.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "PublicKey.cs", + "path": "src/Microsoft.ML.Core/PublicKey.cs", + "sha": "639817b83fc31613f0ccb51a02fad04671ac1450", + "url": "https://api.github.com/repositories/132021166/contents/src/Microsoft.ML.Core/PublicKey.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/639817b83fc31613f0ccb51a02fad04671ac1450", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/src/Microsoft.ML.Core/PublicKey.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + }, + { + "name": "TestRunner.cs", + "path": "eng/tools/HelixTestRunner/TestRunner.cs", + "sha": "5524d967b54bcaafb78791ae53df52fe9a9366f2", + "url": "https://api.github.com/repositories/17620347/contents/eng/tools/HelixTestRunner/TestRunner.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/5524d967b54bcaafb78791ae53df52fe9a9366f2", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/eng/tools/HelixTestRunner/TestRunner.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "TemplatePackageInstaller.cs", + "path": "src/ProjectTemplates/Shared/TemplatePackageInstaller.cs", + "sha": "05ed84845f1a26c3d720196a4a45823bfbf1217d", + "url": "https://api.github.com/repositories/17620347/contents/src/ProjectTemplates/Shared/TemplatePackageInstaller.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/05ed84845f1a26c3d720196a4a45823bfbf1217d", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/ProjectTemplates/Shared/TemplatePackageInstaller.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "DefaultHttpContext.cs", + "path": "src/Http/Http/src/DefaultHttpContext.cs", + "sha": "2439fc48efe9c8e1d4c449c69fb969f8a5bd7f38", + "url": "https://api.github.com/repositories/17620347/contents/src/Http/Http/src/DefaultHttpContext.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/2439fc48efe9c8e1d4c449c69fb969f8a5bd7f38", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Http/Http/src/DefaultHttpContext.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.AssemblyFixtures.cs", + "path": "src/ProjectTemplates/Shared/AssemblyInfo.AssemblyFixtures.cs", + "sha": "b89b6eee9054bf3adc36cd094f4488153260a7ba", + "url": "https://api.github.com/repositories/17620347/contents/src/ProjectTemplates/Shared/AssemblyInfo.AssemblyFixtures.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/b89b6eee9054bf3adc36cd094f4488153260a7ba", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/ProjectTemplates/Shared/AssemblyInfo.AssemblyFixtures.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "SeleniumStandaloneServer.cs", + "path": "src/Shared/E2ETesting/SeleniumStandaloneServer.cs", + "sha": "a635d47f985d3c0b28f6fb59c8cadbe87ee0aad8", + "url": "https://api.github.com/repositories/17620347/contents/src/Shared/E2ETesting/SeleniumStandaloneServer.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/a635d47f985d3c0b28f6fb59c8cadbe87ee0aad8", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Shared/E2ETesting/SeleniumStandaloneServer.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "AddCommand.cs", + "path": "src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs", + "sha": "e4066cdf2e83285af62f4851fdf8ee2c539ac0a8", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/e4066cdf2e83285af62f4851fdf8ee2c539ac0a8", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "TestPathUtilities.cs", + "path": "src/Testing/src/TestPathUtilities.cs", + "sha": "42ca974cff8767a365625c7446a1b0bccd814d2b", + "url": "https://api.github.com/repositories/17620347/contents/src/Testing/src/TestPathUtilities.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/42ca974cff8767a365625c7446a1b0bccd814d2b", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Testing/src/TestPathUtilities.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "BlazorTemplateTest.cs", + "path": "src/ProjectTemplates/Shared/BlazorTemplateTest.cs", + "sha": "26e4ef47a6fe7dac2dbec54d61cc1135124c7f3c", + "url": "https://api.github.com/repositories/17620347/contents/src/ProjectTemplates/Shared/BlazorTemplateTest.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/26e4ef47a6fe7dac2dbec54d61cc1135124c7f3c", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/ProjectTemplates/Shared/BlazorTemplateTest.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "MAML.cs", + "path": "src/Microsoft.ML.Maml/MAML.cs", + "sha": "a2233d8ca9597d4417e43d5bbcbb846337af4e3a", + "url": "https://api.github.com/repositories/132021166/contents/src/Microsoft.ML.Maml/MAML.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/a2233d8ca9597d4417e43d5bbcbb846337af4e3a", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/src/Microsoft.ML.Maml/MAML.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + }, + { + "name": "TestConfig.cs", + "path": "src/TestUtils/src/TestUtils.Appium/TestConfig.cs", + "sha": "56c962dad15a4f4cfe3ed63b44f89e14cf82abf4", + "url": "https://api.github.com/repositories/262395224/contents/src/TestUtils/src/TestUtils.Appium/TestConfig.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/56c962dad15a4f4cfe3ed63b44f89e14cf82abf4", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/TestUtils/src/TestUtils.Appium/TestConfig.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "RazorFileHierarchy.cs", + "path": "src/Mvc/Mvc.Razor/src/RazorFileHierarchy.cs", + "sha": "d4f3705606c1f3876eedfaf5b7aad1c65f1ac9aa", + "url": "https://api.github.com/repositories/17620347/contents/src/Mvc/Mvc.Razor/src/RazorFileHierarchy.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/d4f3705606c1f3876eedfaf5b7aad1c65f1ac9aa", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Mvc/Mvc.Razor/src/RazorFileHierarchy.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "GlobalSuppressions.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/GlobalSuppressions.cs", + "sha": "8126b1aac2b091aa706a4f109ca0bf39cdb2da48", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/GlobalSuppressions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/8126b1aac2b091aa706a4f109ca0bf39cdb2da48", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/GlobalSuppressions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "catalyst.cake", + "path": "eng/devices/catalyst.cake", + "sha": "ca71b904ee7a00aa93dc63891e0d87bc17dc2931", + "url": "https://api.github.com/repositories/262395224/contents/eng/devices/catalyst.cake?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/ca71b904ee7a00aa93dc63891e0d87bc17dc2931", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/eng/devices/catalyst.cake", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "TemporaryCSharpProject.cs", + "path": "src/Tools/Shared/TestHelpers/TemporaryCSharpProject.cs", + "sha": "f1e1380472aba3d9ed2a60792268704be001b87a", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Shared/TestHelpers/TemporaryCSharpProject.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/f1e1380472aba3d9ed2a60792268704be001b87a", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Shared/TestHelpers/TemporaryCSharpProject.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/roslyn/src/Features/Lsif/Generator/Program.cs", + "sha": "221ff91d14f2bddacbc418c6cd0cff54b0118b73", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Lsif/Generator/Program.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/221ff91d14f2bddacbc418c6cd0cff54b0118b73", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Lsif/Generator/Program.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PrintCommand.cs", + "path": "src/Tools/dotnet-user-jwts/src/Commands/PrintCommand.cs", + "sha": "718f52c620037c8a237990066a0ff98cadf093d2", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-jwts/src/Commands/PrintCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/718f52c620037c8a237990066a0ff98cadf093d2", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-jwts/src/Commands/PrintCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "provisioning.csx", + "path": "eng/provisioning/provisioning.csx", + "sha": "be44c58905b36f1d4657725fe1cf0cb2b01c04b4", + "url": "https://api.github.com/repositories/322394142/contents/eng/provisioning/provisioning.csx?ref=dc73de97dfde188ab85f72bc58e8d335bc396ef2", + "git_url": "https://api.github.com/repositories/322394142/git/blobs/be44c58905b36f1d4657725fe1cf0cb2b01c04b4", + "html_url": "https://github.com/dotnet/Microsoft.Maui.Graphics.Controls/blob/dc73de97dfde188ab85f72bc58e8d335bc396ef2/eng/provisioning/provisioning.csx", + "repository": { + "id": 322394142, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjIzOTQxNDI=", + "name": "Microsoft.Maui.Graphics.Controls", + "full_name": "dotnet/Microsoft.Maui.Graphics.Controls", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Microsoft.Maui.Graphics.Controls", + "description": "Experimental Microsoft.Maui.Graphics.Controls - Build drawn controls (Cupertino, Fluent and Material)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls", + "forks_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/forks", + "keys_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/events", + "assignees_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/merges", + "archive_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Microsoft.Maui.Graphics.Controls/deployments" + }, + "score": 1 + }, + { + "name": "Xcode.cs", + "path": "src/runtime/src/tasks/AppleAppBuilder/Xcode.cs", + "sha": "616d267f53af96a90d867a329bce3233bc7caa5c", + "url": "https://api.github.com/repositories/550902717/contents/src/runtime/src/tasks/AppleAppBuilder/Xcode.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/616d267f53af96a90d867a329bce3233bc7caa5c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/runtime/src/tasks/AppleAppBuilder/Xcode.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SigningKeysHandler.cs", + "path": "src/Tools/dotnet-user-jwts/src/Helpers/SigningKeysHandler.cs", + "sha": "e533cc1e179f2a16237797a01a285eacb80efbc8", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-jwts/src/Helpers/SigningKeysHandler.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/e533cc1e179f2a16237797a01a285eacb80efbc8", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-jwts/src/Helpers/SigningKeysHandler.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "ChecksumValidator.cs", + "path": "src/Mvc/Mvc.Razor.RuntimeCompilation/src/ChecksumValidator.cs", + "sha": "c196a93f69a518a6d013c6fedab0526eb999228c", + "url": "https://api.github.com/repositories/17620347/contents/src/Mvc/Mvc.Razor.RuntimeCompilation/src/ChecksumValidator.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/c196a93f69a518a6d013c6fedab0526eb999228c", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Mvc/Mvc.Razor.RuntimeCompilation/src/ChecksumValidator.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/Tools/dotnet-user-secrets/src/Program.cs", + "sha": "f01b7e434678a7e3a4b74734328e42b85d792155", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-secrets/src/Program.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/f01b7e434678a7e3a4b74734328e42b85d792155", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-secrets/src/Program.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "AnimatableKey.cs", + "path": "src/Controls/src/Core/AnimatableKey.cs", + "sha": "a34e1f46708a3a224c29f2a20207ff9e55628fe4", + "url": "https://api.github.com/repositories/262395224/contents/src/Controls/src/Core/AnimatableKey.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/a34e1f46708a3a224c29f2a20207ff9e55628fe4", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/Controls/src/Core/AnimatableKey.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "RuntimeViewCompiler.cs", + "path": "src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeViewCompiler.cs", + "sha": "b291f04441057c57092eb6e4731956b1be2d8bd6", + "url": "https://api.github.com/repositories/17620347/contents/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeViewCompiler.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/b291f04441057c57092eb6e4731956b1be2d8bd6", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeViewCompiler.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "SourceInfo.cs", + "path": "src/Core/src/VisualDiagnostics/SourceInfo.cs", + "sha": "9181be3ffc2640beb7528e0cb5aea487fff2fbfb", + "url": "https://api.github.com/repositories/262395224/contents/src/Core/src/VisualDiagnostics/SourceInfo.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/9181be3ffc2640beb7528e0cb5aea487fff2fbfb", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/Core/src/VisualDiagnostics/SourceInfo.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "PageDirectiveFeature.cs", + "path": "src/Mvc/Mvc.Razor.RuntimeCompilation/src/PageDirectiveFeature.cs", + "sha": "5c48d3677925ec1ddb6dcda111904dcbe54b8d2e", + "url": "https://api.github.com/repositories/17620347/contents/src/Mvc/Mvc.Razor.RuntimeCompilation/src/PageDirectiveFeature.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/5c48d3677925ec1ddb6dcda111904dcbe54b8d2e", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Mvc/Mvc.Razor.RuntimeCompilation/src/PageDirectiveFeature.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "AddURLCommand.cs", + "path": "src/Tools/Microsoft.dotnet-openapi/src/Commands/AddURLCommand.cs", + "sha": "14cb18c4d5a8050343a5037f128c546df8c5f8d5", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddURLCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/14cb18c4d5a8050343a5037f128c546df8c5f8d5", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddURLCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "AddFileCommand.cs", + "path": "src/Tools/Microsoft.dotnet-openapi/src/Commands/AddFileCommand.cs", + "sha": "c4b44c4b26674760b71ad70cd74da63d9a8bea0c", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddFileCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/c4b44c4b26674760b71ad70cd74da63d9a8bea0c", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddFileCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "TestUrlHelper.cs", + "path": "src/Hosting/Server.IntegrationTesting/src/Common/TestUrlHelper.cs", + "sha": "8eec7907e38c4929eb57c4db6070317344e7a7a8", + "url": "https://api.github.com/repositories/17620347/contents/src/Hosting/Server.IntegrationTesting/src/Common/TestUrlHelper.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/8eec7907e38c4929eb57c4db6070317344e7a7a8", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Hosting/Server.IntegrationTesting/src/Common/TestUrlHelper.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "RefTypeSyntax.cs", + "path": "src/Compilers/CSharp/Portable/Syntax/RefTypeSyntax.cs", + "sha": "12af34d8d11bc04ecd161a3364c486390e1e506f", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Syntax/RefTypeSyntax.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/12af34d8d11bc04ecd161a3364c486390e1e506f", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Syntax/RefTypeSyntax.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RootComponent.cs", + "path": "src/BlazorWebView/src/Maui/RootComponent.cs", + "sha": "92ecada35b7fe6bf202aceb7070a4b95bdd2a1f4", + "url": "https://api.github.com/repositories/262395224/contents/src/BlazorWebView/src/Maui/RootComponent.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/92ecada35b7fe6bf202aceb7070a4b95bdd2a1f4", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/BlazorWebView/src/Maui/RootComponent.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "ErrorBoundary.cs", + "path": "src/Components/Web/src/Web/ErrorBoundary.cs", + "sha": "8be6bbf3f51ddea3417a0ca97d0cf91d52b31d8c", + "url": "https://api.github.com/repositories/17620347/contents/src/Components/Web/src/Web/ErrorBoundary.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/8be6bbf3f51ddea3417a0ca97d0cf91d52b31d8c", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Components/Web/src/Web/ErrorBoundary.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "InputTextArea.cs", + "path": "src/Components/Web/src/Forms/InputTextArea.cs", + "sha": "2495ce3d07f79be513a0b5048b77d666305bc29b", + "url": "https://api.github.com/repositories/17620347/contents/src/Components/Web/src/Forms/InputTextArea.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/2495ce3d07f79be513a0b5048b77d666305bc29b", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Components/Web/src/Forms/InputTextArea.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "TemporaryDirectory.cs", + "path": "src/Tools/Shared/TestHelpers/TemporaryDirectory.cs", + "sha": "6869a362252ab55b798f524ada1deca33a46b29e", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Shared/TestHelpers/TemporaryDirectory.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/6869a362252ab55b798f524ada1deca33a46b29e", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Shared/TestHelpers/TemporaryDirectory.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/roslyn/src/Tools/BuildValidator/Program.cs", + "sha": "4d91d066b0db3b70444d3400888a51bba7613b56", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/BuildValidator/Program.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/4d91d066b0db3b70444d3400888a51bba7613b56", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/BuildValidator/Program.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TestReferences.cs", + "path": "src/Shared/AnalyzerTesting/TestReferences.cs", + "sha": "99ad01f549bfd995278be90c2e52949c1d454168", + "url": "https://api.github.com/repositories/17620347/contents/src/Shared/AnalyzerTesting/TestReferences.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/99ad01f549bfd995278be90c2e52949c1d454168", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Shared/AnalyzerTesting/TestReferences.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray`1.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray`1.cs", + "sha": "0f209d02eae8d9dcd0b30529b945d21482e89023", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray%601.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0f209d02eae8d9dcd0b30529b945d21482e89023", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray%601.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "eng/tools/BaselineGenerator/Program.cs", + "sha": "c599c77ac4607a42474c0cac887c2fd841f149eb", + "url": "https://api.github.com/repositories/17620347/contents/eng/tools/BaselineGenerator/Program.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/c599c77ac4607a42474c0cac887c2fd841f149eb", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/eng/tools/BaselineGenerator/Program.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "StressTests.cs", + "path": "src/Interactive/HostTest/StressTests.cs", + "sha": "a186fc0d2cc061854f0e9084df9ebea5468e1913", + "url": "https://api.github.com/repositories/29078997/contents/src/Interactive/HostTest/StressTests.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/a186fc0d2cc061854f0e9084df9ebea5468e1913", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Interactive/HostTest/StressTests.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "BuildClient.cs", + "path": "src/Compilers/Shared/BuildClient.cs", + "sha": "9b53a99f8cc00fd8d78ccc6fa4e8d817c3bc0021", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Shared/BuildClient.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/9b53a99f8cc00fd8d78ccc6fa4e8d817c3bc0021", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Shared/BuildClient.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "InputCheckbox.cs", + "path": "src/Components/Web/src/Forms/InputCheckbox.cs", + "sha": "9538b031960e122ba6341a90f5c9e9cfcd55570d", + "url": "https://api.github.com/repositories/17620347/contents/src/Components/Web/src/Forms/InputCheckbox.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/9538b031960e122ba6341a90f5c9e9cfcd55570d", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Components/Web/src/Forms/InputCheckbox.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "ios.cake", + "path": "eng/devices/ios.cake", + "sha": "d14681fd886878e344fa382f0db47afbaa04ee42", + "url": "https://api.github.com/repositories/262395224/contents/eng/devices/ios.cake?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/d14681fd886878e344fa382f0db47afbaa04ee42", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/eng/devices/ios.cake", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "InitCommand.cs", + "path": "src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs", + "sha": "d6aa7edd15ab58e18f987b3cf37825c510d575f7", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/d6aa7edd15ab58e18f987b3cf37825c510d575f7", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "Formatting.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/BoundTree/Formatting.cs", + "sha": "70bf08291164aac13bf27ae9121ff4cbc89d45f2", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/BoundTree/Formatting.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/70bf08291164aac13bf27ae9121ff4cbc89d45f2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/BoundTree/Formatting.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "WellKnownMember.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/WellKnownMember.cs", + "sha": "8794845d874b03c24d98d3b631ab28d50d5462db", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/WellKnownMember.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/8794845d874b03c24d98d3b631ab28d50d5462db", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/WellKnownMember.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "windows.cake", + "path": "eng/devices/windows.cake", + "sha": "e03d96a7f4f1b4e6523802b1eed8de2bd04e6c22", + "url": "https://api.github.com/repositories/262395224/contents/eng/devices/windows.cake?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/e03d96a7f4f1b4e6523802b1eed8de2bd04e6c22", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/eng/devices/windows.cake", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "Requires.cs", + "path": "src/Components/Server/src/BlazorPack/Requires.cs", + "sha": "590f23670dc40212f6a43084c770b36781899d86", + "url": "https://api.github.com/repositories/17620347/contents/src/Components/Server/src/BlazorPack/Requires.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/590f23670dc40212f6a43084c770b36781899d86", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Components/Server/src/BlazorPack/Requires.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "FileNameEqualityComparer.cs", + "path": "src/Tools/BuildValidator/FileNameEqualityComparer.cs", + "sha": "b21b63e2b6b1522d580b671f4654280030301bcb", + "url": "https://api.github.com/repositories/29078997/contents/src/Tools/BuildValidator/FileNameEqualityComparer.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/b21b63e2b6b1522d580b671f4654280030301bcb", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Tools/BuildValidator/FileNameEqualityComparer.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ConflictTagDefinition.cs", + "path": "src/EditorFeatures/Core.Wpf/ConflictTagDefinition.cs", + "sha": "2f0b6282db2cc2d1606fee2a2d266c7167916033", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core.Wpf/ConflictTagDefinition.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/2f0b6282db2cc2d1606fee2a2d266c7167916033", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core.Wpf/ConflictTagDefinition.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Utils.cs", + "path": "src/Microsoft.ML.DataView/Utils.cs", + "sha": "0b7e8953ffdb68ae6b916ee92c455fed299c1387", + "url": "https://api.github.com/repositories/132021166/contents/src/Microsoft.ML.DataView/Utils.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/0b7e8953ffdb68ae6b916ee92c455fed299c1387", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/src/Microsoft.ML.DataView/Utils.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + }, + { + "name": "MessageID.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Errors/MessageID.cs", + "sha": "ef2cd9e7c9a5a8b7f68c6bd38c85d0e2ed71993c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Errors/MessageID.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/ef2cd9e7c9a5a8b7f68c6bd38c85d0e2ed71993c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Errors/MessageID.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CountLogAggregator.cs", + "path": "src/Workspaces/Core/Portable/Log/CountLogAggregator.cs", + "sha": "ec046985a1dd8c451f7b8f59d75b70d12b37e716", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Log/CountLogAggregator.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/ec046985a1dd8c451f7b8f59d75b70d12b37e716", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Log/CountLogAggregator.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "WebHostBuilderExtensions.cs", + "path": "src/Hosting/Hosting/src/WebHostBuilderExtensions.cs", + "sha": "af693bc07ceaca02c6df8111e7624eedf5e45a0e", + "url": "https://api.github.com/repositories/17620347/contents/src/Hosting/Hosting/src/WebHostBuilderExtensions.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/af693bc07ceaca02c6df8111e7624eedf5e45a0e", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Hosting/Hosting/src/WebHostBuilderExtensions.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "EncoderResources.cs", + "path": "src/Shared/WebEncoders/Properties/EncoderResources.cs", + "sha": "ab06184f5466e77bdea5a6f50d2ec8c31f2c5666", + "url": "https://api.github.com/repositories/17620347/contents/src/Shared/WebEncoders/Properties/EncoderResources.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/ab06184f5466e77bdea5a6f50d2ec8c31f2c5666", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Shared/WebEncoders/Properties/EncoderResources.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "UserSecretsCreator.cs", + "path": "src/Tools/Shared/SecretsHelpers/UserSecretsCreator.cs", + "sha": "19c2a6e5c1eec44d222ec670c851946140fcd970", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/Shared/SecretsHelpers/UserSecretsCreator.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/19c2a6e5c1eec44d222ec670c851946140fcd970", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/Shared/SecretsHelpers/UserSecretsCreator.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/1-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/1-codeSearch.json new file mode 100644 index 00000000000..d1532a4b922 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/1-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=2" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "Project.cs", + "path": "src/aspnetcore/src/ProjectTemplates/Shared/Project.cs", + "sha": "b2b7e4f685020c2282e0cb75c1a808601c50c041", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/ProjectTemplates/Shared/Project.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/b2b7e4f685020c2282e0cb75c1a808601c50c041", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/ProjectTemplates/Shared/Project.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectKey.cs", + "path": "src/roslyn/src/Tools/BuildBoss/ProjectKey.cs", + "sha": "258d2389fe68b31a037cd04f199154ee0bce4064", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/BuildBoss/ProjectKey.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/258d2389fe68b31a037cd04f199154ee0bce4064", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/BuildBoss/ProjectKey.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Error.cs", + "path": "src/msbuild/src/Tasks/Error.cs", + "sha": "8cbca5f2ebdee63ea5a1df2da062081b930725db", + "url": "https://api.github.com/repositories/550902717/contents/src/msbuild/src/Tasks/Error.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/8cbca5f2ebdee63ea5a1df2da062081b930725db", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/msbuild/src/Tasks/Error.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectIdResolver.cs", + "path": "src/aspnetcore/src/Tools/Shared/SecretsHelpers/ProjectIdResolver.cs", + "sha": "d9c794586ae4771bf07bbf7f0f46cc0711b79c23", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Shared/SecretsHelpers/ProjectIdResolver.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/d9c794586ae4771bf07bbf7f0f46cc0711b79c23", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Shared/SecretsHelpers/ProjectIdResolver.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "LsifProject.cs", + "path": "src/roslyn/src/Features/Lsif/Generator/Graph/LsifProject.cs", + "sha": "b196243abcad644ebaf5aecf43de80859455703c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Lsif/Generator/Graph/LsifProject.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/b196243abcad644ebaf5aecf43de80859455703c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Lsif/Generator/Graph/LsifProject.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectExtensions.cs", + "path": "src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/ProjectExtensions.cs", + "sha": "3d76c83170e867e2275216f4adf5c9e4e4868a10", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/ProjectExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3d76c83170e867e2275216f4adf5c9e4e4868a10", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/ProjectExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectMap.cs", + "path": "src/roslyn/src/Workspaces/Core/MSBuild/MSBuild/ProjectMap.cs", + "sha": "242809c13f33d39936dc1d96e34ec15b50f9093a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/MSBuild/MSBuild/ProjectMap.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/242809c13f33d39936dc1d96e34ec15b50f9093a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/MSBuild/MSBuild/ProjectMap.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray.cs", + "path": "src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray.cs", + "sha": "69ac799c32268960307141168a97049c410976d8", + "url": "https://api.github.com/repositories/176748372/contents/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/69ac799c32268960307141168a97049c410976d8", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray.cs", + "sha": "69ac799c32268960307141168a97049c410976d8", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/69ac799c32268960307141168a97049c410976d8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray.cs", + "path": "src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray.cs", + "sha": "69ac799c32268960307141168a97049c410976d8", + "url": "https://api.github.com/repositories/176748372/contents/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/69ac799c32268960307141168a97049c410976d8", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "Exec.cs", + "path": "src/msbuild/src/Tasks/Exec.cs", + "sha": "dbf4be1fc51385b5f13801cd948361eb4c82ba22", + "url": "https://api.github.com/repositories/550902717/contents/src/msbuild/src/Tasks/Exec.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/dbf4be1fc51385b5f13801cd948361eb4c82ba22", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/msbuild/src/Tasks/Exec.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Options.cs", + "path": "src/roslyn/src/Tools/Source/RunTests/Options.cs", + "sha": "d3ce7af3ed56d50a3c5ebad3a6bc9f92623b43c2", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/Source/RunTests/Options.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/d3ce7af3ed56d50a3c5ebad3a6bc9f92623b43c2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/Source/RunTests/Options.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineOptions.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-secrets/src/CommandLineOptions.cs", + "sha": "af97626c7d89814cb9bdf23712349c174e17d298", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-secrets/src/CommandLineOptions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/af97626c7d89814cb9bdf23712349c174e17d298", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-secrets/src/CommandLineOptions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "KeyCommand.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/KeyCommand.cs", + "sha": "55454b71693e222fe418f77c5c05d543b41a152d", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/KeyCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/55454b71693e222fe418f77c5c05d543b41a152d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/KeyCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "GenericHostBuilderExtensions.cs", + "path": "src/aspnetcore/src/DefaultBuilder/src/GenericHostBuilderExtensions.cs", + "sha": "f61d482b4066ce9df4a333ad0ccf6bedf36bcced", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/DefaultBuilder/src/GenericHostBuilderExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/f61d482b4066ce9df4a333ad0ccf6bedf36bcced", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/DefaultBuilder/src/GenericHostBuilderExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ThrowHelper.cs", + "path": "src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ThrowHelper.cs", + "sha": "6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "url": "https://api.github.com/repositories/176748372/contents/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ThrowHelper.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ThrowHelper.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "ThrowHelper.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ThrowHelper.cs", + "sha": "6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ThrowHelper.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ThrowHelper.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ThrowHelper.cs", + "path": "src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ThrowHelper.cs", + "sha": "6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "url": "https://api.github.com/repositories/176748372/contents/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ThrowHelper.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/6ce96d7809f3208c397d9bb4ab4d9ded541968d3", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ThrowHelper.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "RemoveCommand.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/RemoveCommand.cs", + "sha": "0c3a69eaf40e79857fea3c4d8d0cacdfcaa9a4f3", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/RemoveCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0c3a69eaf40e79857fea3c4d8d0cacdfcaa9a4f3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/RemoveCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PathKind.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/FileSystem/PathKind.cs", + "sha": "573eef19e47ae6b1ef8edeee56127e8eb79b0186", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/FileSystem/PathKind.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/573eef19e47ae6b1ef8edeee56127e8eb79b0186", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/FileSystem/PathKind.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RegexClassifierBenchmarks.cs", + "path": "src/roslyn/src/Tools/IdeBenchmarks/RegexClassifierBenchmarks.cs", + "sha": "d79e6c2a5f1bc7a1cc92f425b6cc1f0e8133c8ac", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/IdeBenchmarks/RegexClassifierBenchmarks.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/d79e6c2a5f1bc7a1cc92f425b6cc1f0e8133c8ac", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/IdeBenchmarks/RegexClassifierBenchmarks.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RQVoidType.cs", + "path": "src/roslyn/src/Features/Core/Portable/RQName/Nodes/RQVoidType.cs", + "sha": "4210dfda8693068a8c42205de21234de7ec6db06", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/RQName/Nodes/RQVoidType.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/4210dfda8693068a8c42205de21234de7ec6db06", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/RQName/Nodes/RQVoidType.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectOptions.cs", + "path": "src/aspnetcore/src/Tools/dotnet-getdocument/src/ProjectOptions.cs", + "sha": "f2b55eec5eb2de63819a9755c28beb7b9cbec762", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-getdocument/src/ProjectOptions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/f2b55eec5eb2de63819a9755c28beb7b9cbec762", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-getdocument/src/ProjectOptions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectCommandBase.cs", + "path": "src/aspnetcore/src/Tools/GetDocumentInsider/src/Commands/ProjectCommandBase.cs", + "sha": "823f3fe88378a2cad2827a0055621d6a9ed3b77a", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/GetDocumentInsider/src/Commands/ProjectCommandBase.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/823f3fe88378a2cad2827a0055621d6a9ed3b77a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/GetDocumentInsider/src/Commands/ProjectCommandBase.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Csc.cs", + "path": "src/roslyn/src/Compilers/Core/MSBuildTask/Csc.cs", + "sha": "ea3fd91183d8458a6ab69223f0601336a3dab391", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/MSBuildTask/Csc.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/ea3fd91183d8458a6ab69223f0601336a3dab391", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/MSBuildTask/Csc.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TypeInfo.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Compilation/TypeInfo.cs", + "sha": "68de547a3edb6a20785eddf71a66b0d9e8140266", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Compilation/TypeInfo.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/68de547a3edb6a20785eddf71a66b0d9e8140266", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Compilation/TypeInfo.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TypeofBinder.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Binder/TypeofBinder.cs", + "sha": "279fbd58e052c3b3ab9735621dce4bc0de027220", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Binder/TypeofBinder.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/279fbd58e052c3b3ab9735621dce4bc0de027220", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Binder/TypeofBinder.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ImportAdder.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Editing/ImportAdder.cs", + "sha": "3659aeec125c1c71940b37b8b2269a04d1595da3", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Editing/ImportAdder.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3659aeec125c1c71940b37b8b2269a04d1595da3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Editing/ImportAdder.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "BaseCommand.cs", + "path": "src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/BaseCommand.cs", + "sha": "007c287e29ba87edee89adbf87a216e511dcfae9", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/BaseCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/007c287e29ba87edee89adbf87a216e511dcfae9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/BaseCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "MakeDir.cs", + "path": "src/msbuild/src/Tasks/MakeDir.cs", + "sha": "eb7d2ef328170e22cf0de5a075848757598533a9", + "url": "https://api.github.com/repositories/550902717/contents/src/msbuild/src/Tasks/MakeDir.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/eb7d2ef328170e22cf0de5a075848757598533a9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/msbuild/src/Tasks/MakeDir.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IISExpressDeployer.cs", + "path": "src/aspnetcore/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs", + "sha": "951491335c543561d68fecfb50a3c02853f4b64e", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/951491335c543561d68fecfb50a3c02853f4b64e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TestRunner.cs", + "path": "src/aspnetcore/eng/tools/HelixTestRunner/TestRunner.cs", + "sha": "5524d967b54bcaafb78791ae53df52fe9a9366f2", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/eng/tools/HelixTestRunner/TestRunner.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/5524d967b54bcaafb78791ae53df52fe9a9366f2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/eng/tools/HelixTestRunner/TestRunner.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TemplatePackageInstaller.cs", + "path": "src/aspnetcore/src/ProjectTemplates/Shared/TemplatePackageInstaller.cs", + "sha": "05ed84845f1a26c3d720196a4a45823bfbf1217d", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/ProjectTemplates/Shared/TemplatePackageInstaller.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/05ed84845f1a26c3d720196a4a45823bfbf1217d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/ProjectTemplates/Shared/TemplatePackageInstaller.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DefaultHttpContext.cs", + "path": "src/aspnetcore/src/Http/Http/src/DefaultHttpContext.cs", + "sha": "2439fc48efe9c8e1d4c449c69fb969f8a5bd7f38", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Http/Http/src/DefaultHttpContext.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2439fc48efe9c8e1d4c449c69fb969f8a5bd7f38", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Http/Http/src/DefaultHttpContext.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.AssemblyFixtures.cs", + "path": "src/aspnetcore/src/ProjectTemplates/Shared/AssemblyInfo.AssemblyFixtures.cs", + "sha": "b89b6eee9054bf3adc36cd094f4488153260a7ba", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/ProjectTemplates/Shared/AssemblyInfo.AssemblyFixtures.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/b89b6eee9054bf3adc36cd094f4488153260a7ba", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/ProjectTemplates/Shared/AssemblyInfo.AssemblyFixtures.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SeleniumStandaloneServer.cs", + "path": "src/aspnetcore/src/Shared/E2ETesting/SeleniumStandaloneServer.cs", + "sha": "a635d47f985d3c0b28f6fb59c8cadbe87ee0aad8", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Shared/E2ETesting/SeleniumStandaloneServer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/a635d47f985d3c0b28f6fb59c8cadbe87ee0aad8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Shared/E2ETesting/SeleniumStandaloneServer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AddCommand.cs", + "path": "src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs", + "sha": "e4066cdf2e83285af62f4851fdf8ee2c539ac0a8", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/e4066cdf2e83285af62f4851fdf8ee2c539ac0a8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TestPathUtilities.cs", + "path": "src/aspnetcore/src/Testing/src/TestPathUtilities.cs", + "sha": "42ca974cff8767a365625c7446a1b0bccd814d2b", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Testing/src/TestPathUtilities.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/42ca974cff8767a365625c7446a1b0bccd814d2b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Testing/src/TestPathUtilities.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "BlazorTemplateTest.cs", + "path": "src/aspnetcore/src/ProjectTemplates/Shared/BlazorTemplateTest.cs", + "sha": "26e4ef47a6fe7dac2dbec54d61cc1135124c7f3c", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/ProjectTemplates/Shared/BlazorTemplateTest.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/26e4ef47a6fe7dac2dbec54d61cc1135124c7f3c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/ProjectTemplates/Shared/BlazorTemplateTest.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RazorFileHierarchy.cs", + "path": "src/aspnetcore/src/Mvc/Mvc.Razor/src/RazorFileHierarchy.cs", + "sha": "d4f3705606c1f3876eedfaf5b7aad1c65f1ac9aa", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Mvc/Mvc.Razor/src/RazorFileHierarchy.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/d4f3705606c1f3876eedfaf5b7aad1c65f1ac9aa", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Mvc/Mvc.Razor/src/RazorFileHierarchy.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TemporaryCSharpProject.cs", + "path": "src/aspnetcore/src/Tools/Shared/TestHelpers/TemporaryCSharpProject.cs", + "sha": "f1e1380472aba3d9ed2a60792268704be001b87a", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Shared/TestHelpers/TemporaryCSharpProject.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/f1e1380472aba3d9ed2a60792268704be001b87a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Shared/TestHelpers/TemporaryCSharpProject.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PrintCommand.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/PrintCommand.cs", + "sha": "718f52c620037c8a237990066a0ff98cadf093d2", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/PrintCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/718f52c620037c8a237990066a0ff98cadf093d2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/PrintCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SigningKeysHandler.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-jwts/src/Helpers/SigningKeysHandler.cs", + "sha": "e533cc1e179f2a16237797a01a285eacb80efbc8", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Helpers/SigningKeysHandler.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/e533cc1e179f2a16237797a01a285eacb80efbc8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Helpers/SigningKeysHandler.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ChecksumValidator.cs", + "path": "src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/ChecksumValidator.cs", + "sha": "c196a93f69a518a6d013c6fedab0526eb999228c", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/ChecksumValidator.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/c196a93f69a518a6d013c6fedab0526eb999228c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/ChecksumValidator.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-secrets/src/Program.cs", + "sha": "f01b7e434678a7e3a4b74734328e42b85d792155", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-secrets/src/Program.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/f01b7e434678a7e3a4b74734328e42b85d792155", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-secrets/src/Program.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RuntimeViewCompiler.cs", + "path": "src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeViewCompiler.cs", + "sha": "b291f04441057c57092eb6e4731956b1be2d8bd6", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeViewCompiler.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/b291f04441057c57092eb6e4731956b1be2d8bd6", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeViewCompiler.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PageDirectiveFeature.cs", + "path": "src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/PageDirectiveFeature.cs", + "sha": "5c48d3677925ec1ddb6dcda111904dcbe54b8d2e", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/PageDirectiveFeature.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/5c48d3677925ec1ddb6dcda111904dcbe54b8d2e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Mvc/Mvc.Razor.RuntimeCompilation/src/PageDirectiveFeature.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AddURLCommand.cs", + "path": "src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddURLCommand.cs", + "sha": "14cb18c4d5a8050343a5037f128c546df8c5f8d5", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddURLCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/14cb18c4d5a8050343a5037f128c546df8c5f8d5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddURLCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AddFileCommand.cs", + "path": "src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddFileCommand.cs", + "sha": "c4b44c4b26674760b71ad70cd74da63d9a8bea0c", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddFileCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/c4b44c4b26674760b71ad70cd74da63d9a8bea0c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Microsoft.dotnet-openapi/src/Commands/AddFileCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TestUrlHelper.cs", + "path": "src/aspnetcore/src/Hosting/Server.IntegrationTesting/src/Common/TestUrlHelper.cs", + "sha": "8eec7907e38c4929eb57c4db6070317344e7a7a8", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Hosting/Server.IntegrationTesting/src/Common/TestUrlHelper.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/8eec7907e38c4929eb57c4db6070317344e7a7a8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Hosting/Server.IntegrationTesting/src/Common/TestUrlHelper.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RefTypeSyntax.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Syntax/RefTypeSyntax.cs", + "sha": "12af34d8d11bc04ecd161a3364c486390e1e506f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Syntax/RefTypeSyntax.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/12af34d8d11bc04ecd161a3364c486390e1e506f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Syntax/RefTypeSyntax.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ErrorBoundary.cs", + "path": "src/aspnetcore/src/Components/Web/src/Web/ErrorBoundary.cs", + "sha": "8be6bbf3f51ddea3417a0ca97d0cf91d52b31d8c", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Components/Web/src/Web/ErrorBoundary.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/8be6bbf3f51ddea3417a0ca97d0cf91d52b31d8c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Components/Web/src/Web/ErrorBoundary.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "InputTextArea.cs", + "path": "src/aspnetcore/src/Components/Web/src/Forms/InputTextArea.cs", + "sha": "2495ce3d07f79be513a0b5048b77d666305bc29b", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Components/Web/src/Forms/InputTextArea.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2495ce3d07f79be513a0b5048b77d666305bc29b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Components/Web/src/Forms/InputTextArea.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TemporaryDirectory.cs", + "path": "src/aspnetcore/src/Tools/Shared/TestHelpers/TemporaryDirectory.cs", + "sha": "6869a362252ab55b798f524ada1deca33a46b29e", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Shared/TestHelpers/TemporaryDirectory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/6869a362252ab55b798f524ada1deca33a46b29e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Shared/TestHelpers/TemporaryDirectory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TestReferences.cs", + "path": "src/aspnetcore/src/Shared/AnalyzerTesting/TestReferences.cs", + "sha": "99ad01f549bfd995278be90c2e52949c1d454168", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Shared/AnalyzerTesting/TestReferences.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/99ad01f549bfd995278be90c2e52949c1d454168", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Shared/AnalyzerTesting/TestReferences.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray`1.cs", + "path": "src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray`1.cs", + "sha": "0f209d02eae8d9dcd0b30529b945d21482e89023", + "url": "https://api.github.com/repositories/176748372/contents/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray%601.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/0f209d02eae8d9dcd0b30529b945d21482e89023", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/SegmentedArray%601.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray`1.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray`1.cs", + "sha": "0f209d02eae8d9dcd0b30529b945d21482e89023", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray%601.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0f209d02eae8d9dcd0b30529b945d21482e89023", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray%601.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SegmentedArray`1.cs", + "path": "src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray`1.cs", + "sha": "0f209d02eae8d9dcd0b30529b945d21482e89023", + "url": "https://api.github.com/repositories/176748372/contents/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray%601.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/0f209d02eae8d9dcd0b30529b945d21482e89023", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/SegmentedArray%601.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/aspnetcore/eng/tools/BaselineGenerator/Program.cs", + "sha": "c599c77ac4607a42474c0cac887c2fd841f149eb", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/eng/tools/BaselineGenerator/Program.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/c599c77ac4607a42474c0cac887c2fd841f149eb", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/eng/tools/BaselineGenerator/Program.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "StressTests.cs", + "path": "src/roslyn/src/Interactive/HostTest/StressTests.cs", + "sha": "a186fc0d2cc061854f0e9084df9ebea5468e1913", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Interactive/HostTest/StressTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/a186fc0d2cc061854f0e9084df9ebea5468e1913", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Interactive/HostTest/StressTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "BuildClient.cs", + "path": "src/roslyn/src/Compilers/Shared/BuildClient.cs", + "sha": "9b53a99f8cc00fd8d78ccc6fa4e8d817c3bc0021", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Shared/BuildClient.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/9b53a99f8cc00fd8d78ccc6fa4e8d817c3bc0021", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Shared/BuildClient.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "InputCheckbox.cs", + "path": "src/aspnetcore/src/Components/Web/src/Forms/InputCheckbox.cs", + "sha": "9538b031960e122ba6341a90f5c9e9cfcd55570d", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Components/Web/src/Forms/InputCheckbox.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/9538b031960e122ba6341a90f5c9e9cfcd55570d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Components/Web/src/Forms/InputCheckbox.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "InitCommand.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs", + "sha": "d6aa7edd15ab58e18f987b3cf37825c510d575f7", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/d6aa7edd15ab58e18f987b3cf37825c510d575f7", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-secrets/src/Internal/InitCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Requires.cs", + "path": "src/aspnetcore/src/Components/Server/src/BlazorPack/Requires.cs", + "sha": "590f23670dc40212f6a43084c770b36781899d86", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Components/Server/src/BlazorPack/Requires.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/590f23670dc40212f6a43084c770b36781899d86", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Components/Server/src/BlazorPack/Requires.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "FileNameEqualityComparer.cs", + "path": "src/roslyn/src/Tools/BuildValidator/FileNameEqualityComparer.cs", + "sha": "b21b63e2b6b1522d580b671f4654280030301bcb", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/BuildValidator/FileNameEqualityComparer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/b21b63e2b6b1522d580b671f4654280030301bcb", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/BuildValidator/FileNameEqualityComparer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ConflictTagDefinition.cs", + "path": "src/roslyn/src/EditorFeatures/Core.Wpf/ConflictTagDefinition.cs", + "sha": "2f0b6282db2cc2d1606fee2a2d266c7167916033", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core.Wpf/ConflictTagDefinition.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2f0b6282db2cc2d1606fee2a2d266c7167916033", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core.Wpf/ConflictTagDefinition.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CountLogAggregator.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Log/CountLogAggregator.cs", + "sha": "ec046985a1dd8c451f7b8f59d75b70d12b37e716", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Log/CountLogAggregator.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/ec046985a1dd8c451f7b8f59d75b70d12b37e716", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Log/CountLogAggregator.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "WebHostBuilderExtensions.cs", + "path": "src/aspnetcore/src/Hosting/Hosting/src/WebHostBuilderExtensions.cs", + "sha": "af693bc07ceaca02c6df8111e7624eedf5e45a0e", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Hosting/Hosting/src/WebHostBuilderExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/af693bc07ceaca02c6df8111e7624eedf5e45a0e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Hosting/Hosting/src/WebHostBuilderExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "EncoderResources.cs", + "path": "src/aspnetcore/src/Shared/WebEncoders/Properties/EncoderResources.cs", + "sha": "ab06184f5466e77bdea5a6f50d2ec8c31f2c5666", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Shared/WebEncoders/Properties/EncoderResources.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/ab06184f5466e77bdea5a6f50d2ec8c31f2c5666", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Shared/WebEncoders/Properties/EncoderResources.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "UserSecretsCreator.cs", + "path": "src/aspnetcore/src/Tools/Shared/SecretsHelpers/UserSecretsCreator.cs", + "sha": "19c2a6e5c1eec44d222ec670c851946140fcd970", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/Shared/SecretsHelpers/UserSecretsCreator.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/19c2a6e5c1eec44d222ec670c851946140fcd970", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/Shared/SecretsHelpers/UserSecretsCreator.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/Build/Definition/Project.cs", + "sha": "106b1ca08ee4c0b1f7e082a5b7bce953c41a8b9d", + "url": "https://api.github.com/repositories/32051890/contents/src/Build/Definition/Project.cs?ref=946c584115367635c37ac7ecaadb2f36542f88b0", + "git_url": "https://api.github.com/repositories/32051890/git/blobs/106b1ca08ee4c0b1f7e082a5b7bce953c41a8b9d", + "html_url": "https://github.com/dotnet/msbuild/blob/946c584115367635c37ac7ecaadb2f36542f88b0/src/Build/Definition/Project.cs", + "repository": { + "id": 32051890, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjA1MTg5MA==", + "name": "msbuild", + "full_name": "dotnet/msbuild", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/msbuild", + "description": "The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/msbuild", + "forks_url": "https://api.github.com/repos/dotnet/msbuild/forks", + "keys_url": "https://api.github.com/repos/dotnet/msbuild/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/msbuild/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/msbuild/teams", + "hooks_url": "https://api.github.com/repos/dotnet/msbuild/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/msbuild/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/msbuild/events", + "assignees_url": "https://api.github.com/repos/dotnet/msbuild/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/msbuild/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/msbuild/tags", + "blobs_url": "https://api.github.com/repos/dotnet/msbuild/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/msbuild/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/msbuild/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/msbuild/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/msbuild/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/msbuild/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/msbuild/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/msbuild/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/msbuild/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/msbuild/subscription", + "commits_url": "https://api.github.com/repos/dotnet/msbuild/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/msbuild/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/msbuild/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/msbuild/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/msbuild/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/msbuild/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/msbuild/merges", + "archive_url": "https://api.github.com/repos/dotnet/msbuild/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/msbuild/downloads", + "issues_url": "https://api.github.com/repos/dotnet/msbuild/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/msbuild/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/msbuild/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/msbuild/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/msbuild/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/msbuild/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/msbuild/deployments" + }, + "score": 1 + }, + { + "name": "ProjectUtilities.cs", + "path": "src/VisualStudio/IntegrationTest/TestUtilities/Common/ProjectUtilities.cs", + "sha": "09c80fd0a06a47fb40da51c99632c3beced7fba5", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/IntegrationTest/TestUtilities/Common/ProjectUtilities.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/09c80fd0a06a47fb40da51c99632c3beced7fba5", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/IntegrationTest/TestUtilities/Common/ProjectUtilities.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/Microsoft.DotNet.Interactive.CSharpProject/Project.cs", + "sha": "034b348311e106a370f2bdbca045a4d6a79fdb5a", + "url": "https://api.github.com/repositories/235469871/contents/src/Microsoft.DotNet.Interactive.CSharpProject/Project.cs?ref=69a961635590e271bac141899380de1ac2089613", + "git_url": "https://api.github.com/repositories/235469871/git/blobs/034b348311e106a370f2bdbca045a4d6a79fdb5a", + "html_url": "https://github.com/dotnet/interactive/blob/69a961635590e271bac141899380de1ac2089613/src/Microsoft.DotNet.Interactive.CSharpProject/Project.cs", + "repository": { + "id": 235469871, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzU0Njk4NzE=", + "name": "interactive", + "full_name": "dotnet/interactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/interactive", + "description": ".NET Interactive combines the power of .NET with many other languages to create notebooks, REPLs, and embedded coding experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/interactive", + "forks_url": "https://api.github.com/repos/dotnet/interactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/interactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/interactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/interactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/interactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/interactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/interactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/interactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/interactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/interactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/interactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/interactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/interactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/interactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/interactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/interactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/interactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/interactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/interactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/interactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/interactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/interactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/interactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/interactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/interactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/interactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/interactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/interactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/interactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/interactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/interactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/interactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/interactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/interactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/interactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/interactive/deployments" + }, + "score": 1 + }, + { + "name": "ProjectFactoryFixture.cs", + "path": "src/ProjectTemplates/Shared/ProjectFactoryFixture.cs", + "sha": "0de11acd780e134b7d2d599691964cd6e1281317", + "url": "https://api.github.com/repositories/17620347/contents/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/0de11acd780e134b7d2d599691964cd6e1281317", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "Microsoft.VisualStudio.Package.Project.cs", + "path": "vsintegration/src/FSharp.ProjectSystem.Base/Microsoft.VisualStudio.Package.Project.cs", + "sha": "1062cdd69fdb3c03d53e802867d0688f6249e8d3", + "url": "https://api.github.com/repositories/29048891/contents/vsintegration/src/FSharp.ProjectSystem.Base/Microsoft.VisualStudio.Package.Project.cs?ref=256c7b240e063217a51b90d8886d0b789ceb066e", + "git_url": "https://api.github.com/repositories/29048891/git/blobs/1062cdd69fdb3c03d53e802867d0688f6249e8d3", + "html_url": "https://github.com/dotnet/fsharp/blob/256c7b240e063217a51b90d8886d0b789ceb066e/vsintegration/src/FSharp.ProjectSystem.Base/Microsoft.VisualStudio.Package.Project.cs", + "repository": { + "id": 29048891, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA0ODg5MQ==", + "name": "fsharp", + "full_name": "dotnet/fsharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/fsharp", + "description": "The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/fsharp", + "forks_url": "https://api.github.com/repos/dotnet/fsharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/fsharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/fsharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/fsharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/fsharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/fsharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/fsharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/fsharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/fsharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/fsharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/fsharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/fsharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/fsharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/fsharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/fsharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/fsharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/fsharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/fsharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/fsharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/fsharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/fsharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/fsharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/fsharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/fsharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/fsharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/fsharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/fsharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/fsharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/fsharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/fsharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/fsharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/fsharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/fsharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/fsharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/fsharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/fsharp/deployments" + }, + "score": 1 + }, + { + "name": "Microsoft.CodeAnalysis.Workspaces.cs", + "path": "src/source-build-reference-packages/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.7.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "sha": "0c95bd4f9ce698e969eef47fb1bd02fab1c701f0", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.7.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0c95bd4f9ce698e969eef47fb1bd02fab1c701f0", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.7.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Differ.cs", + "path": "src/MSBuild.Conversion.Project/Differ.cs", + "sha": "152c5c70596d762628b7285e835d1f195071f333", + "url": "https://api.github.com/repositories/209180058/contents/src/MSBuild.Conversion.Project/Differ.cs?ref=e77da83926191bf6dad0ee0d22d0a216b4cb39f7", + "git_url": "https://api.github.com/repositories/209180058/git/blobs/152c5c70596d762628b7285e835d1f195071f333", + "html_url": "https://github.com/dotnet/try-convert/blob/e77da83926191bf6dad0ee0d22d0a216b4cb39f7/src/MSBuild.Conversion.Project/Differ.cs", + "repository": { + "id": 209180058, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDkxODAwNTg=", + "name": "try-convert", + "full_name": "dotnet/try-convert", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/try-convert", + "description": "Helping .NET developers port their projects to .NET Core!", + "fork": false, + "url": "https://api.github.com/repos/dotnet/try-convert", + "forks_url": "https://api.github.com/repos/dotnet/try-convert/forks", + "keys_url": "https://api.github.com/repos/dotnet/try-convert/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/try-convert/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/try-convert/teams", + "hooks_url": "https://api.github.com/repos/dotnet/try-convert/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/try-convert/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/try-convert/events", + "assignees_url": "https://api.github.com/repos/dotnet/try-convert/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/try-convert/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/try-convert/tags", + "blobs_url": "https://api.github.com/repos/dotnet/try-convert/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/try-convert/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/try-convert/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/try-convert/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/try-convert/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/try-convert/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/try-convert/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/try-convert/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/try-convert/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/try-convert/subscription", + "commits_url": "https://api.github.com/repos/dotnet/try-convert/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/try-convert/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/try-convert/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/try-convert/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/try-convert/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/try-convert/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/try-convert/merges", + "archive_url": "https://api.github.com/repos/dotnet/try-convert/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/try-convert/downloads", + "issues_url": "https://api.github.com/repos/dotnet/try-convert/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/try-convert/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/try-convert/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/try-convert/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/try-convert/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/try-convert/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/try-convert/deployments" + }, + "score": 1 + }, + { + "name": "ProjectWorkspace.cs", + "path": "github-actions/DotNet.GitHubAction/DotNet.CodeAnalysis/ProjectWorkspace.cs", + "sha": "08b509f0f3deeed07aa593f318c32802e7148bc8", + "url": "https://api.github.com/repositories/119571446/contents/github-actions/DotNet.GitHubAction/DotNet.CodeAnalysis/ProjectWorkspace.cs?ref=9ea0841931b49f43371dd59b8b3297d91aca97e0", + "git_url": "https://api.github.com/repositories/119571446/git/blobs/08b509f0f3deeed07aa593f318c32802e7148bc8", + "html_url": "https://github.com/dotnet/samples/blob/9ea0841931b49f43371dd59b8b3297d91aca97e0/github-actions/DotNet.GitHubAction/DotNet.CodeAnalysis/ProjectWorkspace.cs", + "repository": { + "id": 119571446, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTk1NzE0NDY=", + "name": "samples", + "full_name": "dotnet/samples", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/samples", + "description": "Sample code referenced by the .NET documentation", + "fork": false, + "url": "https://api.github.com/repos/dotnet/samples", + "forks_url": "https://api.github.com/repos/dotnet/samples/forks", + "keys_url": "https://api.github.com/repos/dotnet/samples/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/samples/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/samples/teams", + "hooks_url": "https://api.github.com/repos/dotnet/samples/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/samples/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/samples/events", + "assignees_url": "https://api.github.com/repos/dotnet/samples/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/samples/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/samples/tags", + "blobs_url": "https://api.github.com/repos/dotnet/samples/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/samples/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/samples/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/samples/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/samples/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/samples/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/samples/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/samples/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/samples/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/samples/subscription", + "commits_url": "https://api.github.com/repos/dotnet/samples/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/samples/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/samples/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/samples/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/samples/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/samples/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/samples/merges", + "archive_url": "https://api.github.com/repos/dotnet/samples/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/samples/downloads", + "issues_url": "https://api.github.com/repos/dotnet/samples/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/samples/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/samples/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/samples/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/samples/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/samples/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/samples/deployments" + }, + "score": 1 + }, + { + "name": "CodeBehindGenerator.cs", + "path": "src/Controls/src/SourceGen/CodeBehindGenerator.cs", + "sha": "097a2d4b89ff50a592da5aec6f2bda8d5e0ec97b", + "url": "https://api.github.com/repositories/262395224/contents/src/Controls/src/SourceGen/CodeBehindGenerator.cs?ref=327e1627b5e8b2c267103e3e4690af05f57ca2f4", + "git_url": "https://api.github.com/repositories/262395224/git/blobs/097a2d4b89ff50a592da5aec6f2bda8d5e0ec97b", + "html_url": "https://github.com/dotnet/maui/blob/327e1627b5e8b2c267103e3e4690af05f57ca2f4/src/Controls/src/SourceGen/CodeBehindGenerator.cs", + "repository": { + "id": 262395224, + "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzOTUyMjQ=", + "name": "maui", + "full_name": "dotnet/maui", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/maui", + "description": ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/maui", + "forks_url": "https://api.github.com/repos/dotnet/maui/forks", + "keys_url": "https://api.github.com/repos/dotnet/maui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/maui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/maui/teams", + "hooks_url": "https://api.github.com/repos/dotnet/maui/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/maui/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/maui/events", + "assignees_url": "https://api.github.com/repos/dotnet/maui/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/maui/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/maui/tags", + "blobs_url": "https://api.github.com/repos/dotnet/maui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/maui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/maui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/maui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/maui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/maui/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/maui/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/maui/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/maui/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/maui/subscription", + "commits_url": "https://api.github.com/repos/dotnet/maui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/maui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/maui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/maui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/maui/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/maui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/maui/merges", + "archive_url": "https://api.github.com/repos/dotnet/maui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/maui/downloads", + "issues_url": "https://api.github.com/repos/dotnet/maui/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/maui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/maui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/maui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/maui/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/maui/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/maui/deployments" + }, + "score": 1 + }, + { + "name": "Logger.cs", + "path": "src/Microsoft.ML.AutoML/Utils/Logger.cs", + "sha": "0b76c475119fd4739b92d6fe55b90363b18787ce", + "url": "https://api.github.com/repositories/132021166/contents/src/Microsoft.ML.AutoML/Utils/Logger.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/0b76c475119fd4739b92d6fe55b90363b18787ce", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/src/Microsoft.ML.AutoML/Utils/Logger.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + }, + { + "name": "Observable.Joins.cs", + "path": "Rx.NET/Source/src/System.Reactive/Linq/Observable.Joins.cs", + "sha": "10399274e7511e15e691c7e7f06d434b23e8c716", + "url": "https://api.github.com/repositories/12576526/contents/Rx.NET/Source/src/System.Reactive/Linq/Observable.Joins.cs?ref=95d9ea9d2786f6ec49a051c5cff47dc42591e54f", + "git_url": "https://api.github.com/repositories/12576526/git/blobs/10399274e7511e15e691c7e7f06d434b23e8c716", + "html_url": "https://github.com/dotnet/reactive/blob/95d9ea9d2786f6ec49a051c5cff47dc42591e54f/Rx.NET/Source/src/System.Reactive/Linq/Observable.Joins.cs", + "repository": { + "id": 12576526, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjU3NjUyNg==", + "name": "reactive", + "full_name": "dotnet/reactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/reactive", + "description": "The Reactive Extensions for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/reactive", + "forks_url": "https://api.github.com/repos/dotnet/reactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/reactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/reactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/reactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/reactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/reactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/reactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/reactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/reactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/reactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/reactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/reactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/reactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/reactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/reactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/reactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/reactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/reactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/reactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/reactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/reactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/reactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/reactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/reactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/reactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/reactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/reactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/reactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/reactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/reactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/reactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/reactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/reactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/reactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/reactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/reactive/deployments" + }, + "score": 1 + }, + { + "name": "IngressRunInfo.cs", + "path": "src/Microsoft.Tye.Hosting/Model/IngressRunInfo.cs", + "sha": "029b9736ebd080a638afaf9180ec8dbbfa152ed0", + "url": "https://api.github.com/repositories/243854166/contents/src/Microsoft.Tye.Hosting/Model/IngressRunInfo.cs?ref=75465614e67b5f1e500d1f8b1cb70af22c0c683e", + "git_url": "https://api.github.com/repositories/243854166/git/blobs/029b9736ebd080a638afaf9180ec8dbbfa152ed0", + "html_url": "https://github.com/dotnet/tye/blob/75465614e67b5f1e500d1f8b1cb70af22c0c683e/src/Microsoft.Tye.Hosting/Model/IngressRunInfo.cs", + "repository": { + "id": 243854166, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDM4NTQxNjY=", + "name": "tye", + "full_name": "dotnet/tye", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/tye", + "description": "Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with minimal configuration.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/tye", + "forks_url": "https://api.github.com/repos/dotnet/tye/forks", + "keys_url": "https://api.github.com/repos/dotnet/tye/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/tye/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/tye/teams", + "hooks_url": "https://api.github.com/repos/dotnet/tye/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/tye/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/tye/events", + "assignees_url": "https://api.github.com/repos/dotnet/tye/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/tye/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/tye/tags", + "blobs_url": "https://api.github.com/repos/dotnet/tye/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/tye/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/tye/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/tye/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/tye/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/tye/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/tye/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/tye/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/tye/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/tye/subscription", + "commits_url": "https://api.github.com/repos/dotnet/tye/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/tye/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/tye/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/tye/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/tye/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/tye/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/tye/merges", + "archive_url": "https://api.github.com/repos/dotnet/tye/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/tye/downloads", + "issues_url": "https://api.github.com/repos/dotnet/tye/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/tye/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/tye/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/tye/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/tye/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/tye/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/tye/deployments" + }, + "score": 1 + }, + { + "name": "Interop.RECO.cs", + "path": "src/System.Windows.Forms.Primitives/src/Interop/Richedit/Interop.RECO.cs", + "sha": "0b74a79656d0904ab2ed02fb2ad4cc6df3ed7052", + "url": "https://api.github.com/repositories/153711830/contents/src/System.Windows.Forms.Primitives/src/Interop/Richedit/Interop.RECO.cs?ref=386d51b6a85689a0964d0596e8e0d03a471fc225", + "git_url": "https://api.github.com/repositories/153711830/git/blobs/0b74a79656d0904ab2ed02fb2ad4cc6df3ed7052", + "html_url": "https://github.com/dotnet/winforms/blob/386d51b6a85689a0964d0596e8e0d03a471fc225/src/System.Windows.Forms.Primitives/src/Interop/Richedit/Interop.RECO.cs", + "repository": { + "id": 153711830, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE4MzA=", + "name": "winforms", + "full_name": "dotnet/winforms", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/winforms", + "description": "Windows Forms is a .NET UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/winforms", + "forks_url": "https://api.github.com/repos/dotnet/winforms/forks", + "keys_url": "https://api.github.com/repos/dotnet/winforms/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/winforms/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/winforms/teams", + "hooks_url": "https://api.github.com/repos/dotnet/winforms/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/winforms/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/winforms/events", + "assignees_url": "https://api.github.com/repos/dotnet/winforms/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/winforms/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/winforms/tags", + "blobs_url": "https://api.github.com/repos/dotnet/winforms/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/winforms/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/winforms/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/winforms/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/winforms/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/winforms/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/winforms/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/winforms/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/winforms/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/winforms/subscription", + "commits_url": "https://api.github.com/repos/dotnet/winforms/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/winforms/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/winforms/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/winforms/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/winforms/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/winforms/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/winforms/merges", + "archive_url": "https://api.github.com/repos/dotnet/winforms/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/winforms/downloads", + "issues_url": "https://api.github.com/repos/dotnet/winforms/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/winforms/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/winforms/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/winforms/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/winforms/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/winforms/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/winforms/deployments" + }, + "score": 1 + }, + { + "name": "Light.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Light.cs", + "sha": "144dfc076707fd6ed8c11900ffc58bf04711e798", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Light.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/144dfc076707fd6ed8c11900ffc58bf04711e798", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Light.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "XmlSpace.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlSpace.cs", + "sha": "145ba43e78709a9d3a27604014bc6acee1ed2d77", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlSpace.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/145ba43e78709a9d3a27604014bc6acee1ed2d77", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlSpace.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "IProjectEngineFactory.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/IProjectEngineFactory.cs", + "sha": "096aff11cb7a6e36ea397d4d0e95e3c30f132488", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/IProjectEngineFactory.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/096aff11cb7a6e36ea397d4d0e95e3c30f132488", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/IProjectEngineFactory.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "LaunchSettingsProviderExtensions.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Debug/LaunchSettingsProviderExtensions.cs", + "sha": "106f7cea3214a6512d5c102299f5052fbd6d1ec8", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Debug/LaunchSettingsProviderExtensions.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/106f7cea3214a6512d5c102299f5052fbd6d1ec8", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Debug/LaunchSettingsProviderExtensions.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "ReflectionAccessAnalyzer.cs", + "path": "src/tools/illink/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs", + "sha": "09abc1332083a6e5a3659ca32b2a19b8cb297f8e", + "url": "https://api.github.com/repositories/210716005/contents/src/tools/illink/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs?ref=79c2669e8551ba0f42f04e4bea9e1e692dca6d17", + "git_url": "https://api.github.com/repositories/210716005/git/blobs/09abc1332083a6e5a3659ca32b2a19b8cb297f8e", + "html_url": "https://github.com/dotnet/runtime/blob/79c2669e8551ba0f42f04e4bea9e1e692dca6d17/src/tools/illink/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs", + "repository": { + "id": 210716005, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTA3MTYwMDU=", + "name": "runtime", + "full_name": "dotnet/runtime", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/runtime", + "description": ".NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/runtime", + "forks_url": "https://api.github.com/repos/dotnet/runtime/forks", + "keys_url": "https://api.github.com/repos/dotnet/runtime/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/runtime/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/runtime/teams", + "hooks_url": "https://api.github.com/repos/dotnet/runtime/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/runtime/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/runtime/events", + "assignees_url": "https://api.github.com/repos/dotnet/runtime/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/runtime/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/runtime/tags", + "blobs_url": "https://api.github.com/repos/dotnet/runtime/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/runtime/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/runtime/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/runtime/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/runtime/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/runtime/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/runtime/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/runtime/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/runtime/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/runtime/subscription", + "commits_url": "https://api.github.com/repos/dotnet/runtime/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/runtime/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/runtime/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/runtime/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/runtime/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/runtime/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/runtime/merges", + "archive_url": "https://api.github.com/repos/dotnet/runtime/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/runtime/downloads", + "issues_url": "https://api.github.com/repos/dotnet/runtime/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/runtime/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/runtime/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/runtime/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/runtime/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/runtime/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/runtime/deployments" + }, + "score": 1 + }, + { + "name": "LLVMTypeKind.cs", + "path": "sources/LLVMSharp.Interop/llvm/LLVMTypeKind.cs", + "sha": "077e0e9fb0d2a66c2e9963cb8ee646dc67ddc947", + "url": "https://api.github.com/repositories/30781424/contents/sources/LLVMSharp.Interop/llvm/LLVMTypeKind.cs?ref=ea05882d8a677a1b76b7d9ef8eca64f43309c9ac", + "git_url": "https://api.github.com/repositories/30781424/git/blobs/077e0e9fb0d2a66c2e9963cb8ee646dc67ddc947", + "html_url": "https://github.com/dotnet/LLVMSharp/blob/ea05882d8a677a1b76b7d9ef8eca64f43309c9ac/sources/LLVMSharp.Interop/llvm/LLVMTypeKind.cs", + "repository": { + "id": 30781424, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDc4MTQyNA==", + "name": "LLVMSharp", + "full_name": "dotnet/LLVMSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/LLVMSharp", + "description": "LLVM bindings for .NET Standard written in C# using ClangSharp", + "fork": false, + "url": "https://api.github.com/repos/dotnet/LLVMSharp", + "forks_url": "https://api.github.com/repos/dotnet/LLVMSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/LLVMSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/LLVMSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/LLVMSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/LLVMSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/LLVMSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/LLVMSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/LLVMSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/LLVMSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/LLVMSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/LLVMSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/LLVMSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/LLVMSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/LLVMSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/LLVMSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/LLVMSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/LLVMSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/LLVMSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/LLVMSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/LLVMSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/LLVMSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/LLVMSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/LLVMSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/LLVMSharp/deployments" + }, + "score": 1 + }, + { + "name": "uninstall.cs", + "path": "src/jit-diff/uninstall.cs", + "sha": "0ad793c850d2a2cb090eacb67eddf1db3dc76dc5", + "url": "https://api.github.com/repositories/58085226/contents/src/jit-diff/uninstall.cs?ref=2ee1e8ac13f646376effa1522c92881a468e89bb", + "git_url": "https://api.github.com/repositories/58085226/git/blobs/0ad793c850d2a2cb090eacb67eddf1db3dc76dc5", + "html_url": "https://github.com/dotnet/jitutils/blob/2ee1e8ac13f646376effa1522c92881a468e89bb/src/jit-diff/uninstall.cs", + "repository": { + "id": 58085226, + "node_id": "MDEwOlJlcG9zaXRvcnk1ODA4NTIyNg==", + "name": "jitutils", + "full_name": "dotnet/jitutils", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/jitutils", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/jitutils", + "forks_url": "https://api.github.com/repos/dotnet/jitutils/forks", + "keys_url": "https://api.github.com/repos/dotnet/jitutils/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/jitutils/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/jitutils/teams", + "hooks_url": "https://api.github.com/repos/dotnet/jitutils/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/jitutils/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/jitutils/events", + "assignees_url": "https://api.github.com/repos/dotnet/jitutils/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/jitutils/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/jitutils/tags", + "blobs_url": "https://api.github.com/repos/dotnet/jitutils/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/jitutils/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/jitutils/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/jitutils/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/jitutils/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/jitutils/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/jitutils/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/jitutils/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/jitutils/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/jitutils/subscription", + "commits_url": "https://api.github.com/repos/dotnet/jitutils/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/jitutils/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/jitutils/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/jitutils/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/jitutils/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/jitutils/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/jitutils/merges", + "archive_url": "https://api.github.com/repos/dotnet/jitutils/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/jitutils/downloads", + "issues_url": "https://api.github.com/repos/dotnet/jitutils/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/jitutils/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/jitutils/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/jitutils/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/jitutils/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/jitutils/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/jitutils/deployments" + }, + "score": 1 + }, + { + "name": "GCPerfExecutable.cs", + "path": "src/benchmarks/gc/src/analysis/managed-lib-executable/GCPerfExecutable.cs", + "sha": "0949d5af147763166fa71e0dd19b3b5523121378", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/gc/src/analysis/managed-lib-executable/GCPerfExecutable.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/0949d5af147763166fa71e0dd19b3b5523121378", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/gc/src/analysis/managed-lib-executable/GCPerfExecutable.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "UrlStringExtensions.cs", + "path": "src/Microsoft.HttpRepl/Extensions/UrlStringExtensions.cs", + "sha": "05e0ee8468b2e8712fc1ad7e8dc9420c616ee1c7", + "url": "https://api.github.com/repositories/191466073/contents/src/Microsoft.HttpRepl/Extensions/UrlStringExtensions.cs?ref=1b0b7982bba2ef34778586f460a9db938cffe4ea", + "git_url": "https://api.github.com/repositories/191466073/git/blobs/05e0ee8468b2e8712fc1ad7e8dc9420c616ee1c7", + "html_url": "https://github.com/dotnet/HttpRepl/blob/1b0b7982bba2ef34778586f460a9db938cffe4ea/src/Microsoft.HttpRepl/Extensions/UrlStringExtensions.cs", + "repository": { + "id": 191466073, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTE0NjYwNzM=", + "name": "HttpRepl", + "full_name": "dotnet/HttpRepl", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/HttpRepl", + "description": "The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that's supported everywhere .NET Core is supported and is used for making HTTP requests to test ASP.NET Core web APIs and view their results.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/HttpRepl", + "forks_url": "https://api.github.com/repos/dotnet/HttpRepl/forks", + "keys_url": "https://api.github.com/repos/dotnet/HttpRepl/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/HttpRepl/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/HttpRepl/teams", + "hooks_url": "https://api.github.com/repos/dotnet/HttpRepl/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/HttpRepl/events", + "assignees_url": "https://api.github.com/repos/dotnet/HttpRepl/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/HttpRepl/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/HttpRepl/tags", + "blobs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/HttpRepl/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/HttpRepl/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/HttpRepl/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/HttpRepl/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/HttpRepl/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/HttpRepl/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/HttpRepl/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/HttpRepl/subscription", + "commits_url": "https://api.github.com/repos/dotnet/HttpRepl/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/HttpRepl/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/HttpRepl/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/HttpRepl/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/HttpRepl/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/HttpRepl/merges", + "archive_url": "https://api.github.com/repos/dotnet/HttpRepl/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/HttpRepl/downloads", + "issues_url": "https://api.github.com/repos/dotnet/HttpRepl/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/HttpRepl/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/HttpRepl/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/HttpRepl/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/HttpRepl/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/HttpRepl/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/HttpRepl/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/Lab/Experiments/InputTest/Program.cs", + "sha": "063daa045551e58fcb7ac825e5e22ab731acf38c", + "url": "https://api.github.com/repositories/191232240/contents/src/Lab/Experiments/InputTest/Program.cs?ref=d5f1f295966c0790abc215ab6e900f810f464443", + "git_url": "https://api.github.com/repositories/191232240/git/blobs/063daa045551e58fcb7ac825e5e22ab731acf38c", + "html_url": "https://github.com/dotnet/Silk.NET/blob/d5f1f295966c0790abc215ab6e900f810f464443/src/Lab/Experiments/InputTest/Program.cs", + "repository": { + "id": 191232240, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTEyMzIyNDA=", + "name": "Silk.NET", + "full_name": "dotnet/Silk.NET", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Silk.NET", + "description": "The high-speed OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX bindings library your mother warned you about.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Silk.NET", + "forks_url": "https://api.github.com/repos/dotnet/Silk.NET/forks", + "keys_url": "https://api.github.com/repos/dotnet/Silk.NET/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Silk.NET/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Silk.NET/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Silk.NET/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Silk.NET/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Silk.NET/events", + "assignees_url": "https://api.github.com/repos/dotnet/Silk.NET/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Silk.NET/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Silk.NET/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Silk.NET/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Silk.NET/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Silk.NET/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Silk.NET/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Silk.NET/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Silk.NET/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Silk.NET/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Silk.NET/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Silk.NET/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Silk.NET/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Silk.NET/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Silk.NET/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Silk.NET/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Silk.NET/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Silk.NET/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Silk.NET/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Silk.NET/merges", + "archive_url": "https://api.github.com/repos/dotnet/Silk.NET/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Silk.NET/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Silk.NET/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Silk.NET/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Silk.NET/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Silk.NET/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Silk.NET/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Silk.NET/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Silk.NET/deployments" + }, + "score": 1 + }, + { + "name": "TaskContextProcessor.cs", + "path": "src/csharp/Microsoft.Spark.Worker/Processor/TaskContextProcessor.cs", + "sha": "0db9768d22bdd2bfc5ada95be73dcf009f6de721", + "url": "https://api.github.com/repositories/182849051/contents/src/csharp/Microsoft.Spark.Worker/Processor/TaskContextProcessor.cs?ref=b63c08b87a060e5100392bcc0069b53d3a607fcf", + "git_url": "https://api.github.com/repositories/182849051/git/blobs/0db9768d22bdd2bfc5ada95be73dcf009f6de721", + "html_url": "https://github.com/dotnet/spark/blob/b63c08b87a060e5100392bcc0069b53d3a607fcf/src/csharp/Microsoft.Spark.Worker/Processor/TaskContextProcessor.cs", + "repository": { + "id": 182849051, + "node_id": "MDEwOlJlcG9zaXRvcnkxODI4NDkwNTE=", + "name": "spark", + "full_name": "dotnet/spark", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/spark", + "description": ".NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/spark", + "forks_url": "https://api.github.com/repos/dotnet/spark/forks", + "keys_url": "https://api.github.com/repos/dotnet/spark/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/spark/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/spark/teams", + "hooks_url": "https://api.github.com/repos/dotnet/spark/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/spark/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/spark/events", + "assignees_url": "https://api.github.com/repos/dotnet/spark/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/spark/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/spark/tags", + "blobs_url": "https://api.github.com/repos/dotnet/spark/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/spark/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/spark/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/spark/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/spark/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/spark/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/spark/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/spark/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/spark/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/spark/subscription", + "commits_url": "https://api.github.com/repos/dotnet/spark/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/spark/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/spark/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/spark/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/spark/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/spark/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/spark/merges", + "archive_url": "https://api.github.com/repos/dotnet/spark/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/spark/downloads", + "issues_url": "https://api.github.com/repos/dotnet/spark/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/spark/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/spark/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/spark/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/spark/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/spark/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/spark/deployments" + }, + "score": 1 + }, + { + "name": "DbRawSqlQuery.cs", + "path": "src/EntityFramework/Infrastructure/DbRawSqlQuery.cs", + "sha": "0c62585c1f5f3e41a0349a4c0ded03f9a8f20d3d", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/Infrastructure/DbRawSqlQuery.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/0c62585c1f5f3e41a0349a4c0ded03f9a8f20d3d", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/Infrastructure/DbRawSqlQuery.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "IndexAttribute.cs", + "path": "src/EntityFramework/DataAnnotations/Schema/IndexAttribute.cs", + "sha": "0c14eeb6bf56e20df7ee0683d51c1fae6b7052ff", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/DataAnnotations/Schema/IndexAttribute.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/0c14eeb6bf56e20df7ee0683d51c1fae6b7052ff", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/DataAnnotations/Schema/IndexAttribute.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "SqlSelectStatement.cs", + "path": "src/EntityFramework.SqlServer/SqlGen/SqlSelectStatement.cs", + "sha": "146a9a1ecbe15e9e6ff418ad482524b879aa4581", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework.SqlServer/SqlGen/SqlSelectStatement.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/146a9a1ecbe15e9e6ff418ad482524b879aa4581", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework.SqlServer/SqlGen/SqlSelectStatement.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "Options.cs", + "path": "eng/src/file-pusher/Options.cs", + "sha": "10931b22060dce8b212cd212b8eb8d85c2199ad1", + "url": "https://api.github.com/repositories/89951797/contents/eng/src/file-pusher/Options.cs?ref=9791b1592829efbcd4da15a4aabed083b66615b7", + "git_url": "https://api.github.com/repositories/89951797/git/blobs/10931b22060dce8b212cd212b8eb8d85c2199ad1", + "html_url": "https://github.com/dotnet/docker-tools/blob/9791b1592829efbcd4da15a4aabed083b66615b7/eng/src/file-pusher/Options.cs", + "repository": { + "id": 89951797, + "node_id": "MDEwOlJlcG9zaXRvcnk4OTk1MTc5Nw==", + "name": "docker-tools", + "full_name": "dotnet/docker-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docker-tools", + "description": "This is a repo to house some common tools for our various docker repos. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docker-tools", + "forks_url": "https://api.github.com/repos/dotnet/docker-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/docker-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docker-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docker-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docker-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docker-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docker-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/docker-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docker-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docker-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docker-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docker-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docker-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docker-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docker-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docker-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docker-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docker-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docker-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docker-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docker-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docker-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docker-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docker-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docker-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docker-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docker-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/docker-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docker-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docker-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docker-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docker-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docker-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docker-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docker-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docker-tools/deployments" + }, + "score": 1 + }, + { + "name": "Perf.Channel.cs", + "path": "src/benchmarks/micro/libraries/System.Threading.Channels/Perf.Channel.cs", + "sha": "14d9773bef754ab539b0ecfd5eba6d7841ab1a3e", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/libraries/System.Threading.Channels/Perf.Channel.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/14d9773bef754ab539b0ecfd5eba6d7841ab1a3e", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/libraries/System.Threading.Channels/Perf.Channel.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "ScriptSourceResolver.cs", + "path": "src/Scripting/Core/ScriptSourceResolver.cs", + "sha": "000f1537401fa8652189a786bf4c2d47305eff37", + "url": "https://api.github.com/repositories/29078997/contents/src/Scripting/Core/ScriptSourceResolver.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/000f1537401fa8652189a786bf4c2d47305eff37", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Scripting/Core/ScriptSourceResolver.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/10-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/10-codeSearch.json new file mode 100644 index 00000000000..7fe2ed70c26 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/10-codeSearch.json @@ -0,0 +1,13 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=10" + }, + "response": { + "status": 403, + "body": { + "message": "API rate limit exceeded for user ID 311693.", + "documentation_url": "https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/11-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/11-codeSearch.json new file mode 100644 index 00000000000..336f8c21ef3 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/11-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=10" + }, + "response": { + "status": 200, + "body": { + "total_count": 1312, + "incomplete_results": false, + "items": [ + { + "name": "DoNotUseTimersThatPreventPowerStateChanges.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs", + "sha": "31b0c01c3afb3f850f99edd5f2cf76d74c1f2c56", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/31b0c01c3afb3f850f99edd5f2cf76d74c1f2c56", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "FaultConverter.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/FaultConverter.cs", + "sha": "40151618cf4010410db8b53e7943ffa1fe27b0da", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/FaultConverter.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/40151618cf4010410db8b53e7943ffa1fe27b0da", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/FaultConverter.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AnsiConsole.cs", + "path": "src/Microsoft.Repl/ConsoleHandling/AnsiConsole.cs", + "sha": "327094f2930783649d483853d2b0903029fdf806", + "url": "https://api.github.com/repositories/191466073/contents/src/Microsoft.Repl/ConsoleHandling/AnsiConsole.cs?ref=1b0b7982bba2ef34778586f460a9db938cffe4ea", + "git_url": "https://api.github.com/repositories/191466073/git/blobs/327094f2930783649d483853d2b0903029fdf806", + "html_url": "https://github.com/dotnet/HttpRepl/blob/1b0b7982bba2ef34778586f460a9db938cffe4ea/src/Microsoft.Repl/ConsoleHandling/AnsiConsole.cs", + "repository": { + "id": 191466073, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTE0NjYwNzM=", + "name": "HttpRepl", + "full_name": "dotnet/HttpRepl", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/HttpRepl", + "description": "The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that's supported everywhere .NET Core is supported and is used for making HTTP requests to test ASP.NET Core web APIs and view their results.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/HttpRepl", + "forks_url": "https://api.github.com/repos/dotnet/HttpRepl/forks", + "keys_url": "https://api.github.com/repos/dotnet/HttpRepl/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/HttpRepl/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/HttpRepl/teams", + "hooks_url": "https://api.github.com/repos/dotnet/HttpRepl/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/HttpRepl/events", + "assignees_url": "https://api.github.com/repos/dotnet/HttpRepl/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/HttpRepl/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/HttpRepl/tags", + "blobs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/HttpRepl/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/HttpRepl/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/HttpRepl/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/HttpRepl/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/HttpRepl/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/HttpRepl/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/HttpRepl/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/HttpRepl/subscription", + "commits_url": "https://api.github.com/repos/dotnet/HttpRepl/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/HttpRepl/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/HttpRepl/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/HttpRepl/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/HttpRepl/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/HttpRepl/merges", + "archive_url": "https://api.github.com/repos/dotnet/HttpRepl/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/HttpRepl/downloads", + "issues_url": "https://api.github.com/repos/dotnet/HttpRepl/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/HttpRepl/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/HttpRepl/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/HttpRepl/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/HttpRepl/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/HttpRepl/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/HttpRepl/deployments" + }, + "score": 1 + }, + { + "name": "CodeArrayCreateExpression.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeArrayCreateExpression.cs", + "sha": "387ce3e85a77c35fd5b3000935c45e1de220da60", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeArrayCreateExpression.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/387ce3e85a77c35fd5b3000935c45e1de220da60", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeArrayCreateExpression.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "BufferGraphExtensions.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BufferGraphExtensions.cs", + "sha": "30f0d8b993e02c10e73abf52c83e6b07c7f99bee", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BufferGraphExtensions.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/30f0d8b993e02c10e73abf52c83e6b07c7f99bee", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BufferGraphExtensions.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "MetricCollection.cs", + "path": "src/jit-analyze/MetricCollection.cs", + "sha": "35307b2c270c3034903f791216111aaf13f675a0", + "url": "https://api.github.com/repositories/58085226/contents/src/jit-analyze/MetricCollection.cs?ref=2ee1e8ac13f646376effa1522c92881a468e89bb", + "git_url": "https://api.github.com/repositories/58085226/git/blobs/35307b2c270c3034903f791216111aaf13f675a0", + "html_url": "https://github.com/dotnet/jitutils/blob/2ee1e8ac13f646376effa1522c92881a468e89bb/src/jit-analyze/MetricCollection.cs", + "repository": { + "id": 58085226, + "node_id": "MDEwOlJlcG9zaXRvcnk1ODA4NTIyNg==", + "name": "jitutils", + "full_name": "dotnet/jitutils", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/jitutils", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/jitutils", + "forks_url": "https://api.github.com/repos/dotnet/jitutils/forks", + "keys_url": "https://api.github.com/repos/dotnet/jitutils/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/jitutils/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/jitutils/teams", + "hooks_url": "https://api.github.com/repos/dotnet/jitutils/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/jitutils/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/jitutils/events", + "assignees_url": "https://api.github.com/repos/dotnet/jitutils/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/jitutils/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/jitutils/tags", + "blobs_url": "https://api.github.com/repos/dotnet/jitutils/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/jitutils/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/jitutils/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/jitutils/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/jitutils/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/jitutils/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/jitutils/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/jitutils/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/jitutils/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/jitutils/subscription", + "commits_url": "https://api.github.com/repos/dotnet/jitutils/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/jitutils/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/jitutils/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/jitutils/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/jitutils/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/jitutils/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/jitutils/merges", + "archive_url": "https://api.github.com/repos/dotnet/jitutils/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/jitutils/downloads", + "issues_url": "https://api.github.com/repos/dotnet/jitutils/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/jitutils/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/jitutils/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/jitutils/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/jitutils/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/jitutils/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/jitutils/deployments" + }, + "score": 1 + }, + { + "name": "ModelCodeGeneratorSelector.cs", + "path": "src/EFCore.Design/Scaffolding/Internal/ModelCodeGeneratorSelector.cs", + "sha": "33cb619e2dc0e6bb36cde2d6a7afc3b7feef8c79", + "url": "https://api.github.com/repositories/16157746/contents/src/EFCore.Design/Scaffolding/Internal/ModelCodeGeneratorSelector.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/33cb619e2dc0e6bb36cde2d6a7afc3b7feef8c79", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/EFCore.Design/Scaffolding/Internal/ModelCodeGeneratorSelector.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "ErrorBehavior.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/ErrorBehavior.cs", + "sha": "4371ef84e2d0dfa3e6d8a836be83da8252985c87", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/ErrorBehavior.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/4371ef84e2d0dfa3e6d8a836be83da8252985c87", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/ErrorBehavior.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "SessionHandle.Windows.cs", + "path": "src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SessionHandle.Windows.cs", + "sha": "3783256cc0372c979471c2cf9558de0219c33559", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SessionHandle.Windows.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/3783256cc0372c979471c2cf9558de0219c33559", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SessionHandle.Windows.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "CliCommand.cs", + "path": "src/System.CommandLine/CliCommand.cs", + "sha": "2e335c7276219c48cc86905064939d459ebc658f", + "url": "https://api.github.com/repositories/129934884/contents/src/System.CommandLine/CliCommand.cs?ref=f6ff2f1a94a58617e744f8fe0d469a2a420a6259", + "git_url": "https://api.github.com/repositories/129934884/git/blobs/2e335c7276219c48cc86905064939d459ebc658f", + "html_url": "https://github.com/dotnet/command-line-api/blob/f6ff2f1a94a58617e744f8fe0d469a2a420a6259/src/System.CommandLine/CliCommand.cs", + "repository": { + "id": 129934884, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk5MzQ4ODQ=", + "name": "command-line-api", + "full_name": "dotnet/command-line-api", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/command-line-api", + "description": "Command line parsing, invocation, and rendering of terminal output.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/command-line-api", + "forks_url": "https://api.github.com/repos/dotnet/command-line-api/forks", + "keys_url": "https://api.github.com/repos/dotnet/command-line-api/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/command-line-api/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/command-line-api/teams", + "hooks_url": "https://api.github.com/repos/dotnet/command-line-api/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/command-line-api/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/command-line-api/events", + "assignees_url": "https://api.github.com/repos/dotnet/command-line-api/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/command-line-api/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/command-line-api/tags", + "blobs_url": "https://api.github.com/repos/dotnet/command-line-api/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/command-line-api/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/command-line-api/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/command-line-api/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/command-line-api/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/command-line-api/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/command-line-api/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/command-line-api/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/command-line-api/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/command-line-api/subscription", + "commits_url": "https://api.github.com/repos/dotnet/command-line-api/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/command-line-api/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/command-line-api/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/command-line-api/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/command-line-api/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/command-line-api/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/command-line-api/merges", + "archive_url": "https://api.github.com/repos/dotnet/command-line-api/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/command-line-api/downloads", + "issues_url": "https://api.github.com/repos/dotnet/command-line-api/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/command-line-api/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/command-line-api/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/command-line-api/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/command-line-api/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/command-line-api/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/command-line-api/deployments" + }, + "score": 1 + }, + { + "name": "XmlResultJargon.cs", + "path": "src/Microsoft.DotNet.XHarness.Common/XmlResultJargon.cs", + "sha": "3b284eae163e18bf9ac5cf3f1a2ef98544f25bef", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.Common/XmlResultJargon.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/3b284eae163e18bf9ac5cf3f1a2ef98544f25bef", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.Common/XmlResultJargon.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "DisposableTypesShouldDeclareFinalizer.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs", + "sha": "3733c7d36f9f4336cf62e8cb73def5351285ddc2", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/3733c7d36f9f4336cf62e8cb73def5351285ddc2", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "MessagePropertyDescriptionCollection.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Description/MessagePropertyDescriptionCollection.cs", + "sha": "2f5b31f8d002f18ed806c30ff48c60b45a78a43c", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Description/MessagePropertyDescriptionCollection.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2f5b31f8d002f18ed806c30ff48c60b45a78a43c", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Description/MessagePropertyDescriptionCollection.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "WSAddressing10ProblemHeaderQNameFault.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/WSAddressing10ProblemHeaderQNameFault.cs", + "sha": "314a6005b96f35e32376ec5a0c3bda02125e4830", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/WSAddressing10ProblemHeaderQNameFault.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/314a6005b96f35e32376ec5a0c3bda02125e4830", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/WSAddressing10ProblemHeaderQNameFault.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "LifetimeManager.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/LifetimeManager.cs", + "sha": "3e0c75d4aff6bfc1a482b4397c946e389ed22700", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/LifetimeManager.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3e0c75d4aff6bfc1a482b4397c946e389ed22700", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/LifetimeManager.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "DoNotUseInsecureDtdProcessingAnalyzerTests.cs", + "path": "src/NetAnalyzers/UnitTests/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingAnalyzerTests.cs", + "sha": "31369700cc068df8b0f6c81fdbd0a2bf17f4fc5c", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/UnitTests/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingAnalyzerTests.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/31369700cc068df8b0f6c81fdbd0a2bf17f4fc5c", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/UnitTests/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingAnalyzerTests.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "SecurityStandardsManager.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecurityStandardsManager.cs", + "sha": "4235dfd49885e4f86e6e4472374f4080172e5fde", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecurityStandardsManager.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/4235dfd49885e4f86e6e4472374f4080172e5fde", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecurityStandardsManager.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "IdentityModelDictionary.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/IdentityModelDictionary.cs", + "sha": "3e54a77ebc37580c41600f0df76ceeab26d08290", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/IdentityModelDictionary.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3e54a77ebc37580c41600f0df76ceeab26d08290", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/IdentityModelDictionary.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "VectorFloat.cs", + "path": "src/benchmarks/micro/runtime/SIMD/ConsoleMandel/VectorFloat.cs", + "sha": "418c271fcf1f0efe1248f9fa52897ea983008e0f", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/SIMD/ConsoleMandel/VectorFloat.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/418c271fcf1f0efe1248f9fa52897ea983008e0f", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/SIMD/ConsoleMandel/VectorFloat.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "TransportSecurityBindingElement.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/TransportSecurityBindingElement.cs", + "sha": "31325a9530b6e94d1237134e1c1bb14589dbcdd0", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/TransportSecurityBindingElement.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/31325a9530b6e94d1237134e1c1bb14589dbcdd0", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/TransportSecurityBindingElement.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AvoidUsingCrefTagsWithAPrefix.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs", + "sha": "3f7fdb560c39fd836781500e8447fc9daf032ad2", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/3f7fdb560c39fd836781500e8447fc9daf032ad2", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "SchemaDataGenerator.cs", + "path": "src/Microsoft.HttpRepl/OpenApi/SchemaDataGenerator.cs", + "sha": "3e15fb0e225f18bd199bd40842a48ef859999708", + "url": "https://api.github.com/repositories/191466073/contents/src/Microsoft.HttpRepl/OpenApi/SchemaDataGenerator.cs?ref=1b0b7982bba2ef34778586f460a9db938cffe4ea", + "git_url": "https://api.github.com/repositories/191466073/git/blobs/3e15fb0e225f18bd199bd40842a48ef859999708", + "html_url": "https://github.com/dotnet/HttpRepl/blob/1b0b7982bba2ef34778586f460a9db938cffe4ea/src/Microsoft.HttpRepl/OpenApi/SchemaDataGenerator.cs", + "repository": { + "id": 191466073, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTE0NjYwNzM=", + "name": "HttpRepl", + "full_name": "dotnet/HttpRepl", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/HttpRepl", + "description": "The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that's supported everywhere .NET Core is supported and is used for making HTTP requests to test ASP.NET Core web APIs and view their results.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/HttpRepl", + "forks_url": "https://api.github.com/repos/dotnet/HttpRepl/forks", + "keys_url": "https://api.github.com/repos/dotnet/HttpRepl/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/HttpRepl/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/HttpRepl/teams", + "hooks_url": "https://api.github.com/repos/dotnet/HttpRepl/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/HttpRepl/events", + "assignees_url": "https://api.github.com/repos/dotnet/HttpRepl/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/HttpRepl/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/HttpRepl/tags", + "blobs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/HttpRepl/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/HttpRepl/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/HttpRepl/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/HttpRepl/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/HttpRepl/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/HttpRepl/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/HttpRepl/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/HttpRepl/subscription", + "commits_url": "https://api.github.com/repos/dotnet/HttpRepl/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/HttpRepl/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/HttpRepl/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/HttpRepl/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/HttpRepl/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/HttpRepl/merges", + "archive_url": "https://api.github.com/repos/dotnet/HttpRepl/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/HttpRepl/downloads", + "issues_url": "https://api.github.com/repos/dotnet/HttpRepl/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/HttpRepl/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/HttpRepl/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/HttpRepl/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/HttpRepl/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/HttpRepl/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/HttpRepl/deployments" + }, + "score": 1 + }, + { + "name": "LocalAllocationTransform2.cs", + "path": "src/Compiler/Infer/Transforms/LocalAllocationTransform2.cs", + "sha": "3da3165bc9064efb3015922bfc2601cc3167f530", + "url": "https://api.github.com/repositories/148852400/contents/src/Compiler/Infer/Transforms/LocalAllocationTransform2.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/3da3165bc9064efb3015922bfc2601cc3167f530", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Compiler/Infer/Transforms/LocalAllocationTransform2.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction.cs", + "path": "sources/LLVMSharp.Interop/Manual/LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction.cs", + "sha": "2f22cdf6fd0edd4fc91234b030cb5d899b98aec6", + "url": "https://api.github.com/repositories/30781424/contents/sources/LLVMSharp.Interop/Manual/LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction.cs?ref=ea05882d8a677a1b76b7d9ef8eca64f43309c9ac", + "git_url": "https://api.github.com/repositories/30781424/git/blobs/2f22cdf6fd0edd4fc91234b030cb5d899b98aec6", + "html_url": "https://github.com/dotnet/LLVMSharp/blob/ea05882d8a677a1b76b7d9ef8eca64f43309c9ac/sources/LLVMSharp.Interop/Manual/LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction.cs", + "repository": { + "id": 30781424, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDc4MTQyNA==", + "name": "LLVMSharp", + "full_name": "dotnet/LLVMSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/LLVMSharp", + "description": "LLVM bindings for .NET Standard written in C# using ClangSharp", + "fork": false, + "url": "https://api.github.com/repos/dotnet/LLVMSharp", + "forks_url": "https://api.github.com/repos/dotnet/LLVMSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/LLVMSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/LLVMSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/LLVMSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/LLVMSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/LLVMSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/LLVMSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/LLVMSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/LLVMSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/LLVMSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/LLVMSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/LLVMSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/LLVMSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/LLVMSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/LLVMSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/LLVMSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/LLVMSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/LLVMSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/LLVMSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/LLVMSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/LLVMSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/LLVMSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/LLVMSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/LLVMSharp/deployments" + }, + "score": 1 + }, + { + "name": "NetHttpsBinding.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/NetHttpsBinding.cs", + "sha": "2dc167a45af91f5ec11b2c5e5d2dada911af5920", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/NetHttpsBinding.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2dc167a45af91f5ec11b2c5e5d2dada911af5920", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/NetHttpsBinding.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "EmptyQuery.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/XPath/Internal/EmptyQuery.cs", + "sha": "32160fa2c8ec930e7e043d9e4943bbbecd0e82fb", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/XPath/Internal/EmptyQuery.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/32160fa2c8ec930e7e043d9e4943bbbecd0e82fb", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/XPath/Internal/EmptyQuery.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "Samples/KerberosMiddlewareEndToEndSample/Properties/AssemblyInfo.cs", + "sha": "3bd94ce0385d02467c1b190f524f1730cc14a817", + "url": "https://api.github.com/repositories/85489138/contents/Samples/KerberosMiddlewareEndToEndSample/Properties/AssemblyInfo.cs?ref=aa5bbea0c867f56fd55ddb5c4b07dd7ef7f563fd", + "git_url": "https://api.github.com/repositories/85489138/git/blobs/3bd94ce0385d02467c1b190f524f1730cc14a817", + "html_url": "https://github.com/dotnet/Kerberos.NET/blob/aa5bbea0c867f56fd55ddb5c4b07dd7ef7f563fd/Samples/KerberosMiddlewareEndToEndSample/Properties/AssemblyInfo.cs", + "repository": { + "id": 85489138, + "node_id": "MDEwOlJlcG9zaXRvcnk4NTQ4OTEzOA==", + "name": "Kerberos.NET", + "full_name": "dotnet/Kerberos.NET", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Kerberos.NET", + "description": "A Kerberos implementation built entirely in managed code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Kerberos.NET", + "forks_url": "https://api.github.com/repos/dotnet/Kerberos.NET/forks", + "keys_url": "https://api.github.com/repos/dotnet/Kerberos.NET/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Kerberos.NET/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Kerberos.NET/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Kerberos.NET/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Kerberos.NET/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Kerberos.NET/events", + "assignees_url": "https://api.github.com/repos/dotnet/Kerberos.NET/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Kerberos.NET/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Kerberos.NET/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Kerberos.NET/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Kerberos.NET/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Kerberos.NET/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Kerberos.NET/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Kerberos.NET/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Kerberos.NET/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Kerberos.NET/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Kerberos.NET/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Kerberos.NET/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Kerberos.NET/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Kerberos.NET/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Kerberos.NET/merges", + "archive_url": "https://api.github.com/repos/dotnet/Kerberos.NET/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Kerberos.NET/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Kerberos.NET/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Kerberos.NET/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Kerberos.NET/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Kerberos.NET/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Kerberos.NET/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Kerberos.NET/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Kerberos.NET/deployments" + }, + "score": 1 + }, + { + "name": "Functions.cs", + "path": "Maestro/src/Microsoft.DotNet.Maestro.WebJob/Functions.cs", + "sha": "43c63223df88c9851cd9a1a30202019ec51e9e8c", + "url": "https://api.github.com/repositories/56803734/contents/Maestro/src/Microsoft.DotNet.Maestro.WebJob/Functions.cs?ref=47ece761793c373569eedf314e9999a6d8d6c50f", + "git_url": "https://api.github.com/repositories/56803734/git/blobs/43c63223df88c9851cd9a1a30202019ec51e9e8c", + "html_url": "https://github.com/dotnet/versions/blob/47ece761793c373569eedf314e9999a6d8d6c50f/Maestro/src/Microsoft.DotNet.Maestro.WebJob/Functions.cs", + "repository": { + "id": 56803734, + "node_id": "MDEwOlJlcG9zaXRvcnk1NjgwMzczNA==", + "name": "versions", + "full_name": "dotnet/versions", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/versions", + "description": "This repo contains information about the various component versions that ship with .NET Core. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/versions", + "forks_url": "https://api.github.com/repos/dotnet/versions/forks", + "keys_url": "https://api.github.com/repos/dotnet/versions/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/versions/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/versions/teams", + "hooks_url": "https://api.github.com/repos/dotnet/versions/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/versions/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/versions/events", + "assignees_url": "https://api.github.com/repos/dotnet/versions/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/versions/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/versions/tags", + "blobs_url": "https://api.github.com/repos/dotnet/versions/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/versions/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/versions/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/versions/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/versions/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/versions/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/versions/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/versions/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/versions/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/versions/subscription", + "commits_url": "https://api.github.com/repos/dotnet/versions/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/versions/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/versions/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/versions/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/versions/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/versions/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/versions/merges", + "archive_url": "https://api.github.com/repos/dotnet/versions/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/versions/downloads", + "issues_url": "https://api.github.com/repos/dotnet/versions/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/versions/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/versions/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/versions/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/versions/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/versions/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/versions/deployments" + }, + "score": 1 + }, + { + "name": "JsonConverterCollectionExtensions.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/JsonConverterCollectionExtensions.cs", + "sha": "3a87fd757521299bf5b0a3994c51851850bf43a6", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/JsonConverterCollectionExtensions.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/3a87fd757521299bf5b0a3994c51851850bf43a6", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/JsonConverterCollectionExtensions.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "TagHelperDeltaResultJsonConverter.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/TagHelperDeltaResultJsonConverter.cs", + "sha": "3935bf3ead2767216a18ba712419cf0a5cb32eb2", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/TagHelperDeltaResultJsonConverter.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/3935bf3ead2767216a18ba712419cf0a5cb32eb2", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/TagHelperDeltaResultJsonConverter.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "Decompress.cs", + "path": "src/Utils/Decompress.cs", + "sha": "366bf651975c759e14e366d2466782d36cf612c9", + "url": "https://api.github.com/repositories/414263802/contents/src/Utils/Decompress.cs?ref=df2332c7b5adab82a8cea71da655a7c426ad36fb", + "git_url": "https://api.github.com/repositories/414263802/git/blobs/366bf651975c759e14e366d2466782d36cf612c9", + "html_url": "https://github.com/dotnet/TorchSharpExamples/blob/df2332c7b5adab82a8cea71da655a7c426ad36fb/src/Utils/Decompress.cs", + "repository": { + "id": 414263802, + "node_id": "R_kgDOGLEp-g", + "name": "TorchSharpExamples", + "full_name": "dotnet/TorchSharpExamples", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/TorchSharpExamples", + "description": "Repository for TorchSharp examples and tutorials.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/TorchSharpExamples", + "forks_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/forks", + "keys_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/teams", + "hooks_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/events", + "assignees_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/tags", + "blobs_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/subscription", + "commits_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/merges", + "archive_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/downloads", + "issues_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/TorchSharpExamples/deployments" + }, + "score": 1 + }, + { + "name": "LValueFlowCapturesProvider.cs", + "path": "src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LValueFlowCapturesProvider.cs", + "sha": "3401b74a505dad0355ba0a617db3b1490f07810a", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LValueFlowCapturesProvider.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/3401b74a505dad0355ba0a617db3b1490f07810a", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LValueFlowCapturesProvider.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "CommandBase.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/Commands/CommandBase.cs", + "sha": "3bf0eadee806e614916a76fd135c71a2bf2a41f9", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/Commands/CommandBase.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/3bf0eadee806e614916a76fd135c71a2bf2a41f9", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/Commands/CommandBase.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "EventId.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Kinds/EventId.cs", + "sha": "369d5684b3493904c3592d87b79444061d942dbb", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Kinds/EventId.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/369d5684b3493904c3592d87b79444061d942dbb", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Kinds/EventId.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "DefaultProjectEngineFactory.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DefaultProjectEngineFactory.cs", + "sha": "36cfbac1d2b49056c55853ee291394c726cf5f56", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DefaultProjectEngineFactory.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/36cfbac1d2b49056c55853ee291394c726cf5f56", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DefaultProjectEngineFactory.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "HoverEndpoint.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Hover/HoverEndpoint.cs", + "sha": "2daed7d7e32286ded05d4dc6840fa0d29ce8c628", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Hover/HoverEndpoint.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2daed7d7e32286ded05d4dc6840fa0d29ce8c628", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Hover/HoverEndpoint.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "XmlReaderSettings.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlReaderSettings.cs", + "sha": "3f968e67bf8ef1686f6c1c2e7dd6c85b26dd5709", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlReaderSettings.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3f968e67bf8ef1686f6c1c2e7dd6c85b26dd5709", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlReaderSettings.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "RequestSecurityTokenResponseCollection.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Security/RequestSecurityTokenResponseCollection.cs", + "sha": "39c38fb4aa4acf6f56fe73c7b0022805af7d167c", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Security/RequestSecurityTokenResponseCollection.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/39c38fb4aa4acf6f56fe73c7b0022805af7d167c", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Security/RequestSecurityTokenResponseCollection.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "FacetChecker.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/FacetChecker.cs", + "sha": "3b3b73932dc2a37e9d2b43c0daf6d48b23cfff72", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/FacetChecker.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3b3b73932dc2a37e9d2b43c0daf6d48b23cfff72", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/FacetChecker.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "Perf.Segment.cs", + "path": "src/benchmarks/micro/libraries/System.Text.Json/Utf8JsonReader/Perf.Segment.cs", + "sha": "409904dcce7b8fe046f5b6a8447becc3ece677f3", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/libraries/System.Text.Json/Utf8JsonReader/Perf.Segment.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/409904dcce7b8fe046f5b6a8447becc3ece677f3", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/libraries/System.Text.Json/Utf8JsonReader/Perf.Segment.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "EntityFinder.cs", + "path": "src/EFCore/Internal/EntityFinder.cs", + "sha": "2e06583056c96f8c0f9ed7ab5a9357579edaadf8", + "url": "https://api.github.com/repositories/16157746/contents/src/EFCore/Internal/EntityFinder.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/2e06583056c96f8c0f9ed7ab5a9357579edaadf8", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/EFCore/Internal/EntityFinder.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "TimeBoundedCache.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/TimeBoundedCache.cs", + "sha": "3c5cbf577155de6d732e4ca67a2b5be562e72a4b", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/TimeBoundedCache.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3c5cbf577155de6d732e4ca67a2b5be562e72a4b", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/TimeBoundedCache.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "KnownTypeDataContractResolver.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/KnownTypeDataContractResolver.cs", + "sha": "324ca5b8933011d0cedbe57d403310cfe6a402de", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/KnownTypeDataContractResolver.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/324ca5b8933011d0cedbe57d403310cfe6a402de", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/KnownTypeDataContractResolver.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "UserTask.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Kinds/UserTask.cs", + "sha": "34ed4dcdc0c7bef77dc45f19408a14ee20113ea4", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Kinds/UserTask.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/34ed4dcdc0c7bef77dc45f19408a14ee20113ea4", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Kinds/UserTask.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "DefaultProjectWorkspaceStateGenerator.cs", + "path": "src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultProjectWorkspaceStateGenerator.cs", + "sha": "36cf3b6f4dd6b36cd410c6e12fe6e34486644a33", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultProjectWorkspaceStateGenerator.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/36cf3b6f4dd6b36cd410c6e12fe6e34486644a33", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultProjectWorkspaceStateGenerator.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "Global.asax.cs", + "path": "Maestro/src/Microsoft.DotNet.Maestro.WebApi/Global.asax.cs", + "sha": "2dfe81bac2ff40850e3ff5103dee11fe7e4dc3d1", + "url": "https://api.github.com/repositories/56803734/contents/Maestro/src/Microsoft.DotNet.Maestro.WebApi/Global.asax.cs?ref=47ece761793c373569eedf314e9999a6d8d6c50f", + "git_url": "https://api.github.com/repositories/56803734/git/blobs/2dfe81bac2ff40850e3ff5103dee11fe7e4dc3d1", + "html_url": "https://github.com/dotnet/versions/blob/47ece761793c373569eedf314e9999a6d8d6c50f/Maestro/src/Microsoft.DotNet.Maestro.WebApi/Global.asax.cs", + "repository": { + "id": 56803734, + "node_id": "MDEwOlJlcG9zaXRvcnk1NjgwMzczNA==", + "name": "versions", + "full_name": "dotnet/versions", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/versions", + "description": "This repo contains information about the various component versions that ship with .NET Core. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/versions", + "forks_url": "https://api.github.com/repos/dotnet/versions/forks", + "keys_url": "https://api.github.com/repos/dotnet/versions/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/versions/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/versions/teams", + "hooks_url": "https://api.github.com/repos/dotnet/versions/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/versions/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/versions/events", + "assignees_url": "https://api.github.com/repos/dotnet/versions/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/versions/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/versions/tags", + "blobs_url": "https://api.github.com/repos/dotnet/versions/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/versions/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/versions/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/versions/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/versions/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/versions/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/versions/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/versions/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/versions/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/versions/subscription", + "commits_url": "https://api.github.com/repos/dotnet/versions/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/versions/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/versions/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/versions/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/versions/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/versions/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/versions/merges", + "archive_url": "https://api.github.com/repos/dotnet/versions/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/versions/downloads", + "issues_url": "https://api.github.com/repos/dotnet/versions/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/versions/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/versions/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/versions/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/versions/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/versions/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/versions/deployments" + }, + "score": 1 + }, + { + "name": "TdsParser.RegisterEncoding.cs", + "path": "src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.RegisterEncoding.cs", + "sha": "433e5007c7d9bf0b13c7468f1aaf50f7920beafd", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.RegisterEncoding.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/433e5007c7d9bf0b13c7468f1aaf50f7920beafd", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.RegisterEncoding.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "SqlClientOriginalAddressInfo.cs", + "path": "src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlClientOriginalAddressInfo.cs", + "sha": "3800c195a3366c33397e1421b8f0e7055d92a47e", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlClientOriginalAddressInfo.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/3800c195a3366c33397e1421b8f0e7055d92a47e", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlClientOriginalAddressInfo.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs", + "sha": "40fe3633d51c97e3ae18e1232588436f820006c2", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/40fe3633d51c97e3ae18e1232588436f820006c2", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "JitDasmRootCommand.cs", + "path": "src/jit-dasm/JitDasmRootCommand.cs", + "sha": "3682741ff2bf9de8ec21c6f31745761e6e6dc4d0", + "url": "https://api.github.com/repositories/58085226/contents/src/jit-dasm/JitDasmRootCommand.cs?ref=2ee1e8ac13f646376effa1522c92881a468e89bb", + "git_url": "https://api.github.com/repositories/58085226/git/blobs/3682741ff2bf9de8ec21c6f31745761e6e6dc4d0", + "html_url": "https://github.com/dotnet/jitutils/blob/2ee1e8ac13f646376effa1522c92881a468e89bb/src/jit-dasm/JitDasmRootCommand.cs", + "repository": { + "id": 58085226, + "node_id": "MDEwOlJlcG9zaXRvcnk1ODA4NTIyNg==", + "name": "jitutils", + "full_name": "dotnet/jitutils", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/jitutils", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/jitutils", + "forks_url": "https://api.github.com/repos/dotnet/jitutils/forks", + "keys_url": "https://api.github.com/repos/dotnet/jitutils/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/jitutils/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/jitutils/teams", + "hooks_url": "https://api.github.com/repos/dotnet/jitutils/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/jitutils/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/jitutils/events", + "assignees_url": "https://api.github.com/repos/dotnet/jitutils/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/jitutils/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/jitutils/tags", + "blobs_url": "https://api.github.com/repos/dotnet/jitutils/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/jitutils/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/jitutils/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/jitutils/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/jitutils/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/jitutils/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/jitutils/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/jitutils/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/jitutils/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/jitutils/subscription", + "commits_url": "https://api.github.com/repos/dotnet/jitutils/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/jitutils/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/jitutils/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/jitutils/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/jitutils/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/jitutils/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/jitutils/merges", + "archive_url": "https://api.github.com/repos/dotnet/jitutils/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/jitutils/downloads", + "issues_url": "https://api.github.com/repos/dotnet/jitutils/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/jitutils/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/jitutils/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/jitutils/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/jitutils/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/jitutils/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/jitutils/deployments" + }, + "score": 1 + }, + { + "name": "AcceptAnyUsernameSecurityTokenHandler.cs", + "path": "src/System.Private.ServiceModel/tools/IISHostedWcfService/App_code/testhosts/Federation/AcceptAnyUsernameSecurityTokenHandler.cs", + "sha": "3bdd7945c929c7cf3b5a5a0468ca2a8788add016", + "url": "https://api.github.com/repositories/35562993/contents/src/System.Private.ServiceModel/tools/IISHostedWcfService/App_code/testhosts/Federation/AcceptAnyUsernameSecurityTokenHandler.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3bdd7945c929c7cf3b5a5a0468ca2a8788add016", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.Private.ServiceModel/tools/IISHostedWcfService/App_code/testhosts/Federation/AcceptAnyUsernameSecurityTokenHandler.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineProject.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Workspace/CommandLineProject.cs", + "sha": "374af767a20d83a7e8d7163ecc52045ed6a6d10a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Workspace/CommandLineProject.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/374af767a20d83a7e8d7163ecc52045ed6a6d10a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Workspace/CommandLineProject.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DiagnosticProject.cs", + "path": "src/aspnetcore/src/Analyzers/Microsoft.AspNetCore.Analyzer.Testing/src/DiagnosticProject.cs", + "sha": "381e38557ccc785a1b61a534fddad63d5792d21a", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Analyzers/Microsoft.AspNetCore.Analyzer.Testing/src/DiagnosticProject.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/381e38557ccc785a1b61a534fddad63d5792d21a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Analyzers/Microsoft.AspNetCore.Analyzer.Testing/src/DiagnosticProject.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectOutputElement.cs", + "path": "src/msbuild/src/Build/Construction/ProjectOutputElement.cs", + "sha": "43814d3f9a08e0b509750653da0d1ef78c4a35ce", + "url": "https://api.github.com/repositories/550902717/contents/src/msbuild/src/Build/Construction/ProjectOutputElement.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/43814d3f9a08e0b509750653da0d1ef78c4a35ce", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/msbuild/src/Build/Construction/ProjectOutputElement.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Microsoft.CodeAnalysis.Workspaces.cs", + "path": "src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "sha": "2e3704253e1da684f44793b96daa37f808d0057d", + "url": "https://api.github.com/repositories/176748372/contents/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/2e3704253e1da684f44793b96daa37f808d0057d", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "ReferenceContainerNode.cs", + "path": "src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/ReferenceContainerNode.cs", + "sha": "3850d0c4e0bfd4ccf7c2be87a061e987334b59d4", + "url": "https://api.github.com/repositories/550902717/contents/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/ReferenceContainerNode.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3850d0c4e0bfd4ccf7c2be87a061e987334b59d4", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/ReferenceContainerNode.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AnnotatedUsage.cs", + "path": "src/arcade/src/Microsoft.DotNet.SourceBuild/tasks/src/UsageReport/AnnotatedUsage.cs", + "sha": "383cde9cbf93aa0978c58eecf7079d26b0e9e82c", + "url": "https://api.github.com/repositories/550902717/contents/src/arcade/src/Microsoft.DotNet.SourceBuild/tasks/src/UsageReport/AnnotatedUsage.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/383cde9cbf93aa0978c58eecf7079d26b0e9e82c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/arcade/src/Microsoft.DotNet.SourceBuild/tasks/src/UsageReport/AnnotatedUsage.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AnalyzerConfigOptionsProviderExtensions.cs", + "path": "src/roslyn-analyzers/src/Utilities/Compiler/Options/AnalyzerConfigOptionsProviderExtensions.cs", + "sha": "374419ba14ffac7d7822a177a09cc88c4a44741c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/Compiler/Options/AnalyzerConfigOptionsProviderExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/374419ba14ffac7d7822a177a09cc88c4a44741c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/Compiler/Options/AnalyzerConfigOptionsProviderExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CodeAnalysisDiagnosticsResources.cs", + "path": "src/roslyn-analyzers/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs", + "sha": "39bf447d74c1c176e8984b179c86cf8a07ba709f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/39bf447d74c1c176e8984b179c86cf8a07ba709f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SetLocaleForDataTypes.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs", + "sha": "39ec05bef168fde4b6683e34105a8d99d8dc4462", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/39ec05bef168fde4b6683e34105a8d99d8dc4462", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SpecifyCultureInfo.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs", + "sha": "3bd0994f4cd10d98e926eef3753c3d3387f44cd9", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3bd0994f4cd10d98e926eef3753c3d3387f44cd9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectingManifestResourceInfo.cs", + "path": "src/runtime/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Projection/ProjectingManifestResourceInfo.cs", + "sha": "4001f0774ff5741095dfd73205c58e9924fec5f2", + "url": "https://api.github.com/repositories/550902717/contents/src/runtime/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Projection/ProjectingManifestResourceInfo.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/4001f0774ff5741095dfd73205c58e9924fec5f2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/runtime/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Projection/ProjectingManifestResourceInfo.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DoNotUseDataTableReadXml.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs", + "sha": "3259d71e2a117361b5d525e811df894091b732e1", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3259d71e2a117361b5d525e811df894091b732e1", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TaintedDataSourceSink.cs", + "path": "src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/TaintedDataAnalysis/TaintedDataSourceSink.cs", + "sha": "337715770ce8491e0e8f684c2c3c6cdb87fbe95b", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/TaintedDataAnalysis/TaintedDataSourceSink.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/337715770ce8491e0e8f684c2c3c6cdb87fbe95b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/TaintedDataAnalysis/TaintedDataSourceSink.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "NormalizeStringsToUppercase.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs", + "sha": "362a2215c7e32f00a263073909b205a9ef06a7e8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/362a2215c7e32f00a263073909b205a9ef06a7e8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TempFile.cs", + "path": "src/sourcelink/src/TestUtilities/TempFiles/TempFile.cs", + "sha": "3b921b6ca2a43191247e60c2720aa8928402a964", + "url": "https://api.github.com/repositories/550902717/contents/src/sourcelink/src/TestUtilities/TempFiles/TempFile.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3b921b6ca2a43191247e60c2720aa8928402a964", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/sourcelink/src/TestUtilities/TempFiles/TempFile.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "LambdaAndLocalFunctionAnalysisInfo.cs", + "path": "src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LambdaAndLocalFunctionAnalysisInfo.cs", + "sha": "34b07f2a7e60d77dd6c23d6e2f08202dc38f8dfd", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LambdaAndLocalFunctionAnalysisInfo.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/34b07f2a7e60d77dd6c23d6e2f08202dc38f8dfd", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LambdaAndLocalFunctionAnalysisInfo.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CallBaseClassMethodsOnISerializableTypes.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs", + "sha": "367905a42056deb640b121bbfe5bba6a82bbbde6", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/367905a42056deb640b121bbfe5bba6a82bbbde6", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IAbstractAnalysisValue.cs", + "path": "src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/GlobalFlowStateAnalysis/IAbstractAnalysisValue.cs", + "sha": "334b4f214b806242bcf810a8d814e76402aabc9f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/GlobalFlowStateAnalysis/IAbstractAnalysisValue.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/334b4f214b806242bcf810a8d814e76402aabc9f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/GlobalFlowStateAnalysis/IAbstractAnalysisValue.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "GitConfig.Reader.cs", + "path": "src/sourcelink/src/Microsoft.Build.Tasks.Git/GitDataReader/GitConfig.Reader.cs", + "sha": "3c35e8a5a7c73bc9c4cd7b1bce1ece825f2b6d24", + "url": "https://api.github.com/repositories/550902717/contents/src/sourcelink/src/Microsoft.Build.Tasks.Git/GitDataReader/GitConfig.Reader.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3c35e8a5a7c73bc9c4cd7b1bce1ece825f2b6d24", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/sourcelink/src/Microsoft.Build.Tasks.Git/GitDataReader/GitConfig.Reader.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "MetricsHelper.cs", + "path": "src/roslyn-analyzers/src/Utilities/Compiler/CodeMetrics/MetricsHelper.cs", + "sha": "39e4802591bf7f5ff0cfc25a6cc6b5114f3b0659", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/Compiler/CodeMetrics/MetricsHelper.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/39e4802591bf7f5ff0cfc25a6cc6b5114f3b0659", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/Compiler/CodeMetrics/MetricsHelper.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RazorServiceBase.cs", + "path": "src/razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorServiceBase.cs", + "sha": "380c9959a94702bea638ff0c2e4078f4cc8f59a5", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorServiceBase.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/380c9959a94702bea638ff0c2e4078f4cc8f59a5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorServiceBase.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs", + "path": "src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs", + "sha": "3f0f911b3b5906c9563eff69117ef014a5a1f44a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3f0f911b3b5906c9563eff69117ef014a5a1f44a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ImportingConstructorShouldBeObsoleteCodeFixProvider.cs", + "path": "src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs", + "sha": "36bcb2b5330f330aea35639039604a00612c2134", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/36bcb2b5330f330aea35639039604a00612c2134", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "FallbackProjectEngineFactory.cs", + "path": "src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FallbackProjectEngineFactory.cs", + "sha": "3a7bbb49c3daceb21adfaa1a398630428859c7fc", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FallbackProjectEngineFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3a7bbb49c3daceb21adfaa1a398630428859c7fc", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FallbackProjectEngineFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ReadNuGetPackageInfos.cs", + "path": "eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/ReadNuGetPackageInfos.cs", + "sha": "43a04ebd00787ecc001baad5f4ebeae528ecc624", + "url": "https://api.github.com/repositories/550902717/contents/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/ReadNuGetPackageInfos.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/43a04ebd00787ecc001baad5f4ebeae528ecc624", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/ReadNuGetPackageInfos.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AcceptedCharacters.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/AcceptedCharacters.cs", + "sha": "417c8d299c3ca872d52ca079e2d7843099a353b5", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/AcceptedCharacters.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/417c8d299c3ca872d52ca079e2d7843099a353b5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/AcceptedCharacters.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "GetSourceLinkUrl.cs", + "path": "src/sourcelink/src/SourceLink.Bitbucket.Git/GetSourceLinkUrl.cs", + "sha": "33c76bfd7ee87ad5309a7ffd1e635bdce0458a9b", + "url": "https://api.github.com/repositories/550902717/contents/src/sourcelink/src/SourceLink.Bitbucket.Git/GetSourceLinkUrl.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/33c76bfd7ee87ad5309a7ffd1e635bdce0458a9b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/sourcelink/src/SourceLink.Bitbucket.Git/GetSourceLinkUrl.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "NetCoreTests.cs", + "path": "src/roslyn/src/Workspaces/MSBuildTest/NetCoreTests.cs", + "sha": "33cf8ec0a347e82df00b86ef49cb4c5faa8cc57e", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/MSBuildTest/NetCoreTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/33cf8ec0a347e82df00b86ef49cb4c5faa8cc57e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/MSBuildTest/NetCoreTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TempDirectory.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/TempDirectory.cs", + "sha": "39fe2270904a0424c463f7cc83bbc9d77716bb82", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/TempDirectory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/39fe2270904a0424c463f7cc83bbc9d77716bb82", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/TempDirectory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ListExtensions.cs", + "path": "src/razor/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ListExtensions.cs", + "sha": "2ee9efc53b5fa8888c8c1f46007a9b5987650232", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ListExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2ee9efc53b5fa8888c8c1f46007a9b5987650232", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ListExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ResourceLoader.cs", + "path": "src/symreader/src/PdbTestResources/ResourceLoader.cs", + "sha": "361ea5472c8f475967e952444a28795dfe55d28d", + "url": "https://api.github.com/repositories/550902717/contents/src/symreader/src/PdbTestResources/ResourceLoader.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/361ea5472c8f475967e952444a28795dfe55d28d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/symreader/src/PdbTestResources/ResourceLoader.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ResourceLoader.cs", + "path": "src/NuGetRepack/Tests/TestHelpers/ResourceLoader.cs", + "sha": "361ea5472c8f475967e952444a28795dfe55d28d", + "url": "https://api.github.com/repositories/65219019/contents/src/NuGetRepack/Tests/TestHelpers/ResourceLoader.cs?ref=c0a8ae99f9d9804a147f463f279ff7e33cd70527", + "git_url": "https://api.github.com/repositories/65219019/git/blobs/361ea5472c8f475967e952444a28795dfe55d28d", + "html_url": "https://github.com/dotnet/roslyn-tools/blob/c0a8ae99f9d9804a147f463f279ff7e33cd70527/src/NuGetRepack/Tests/TestHelpers/ResourceLoader.cs", + "repository": { + "id": 65219019, + "node_id": "MDEwOlJlcG9zaXRvcnk2NTIxOTAxOQ==", + "name": "roslyn-tools", + "full_name": "dotnet/roslyn-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-tools", + "description": "Tools used in Roslyn based repos", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-tools", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-tools/deployments" + }, + "score": 1 + }, + { + "name": "ResourceLoader.cs", + "path": "src/Microsoft.DiaSymReader.PortablePdb.Tests/TestHelpers/ResourceLoader.cs", + "sha": "361ea5472c8f475967e952444a28795dfe55d28d", + "url": "https://api.github.com/repositories/55531619/contents/src/Microsoft.DiaSymReader.PortablePdb.Tests/TestHelpers/ResourceLoader.cs?ref=90c6d92c05d2a89bace3dfd60802cb9f62502de5", + "git_url": "https://api.github.com/repositories/55531619/git/blobs/361ea5472c8f475967e952444a28795dfe55d28d", + "html_url": "https://github.com/dotnet/symreader-portable/blob/90c6d92c05d2a89bace3dfd60802cb9f62502de5/src/Microsoft.DiaSymReader.PortablePdb.Tests/TestHelpers/ResourceLoader.cs", + "repository": { + "id": 55531619, + "node_id": "MDEwOlJlcG9zaXRvcnk1NTUzMTYxOQ==", + "name": "symreader-portable", + "full_name": "dotnet/symreader-portable", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader-portable", + "description": "Reader of Portable PDBs format that implements DiaSymReader interfaces (ISymUnmanagedReader, ISymUnmanagedBinder, etc.).", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader-portable", + "forks_url": "https://api.github.com/repos/dotnet/symreader-portable/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader-portable/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader-portable/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader-portable/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader-portable/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader-portable/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader-portable/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader-portable/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader-portable/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader-portable/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader-portable/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader-portable/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader-portable/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader-portable/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader-portable/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader-portable/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader-portable/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader-portable/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader-portable/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader-portable/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader-portable/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader-portable/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader-portable/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader-portable/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader-portable/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader-portable/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader-portable/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader-portable/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader-portable/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader-portable/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader-portable/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader-portable/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader-portable/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader-portable/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader-portable/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader-portable/deployments" + }, + "score": 1 + }, + { + "name": "IOnInitialized.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IOnInitialized.cs", + "sha": "2dee615eea3728ad1498a95773e43d9f9186cf1b", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IOnInitialized.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2dee615eea3728ad1498a95773e43d9f9186cf1b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IOnInitialized.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ReviewCodeForXamlInjectionVulnerabilities.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs", + "sha": "3b4ffe8bab97d608d73e3e2792a80847f810656f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3b4ffe8bab97d608d73e3e2792a80847f810656f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DoNotUseTimersThatPreventPowerStateChanges.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs", + "sha": "31b0c01c3afb3f850f99edd5f2cf76d74c1f2c56", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/31b0c01c3afb3f850f99edd5f2cf76d74c1f2c56", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "BufferGraphExtensions.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BufferGraphExtensions.cs", + "sha": "30f0d8b993e02c10e73abf52c83e6b07c7f99bee", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BufferGraphExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/30f0d8b993e02c10e73abf52c83e6b07c7f99bee", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BufferGraphExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DisposableTypesShouldDeclareFinalizer.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs", + "sha": "3733c7d36f9f4336cf62e8cb73def5351285ddc2", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3733c7d36f9f4336cf62e8cb73def5351285ddc2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DisposableTypesShouldDeclareFinalizer.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DoNotUseInsecureDtdProcessingAnalyzerTests.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingAnalyzerTests.cs", + "sha": "31369700cc068df8b0f6c81fdbd0a2bf17f4fc5c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingAnalyzerTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/31369700cc068df8b0f6c81fdbd0a2bf17f4fc5c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.NetFramework.Analyzers/DoNotUseInsecureDtdProcessingAnalyzerTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AvoidUsingCrefTagsWithAPrefix.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs", + "sha": "3f7fdb560c39fd836781500e8447fc9daf032ad2", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3f7fdb560c39fd836781500e8447fc9daf032ad2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Documentation/AvoidUsingCrefTagsWithAPrefix.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "JsonConverterCollectionExtensions.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/JsonConverterCollectionExtensions.cs", + "sha": "3a87fd757521299bf5b0a3994c51851850bf43a6", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/JsonConverterCollectionExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3a87fd757521299bf5b0a3994c51851850bf43a6", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/JsonConverterCollectionExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TagHelperDeltaResultJsonConverter.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/TagHelperDeltaResultJsonConverter.cs", + "sha": "3935bf3ead2767216a18ba712419cf0a5cb32eb2", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/TagHelperDeltaResultJsonConverter.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3935bf3ead2767216a18ba712419cf0a5cb32eb2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/Serialization/Converters/TagHelperDeltaResultJsonConverter.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "LValueFlowCapturesProvider.cs", + "path": "src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LValueFlowCapturesProvider.cs", + "sha": "3401b74a505dad0355ba0a617db3b1490f07810a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LValueFlowCapturesProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/3401b74a505dad0355ba0a617db3b1490f07810a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LValueFlowCapturesProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DefaultProjectEngineFactory.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DefaultProjectEngineFactory.cs", + "sha": "36cfbac1d2b49056c55853ee291394c726cf5f56", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DefaultProjectEngineFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/36cfbac1d2b49056c55853ee291394c726cf5f56", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DefaultProjectEngineFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "HoverEndpoint.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Hover/HoverEndpoint.cs", + "sha": "2daed7d7e32286ded05d4dc6840fa0d29ce8c628", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Hover/HoverEndpoint.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2daed7d7e32286ded05d4dc6840fa0d29ce8c628", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Hover/HoverEndpoint.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DefaultProjectWorkspaceStateGenerator.cs", + "path": "src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultProjectWorkspaceStateGenerator.cs", + "sha": "36cf3b6f4dd6b36cd410c6e12fe6e34486644a33", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultProjectWorkspaceStateGenerator.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/36cf3b6f4dd6b36cd410c6e12fe6e34486644a33", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultProjectWorkspaceStateGenerator.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs", + "sha": "40fe3633d51c97e3ae18e1232588436f820006c2", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/40fe3633d51c97e3ae18e1232588436f820006c2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/DoNotUseTimersThatPreventPowerStateChanges.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/Microsoft.Tye.Core/Project.cs", + "sha": "47005b09ce6538363dbf31f6faff9eb8248cff9c", + "url": "https://api.github.com/repositories/243854166/contents/src/Microsoft.Tye.Core/Project.cs?ref=75465614e67b5f1e500d1f8b1cb70af22c0c683e", + "git_url": "https://api.github.com/repositories/243854166/git/blobs/47005b09ce6538363dbf31f6faff9eb8248cff9c", + "html_url": "https://github.com/dotnet/tye/blob/75465614e67b5f1e500d1f8b1cb70af22c0c683e/src/Microsoft.Tye.Core/Project.cs", + "repository": { + "id": 243854166, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDM4NTQxNjY=", + "name": "tye", + "full_name": "dotnet/tye", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/tye", + "description": "Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with minimal configuration.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/tye", + "forks_url": "https://api.github.com/repos/dotnet/tye/forks", + "keys_url": "https://api.github.com/repos/dotnet/tye/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/tye/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/tye/teams", + "hooks_url": "https://api.github.com/repos/dotnet/tye/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/tye/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/tye/events", + "assignees_url": "https://api.github.com/repos/dotnet/tye/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/tye/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/tye/tags", + "blobs_url": "https://api.github.com/repos/dotnet/tye/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/tye/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/tye/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/tye/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/tye/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/tye/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/tye/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/tye/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/tye/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/tye/subscription", + "commits_url": "https://api.github.com/repos/dotnet/tye/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/tye/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/tye/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/tye/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/tye/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/tye/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/tye/merges", + "archive_url": "https://api.github.com/repos/dotnet/tye/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/tye/downloads", + "issues_url": "https://api.github.com/repos/dotnet/tye/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/tye/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/tye/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/tye/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/tye/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/tye/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/tye/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/MSBuildBinLogQuery/Result/Project.cs", + "sha": "496681d898e9a62844e41def595bbe3fae713303", + "url": "https://api.github.com/repositories/189080814/contents/src/MSBuildBinLogQuery/Result/Project.cs?ref=dbbc288e858c078ac7c5dc56a3e7579d79771391", + "git_url": "https://api.github.com/repositories/189080814/git/blobs/496681d898e9a62844e41def595bbe3fae713303", + "html_url": "https://github.com/dotnet/cli-lab/blob/dbbc288e858c078ac7c5dc56a3e7579d79771391/src/MSBuildBinLogQuery/Result/Project.cs", + "repository": { + "id": 189080814, + "node_id": "MDEwOlJlcG9zaXRvcnkxODkwODA4MTQ=", + "name": "cli-lab", + "full_name": "dotnet/cli-lab", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/cli-lab", + "description": "A guided tool will be provided to enable the controlled clean up of a system such that only the desired versions of the Runtime and SDKs remain.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/cli-lab", + "forks_url": "https://api.github.com/repos/dotnet/cli-lab/forks", + "keys_url": "https://api.github.com/repos/dotnet/cli-lab/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/cli-lab/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/cli-lab/teams", + "hooks_url": "https://api.github.com/repos/dotnet/cli-lab/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/cli-lab/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/cli-lab/events", + "assignees_url": "https://api.github.com/repos/dotnet/cli-lab/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/cli-lab/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/cli-lab/tags", + "blobs_url": "https://api.github.com/repos/dotnet/cli-lab/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/cli-lab/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/cli-lab/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/cli-lab/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/cli-lab/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/cli-lab/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/cli-lab/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/cli-lab/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/cli-lab/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/cli-lab/subscription", + "commits_url": "https://api.github.com/repos/dotnet/cli-lab/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/cli-lab/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/cli-lab/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/cli-lab/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/cli-lab/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/cli-lab/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/cli-lab/merges", + "archive_url": "https://api.github.com/repos/dotnet/cli-lab/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/cli-lab/downloads", + "issues_url": "https://api.github.com/repos/dotnet/cli-lab/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/cli-lab/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/cli-lab/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/cli-lab/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/cli-lab/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/cli-lab/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/cli-lab/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/2-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/2-codeSearch.json new file mode 100644 index 00000000000..7135559fadd --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/2-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=3" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "BodyWordCount.cs", + "path": "src/4. Uncluttering Your Inbox/Features/BodyWordCount.cs", + "sha": "0ad5ffc2e8dae5d52c2b0c25e026a3c5e438bf8d", + "url": "https://api.github.com/repositories/173785725/contents/src/4.%20Uncluttering%20Your%20Inbox/Features/BodyWordCount.cs?ref=4a8f76a3605b28406670db0684f14d1f521f291d", + "git_url": "https://api.github.com/repositories/173785725/git/blobs/0ad5ffc2e8dae5d52c2b0c25e026a3c5e438bf8d", + "html_url": "https://github.com/dotnet/mbmlbook/blob/4a8f76a3605b28406670db0684f14d1f521f291d/src/4.%20Uncluttering%20Your%20Inbox/Features/BodyWordCount.cs", + "repository": { + "id": 173785725, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzM3ODU3MjU=", + "name": "mbmlbook", + "full_name": "dotnet/mbmlbook", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/mbmlbook", + "description": "Sample code for the Model-Based Machine Learning book.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/mbmlbook", + "forks_url": "https://api.github.com/repos/dotnet/mbmlbook/forks", + "keys_url": "https://api.github.com/repos/dotnet/mbmlbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/mbmlbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/mbmlbook/teams", + "hooks_url": "https://api.github.com/repos/dotnet/mbmlbook/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/mbmlbook/events", + "assignees_url": "https://api.github.com/repos/dotnet/mbmlbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/mbmlbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/mbmlbook/tags", + "blobs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/mbmlbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/mbmlbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/mbmlbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/mbmlbook/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/mbmlbook/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/mbmlbook/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/mbmlbook/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/mbmlbook/subscription", + "commits_url": "https://api.github.com/repos/dotnet/mbmlbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/mbmlbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/mbmlbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/mbmlbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/mbmlbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/mbmlbook/merges", + "archive_url": "https://api.github.com/repos/dotnet/mbmlbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/mbmlbook/downloads", + "issues_url": "https://api.github.com/repos/dotnet/mbmlbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/mbmlbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/mbmlbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/mbmlbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/mbmlbook/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/mbmlbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/mbmlbook/deployments" + }, + "score": 1 + }, + { + "name": "HierarchyIdMethodCallTranslator.cs", + "path": "src/EntityFramework/Core/Objects/ELinq/HierarchyIdMethodCallTranslator.cs", + "sha": "0fd2dd88548dbaf4da235bbde897f44f24a02a32", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/Core/Objects/ELinq/HierarchyIdMethodCallTranslator.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/0fd2dd88548dbaf4da235bbde897f44f24a02a32", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/Core/Objects/ELinq/HierarchyIdMethodCallTranslator.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "SqlAzureRetriableExceptionDetector.cs", + "path": "src/EntityFramework.SqlServer/SqlAzureRetriableExceptionDetector.cs", + "sha": "01ed2f4b7c690e4cc22d204b073b465fefb347e4", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework.SqlServer/SqlAzureRetriableExceptionDetector.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/01ed2f4b7c690e4cc22d204b073b465fefb347e4", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework.SqlServer/SqlAzureRetriableExceptionDetector.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "PiiValue.cs", + "path": "src/Workspaces/Core/Portable/Log/PiiValue.cs", + "sha": "0bbac7b214613600eaa41bfc88deb290f46ed7cb", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Log/PiiValue.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0bbac7b214613600eaa41bfc88deb290f46ed7cb", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Log/PiiValue.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "LinqGeneratorExtensions.cs", + "path": "gen/DocumentFormat.OpenXml.Generator.Models/Generators/Linq/LinqGeneratorExtensions.cs", + "sha": "029f8f2160638ea5c713ad49fb328e8728ea6c2e", + "url": "https://api.github.com/repositories/20532052/contents/gen/DocumentFormat.OpenXml.Generator.Models/Generators/Linq/LinqGeneratorExtensions.cs?ref=e7a0331218de7f53582698bdfd1ddcc2124c1a40", + "git_url": "https://api.github.com/repositories/20532052/git/blobs/029f8f2160638ea5c713ad49fb328e8728ea6c2e", + "html_url": "https://github.com/dotnet/Open-XML-SDK/blob/e7a0331218de7f53582698bdfd1ddcc2124c1a40/gen/DocumentFormat.OpenXml.Generator.Models/Generators/Linq/LinqGeneratorExtensions.cs", + "repository": { + "id": 20532052, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDUzMjA1Mg==", + "name": "Open-XML-SDK", + "full_name": "dotnet/Open-XML-SDK", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Open-XML-SDK", + "description": "Open XML SDK by Microsoft", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Open-XML-SDK", + "forks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/forks", + "keys_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/events", + "assignees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/merges", + "archive_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/deployments" + }, + "score": 1 + }, + { + "name": "CategorizedAnalyzerConfigOptions.cs", + "path": "src/Utilities/Compiler/Options/CategorizedAnalyzerConfigOptions.cs", + "sha": "0566aaf2814fc309720d2cb8f318eaf664ca31b0", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/Compiler/Options/CategorizedAnalyzerConfigOptions.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/0566aaf2814fc309720d2cb8f318eaf664ca31b0", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/Compiler/Options/CategorizedAnalyzerConfigOptions.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "Tracing.cs", + "path": "vsintegration/src/FSharp.ProjectSystem.Base/Tracing.cs", + "sha": "0c9c6c295f22b7ed9ba35c109b0df70e4435c4ef", + "url": "https://api.github.com/repositories/29048891/contents/vsintegration/src/FSharp.ProjectSystem.Base/Tracing.cs?ref=256c7b240e063217a51b90d8886d0b789ceb066e", + "git_url": "https://api.github.com/repositories/29048891/git/blobs/0c9c6c295f22b7ed9ba35c109b0df70e4435c4ef", + "html_url": "https://github.com/dotnet/fsharp/blob/256c7b240e063217a51b90d8886d0b789ceb066e/vsintegration/src/FSharp.ProjectSystem.Base/Tracing.cs", + "repository": { + "id": 29048891, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA0ODg5MQ==", + "name": "fsharp", + "full_name": "dotnet/fsharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/fsharp", + "description": "The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/fsharp", + "forks_url": "https://api.github.com/repos/dotnet/fsharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/fsharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/fsharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/fsharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/fsharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/fsharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/fsharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/fsharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/fsharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/fsharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/fsharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/fsharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/fsharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/fsharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/fsharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/fsharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/fsharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/fsharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/fsharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/fsharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/fsharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/fsharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/fsharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/fsharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/fsharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/fsharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/fsharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/fsharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/fsharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/fsharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/fsharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/fsharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/fsharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/fsharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/fsharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/fsharp/deployments" + }, + "score": 1 + }, + { + "name": "Resources.cs", + "path": "snippets/csharp/System.Windows.Controls/InkCanvas/EditingMode/Properties/Resources.cs", + "sha": "0f2150794d402565b43f93fdf070015419700e44", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/System.Windows.Controls/InkCanvas/EditingMode/Properties/Resources.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/0f2150794d402565b43f93fdf070015419700e44", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/System.Windows.Controls/InkCanvas/EditingMode/Properties/Resources.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "Linq.X15AC.g.cs", + "path": "generated/DocumentFormat.OpenXml.Linq/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Linq.X15AC.g.cs", + "sha": "0105a9679249dd9f1607c4e4ba512fbca9edb632", + "url": "https://api.github.com/repositories/20532052/contents/generated/DocumentFormat.OpenXml.Linq/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Linq.X15AC.g.cs?ref=e7a0331218de7f53582698bdfd1ddcc2124c1a40", + "git_url": "https://api.github.com/repositories/20532052/git/blobs/0105a9679249dd9f1607c4e4ba512fbca9edb632", + "html_url": "https://github.com/dotnet/Open-XML-SDK/blob/e7a0331218de7f53582698bdfd1ddcc2124c1a40/generated/DocumentFormat.OpenXml.Linq/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Linq.X15AC.g.cs", + "repository": { + "id": 20532052, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDUzMjA1Mg==", + "name": "Open-XML-SDK", + "full_name": "dotnet/Open-XML-SDK", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Open-XML-SDK", + "description": "Open XML SDK by Microsoft", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Open-XML-SDK", + "forks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/forks", + "keys_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/events", + "assignees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/merges", + "archive_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/deployments" + }, + "score": 1 + }, + { + "name": "ICscHostObject5.cs", + "path": "src/Compilers/Core/MSBuildTask/ICscHostObject5.cs", + "sha": "12a1fadf057d6c76da4daa37b36775f2fb3ed119", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/MSBuildTask/ICscHostObject5.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/12a1fadf057d6c76da4daa37b36775f2fb3ed119", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/MSBuildTask/ICscHostObject5.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "DefaultOidcProviderOptionsConfiguration.cs", + "path": "src/Microsoft.MobileBlazorBindings.Authentication/Options/DefaultOidcProviderOptionsConfiguration.cs", + "sha": "033487f3feb0b41032d89e72793b2069b1cd8877", + "url": "https://api.github.com/repositories/201976298/contents/src/Microsoft.MobileBlazorBindings.Authentication/Options/DefaultOidcProviderOptionsConfiguration.cs?ref=66b0d92d6b6f34ee15873e91565aa5a49a585a09", + "git_url": "https://api.github.com/repositories/201976298/git/blobs/033487f3feb0b41032d89e72793b2069b1cd8877", + "html_url": "https://github.com/dotnet/MobileBlazorBindings/blob/66b0d92d6b6f34ee15873e91565aa5a49a585a09/src/Microsoft.MobileBlazorBindings.Authentication/Options/DefaultOidcProviderOptionsConfiguration.cs", + "repository": { + "id": 201976298, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDE5NzYyOTg=", + "name": "MobileBlazorBindings", + "full_name": "dotnet/MobileBlazorBindings", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/MobileBlazorBindings", + "description": "Experimental Mobile Blazor Bindings - Build native and hybrid mobile apps with Blazor", + "fork": false, + "url": "https://api.github.com/repos/dotnet/MobileBlazorBindings", + "forks_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/forks", + "keys_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/teams", + "hooks_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/events", + "assignees_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/tags", + "blobs_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/subscription", + "commits_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/merges", + "archive_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/downloads", + "issues_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/deployments" + }, + "score": 1 + }, + { + "name": "Constraints.cs", + "path": "src/TorchSharp/Distributions/Constraints.cs", + "sha": "0c4aa26f57b0487737df613c52f34494c554a763", + "url": "https://api.github.com/repositories/152770407/contents/src/TorchSharp/Distributions/Constraints.cs?ref=8157954c65932b7cf5ff92a40ff54d65b923e972", + "git_url": "https://api.github.com/repositories/152770407/git/blobs/0c4aa26f57b0487737df613c52f34494c554a763", + "html_url": "https://github.com/dotnet/TorchSharp/blob/8157954c65932b7cf5ff92a40ff54d65b923e972/src/TorchSharp/Distributions/Constraints.cs", + "repository": { + "id": 152770407, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTI3NzA0MDc=", + "name": "TorchSharp", + "full_name": "dotnet/TorchSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/TorchSharp", + "description": "A .NET library that provides access to the library that powers PyTorch.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/TorchSharp", + "forks_url": "https://api.github.com/repos/dotnet/TorchSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/TorchSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/TorchSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/TorchSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/TorchSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/TorchSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/TorchSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/TorchSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/TorchSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/TorchSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/TorchSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/TorchSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/TorchSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/TorchSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/TorchSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/TorchSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/TorchSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/TorchSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/TorchSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/TorchSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/TorchSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/TorchSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/TorchSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/TorchSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/TorchSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/TorchSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/TorchSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/TorchSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/TorchSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/TorchSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/TorchSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/TorchSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/TorchSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/TorchSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/TorchSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/TorchSharp/deployments" + }, + "score": 1 + }, + { + "name": "SmartIndent.cs", + "path": "src/EditorFeatures/Core/SmartIndent/SmartIndent.cs", + "sha": "1114993551bf92ac0c79549cbf85bcebb88b9dca", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core/SmartIndent/SmartIndent.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1114993551bf92ac0c79549cbf85bcebb88b9dca", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core/SmartIndent/SmartIndent.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Perf.Basic.cs", + "path": "src/benchmarks/micro/libraries/System.Text.Json/Utf8JsonWriter/Perf.Basic.cs", + "sha": "043d0707f706c1a970e4e63f29f16a277b29a6bd", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/libraries/System.Text.Json/Utf8JsonWriter/Perf.Basic.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/043d0707f706c1a970e4e63f29f16a277b29a6bd", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/libraries/System.Text.Json/Utf8JsonWriter/Perf.Basic.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "CSharpDoNotMarkServicedComponentsWithWebMethod.cs", + "path": "src/NetAnalyzers/CSharp/Microsoft.NetFramework.Analyzers/CSharpDoNotMarkServicedComponentsWithWebMethod.cs", + "sha": "08fcea9f4b356a59d2fe36ef60ee581dbd887fd4", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/CSharp/Microsoft.NetFramework.Analyzers/CSharpDoNotMarkServicedComponentsWithWebMethod.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/08fcea9f4b356a59d2fe36ef60ee581dbd887fd4", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/CSharp/Microsoft.NetFramework.Analyzers/CSharpDoNotMarkServicedComponentsWithWebMethod.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ConsoleIO.cs", + "path": "src/Scripting/Core/Hosting/CommandLine/ConsoleIO.cs", + "sha": "09a00e33e02c00ea52dcfa70d86a3cf4b85265ab", + "url": "https://api.github.com/repositories/29078997/contents/src/Scripting/Core/Hosting/CommandLine/ConsoleIO.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/09a00e33e02c00ea52dcfa70d86a3cf4b85265ab", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Scripting/Core/Hosting/CommandLine/ConsoleIO.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ReplaceFileContents.cs", + "path": "src/core-sdk-tasks/ReplaceFileContents.cs", + "sha": "130550abab1d56613b65a41b00fd74dabac207f6", + "url": "https://api.github.com/repositories/189080814/contents/src/core-sdk-tasks/ReplaceFileContents.cs?ref=dbbc288e858c078ac7c5dc56a3e7579d79771391", + "git_url": "https://api.github.com/repositories/189080814/git/blobs/130550abab1d56613b65a41b00fd74dabac207f6", + "html_url": "https://github.com/dotnet/cli-lab/blob/dbbc288e858c078ac7c5dc56a3e7579d79771391/src/core-sdk-tasks/ReplaceFileContents.cs", + "repository": { + "id": 189080814, + "node_id": "MDEwOlJlcG9zaXRvcnkxODkwODA4MTQ=", + "name": "cli-lab", + "full_name": "dotnet/cli-lab", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/cli-lab", + "description": "A guided tool will be provided to enable the controlled clean up of a system such that only the desired versions of the Runtime and SDKs remain.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/cli-lab", + "forks_url": "https://api.github.com/repos/dotnet/cli-lab/forks", + "keys_url": "https://api.github.com/repos/dotnet/cli-lab/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/cli-lab/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/cli-lab/teams", + "hooks_url": "https://api.github.com/repos/dotnet/cli-lab/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/cli-lab/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/cli-lab/events", + "assignees_url": "https://api.github.com/repos/dotnet/cli-lab/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/cli-lab/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/cli-lab/tags", + "blobs_url": "https://api.github.com/repos/dotnet/cli-lab/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/cli-lab/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/cli-lab/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/cli-lab/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/cli-lab/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/cli-lab/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/cli-lab/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/cli-lab/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/cli-lab/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/cli-lab/subscription", + "commits_url": "https://api.github.com/repos/dotnet/cli-lab/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/cli-lab/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/cli-lab/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/cli-lab/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/cli-lab/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/cli-lab/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/cli-lab/merges", + "archive_url": "https://api.github.com/repos/dotnet/cli-lab/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/cli-lab/downloads", + "issues_url": "https://api.github.com/repos/dotnet/cli-lab/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/cli-lab/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/cli-lab/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/cli-lab/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/cli-lab/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/cli-lab/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/cli-lab/deployments" + }, + "score": 1 + }, + { + "name": "CallbackLog.cs", + "path": "src/Microsoft.DotNet.XHarness.Common/Logging/CallbackLog.cs", + "sha": "037e9605d3dc6b2ca8e283d4be4e672f93c4a0c5", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.Common/Logging/CallbackLog.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/037e9605d3dc6b2ca8e283d4be4e672f93c4a0c5", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.Common/Logging/CallbackLog.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "BuildToolId.cs", + "path": "src/Features/Core/Portable/Diagnostics/BuildToolId.cs", + "sha": "01eecd26cb0999c40bc518494d2428da4adea237", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Diagnostics/BuildToolId.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/01eecd26cb0999c40bc518494d2428da4adea237", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Diagnostics/BuildToolId.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ITypedGettersV3.cs", + "path": "src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/ITypedGettersV3.cs", + "sha": "1203e0a6ac39b0def13348447c20c7e60403a5b6", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/ITypedGettersV3.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/1203e0a6ac39b0def13348447c20c7e60403a5b6", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/ITypedGettersV3.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "Subscription.cs", + "path": "Maestro/src/Microsoft.DotNet.Maestro/Models/Subscription.cs", + "sha": "0550ca20d2fcd03f42d989f5335221599cfca27a", + "url": "https://api.github.com/repositories/56803734/contents/Maestro/src/Microsoft.DotNet.Maestro/Models/Subscription.cs?ref=47ece761793c373569eedf314e9999a6d8d6c50f", + "git_url": "https://api.github.com/repositories/56803734/git/blobs/0550ca20d2fcd03f42d989f5335221599cfca27a", + "html_url": "https://github.com/dotnet/versions/blob/47ece761793c373569eedf314e9999a6d8d6c50f/Maestro/src/Microsoft.DotNet.Maestro/Models/Subscription.cs", + "repository": { + "id": 56803734, + "node_id": "MDEwOlJlcG9zaXRvcnk1NjgwMzczNA==", + "name": "versions", + "full_name": "dotnet/versions", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/versions", + "description": "This repo contains information about the various component versions that ship with .NET Core. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/versions", + "forks_url": "https://api.github.com/repos/dotnet/versions/forks", + "keys_url": "https://api.github.com/repos/dotnet/versions/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/versions/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/versions/teams", + "hooks_url": "https://api.github.com/repos/dotnet/versions/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/versions/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/versions/events", + "assignees_url": "https://api.github.com/repos/dotnet/versions/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/versions/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/versions/tags", + "blobs_url": "https://api.github.com/repos/dotnet/versions/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/versions/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/versions/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/versions/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/versions/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/versions/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/versions/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/versions/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/versions/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/versions/subscription", + "commits_url": "https://api.github.com/repos/dotnet/versions/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/versions/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/versions/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/versions/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/versions/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/versions/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/versions/merges", + "archive_url": "https://api.github.com/repos/dotnet/versions/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/versions/downloads", + "issues_url": "https://api.github.com/repos/dotnet/versions/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/versions/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/versions/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/versions/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/versions/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/versions/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/versions/deployments" + }, + "score": 1 + }, + { + "name": "SqlClientEncryptionAlgorithmFactory.cs", + "path": "src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientEncryptionAlgorithmFactory.cs", + "sha": "14f0f9816b8f11d711403aa305855bd579f382ff", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientEncryptionAlgorithmFactory.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/14f0f9816b8f11d711403aa305855bd579f382ff", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientEncryptionAlgorithmFactory.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "VisualBasicPerformanceCodeFixVerifier`2.cs", + "path": "src/PerformanceSensitiveAnalyzers/UnitTests/VisualBasicPerformanceCodeFixVerifier`2.cs", + "sha": "10759e8b881c1e2c0a016f9a10fa2ea8a0d126a6", + "url": "https://api.github.com/repositories/36946704/contents/src/PerformanceSensitiveAnalyzers/UnitTests/VisualBasicPerformanceCodeFixVerifier%602.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/10759e8b881c1e2c0a016f9a10fa2ea8a0d126a6", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/PerformanceSensitiveAnalyzers/UnitTests/VisualBasicPerformanceCodeFixVerifier%602.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "Perf.Enumerable.cs", + "path": "src/benchmarks/micro/libraries/System.Linq/Perf.Enumerable.cs", + "sha": "105f118d59c30859e811340ef7d99b58ab98c1bd", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/libraries/System.Linq/Perf.Enumerable.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/105f118d59c30859e811340ef7d99b58ab98c1bd", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/libraries/System.Linq/Perf.Enumerable.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "CompletionTags.cs", + "path": "src/Features/Core/Portable/Completion/CompletionTags.cs", + "sha": "028edb5798780d6deb7a63f708c9d833561e29a8", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Completion/CompletionTags.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/028edb5798780d6deb7a63f708c9d833561e29a8", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Completion/CompletionTags.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Part_CustomPropertyPart.g.cs", + "path": "generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Part_CustomPropertyPart.g.cs", + "sha": "166677cbb2ed8f5429922bd87d9eaed0d4e93a78", + "url": "https://api.github.com/repositories/20532052/contents/generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Part_CustomPropertyPart.g.cs?ref=e7a0331218de7f53582698bdfd1ddcc2124c1a40", + "git_url": "https://api.github.com/repositories/20532052/git/blobs/166677cbb2ed8f5429922bd87d9eaed0d4e93a78", + "html_url": "https://github.com/dotnet/Open-XML-SDK/blob/e7a0331218de7f53582698bdfd1ddcc2124c1a40/generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Part_CustomPropertyPart.g.cs", + "repository": { + "id": 20532052, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDUzMjA1Mg==", + "name": "Open-XML-SDK", + "full_name": "dotnet/Open-XML-SDK", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Open-XML-SDK", + "description": "Open XML SDK by Microsoft", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Open-XML-SDK", + "forks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/forks", + "keys_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/events", + "assignees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/merges", + "archive_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/deployments" + }, + "score": 1 + }, + { + "name": "Sinh.cs", + "path": "src/benchmarks/micro/runtime/Math/Functions/Single/Sinh.cs", + "sha": "11cbcc1167383c8d860540fb9b223f4e797e9a93", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Math/Functions/Single/Sinh.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/11cbcc1167383c8d860540fb9b223f4e797e9a93", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Math/Functions/Single/Sinh.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "Cosh.cs", + "path": "src/benchmarks/micro/runtime/Math/Functions/Double/Cosh.cs", + "sha": "0c3494acee24f25b5a50b9cd98cd215dc181e95d", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Math/Functions/Double/Cosh.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/0c3494acee24f25b5a50b9cd98cd215dc181e95d", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Math/Functions/Double/Cosh.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "ParameterFlags.cs", + "path": "src/VisualStudio/CSharp/Impl/CodeModel/ParameterFlags.cs", + "sha": "047dde037fb7554941e0d5c214e4cf22524af945", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/CSharp/Impl/CodeModel/ParameterFlags.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/047dde037fb7554941e0d5c214e4cf22524af945", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/CSharp/Impl/CodeModel/ParameterFlags.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "TypeParameterKind.cs", + "path": "src/Compilers/Core/Portable/Symbols/TypeParameterKind.cs", + "sha": "0293b5364ab7768bf38c15f07895bcaccb6539b2", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Symbols/TypeParameterKind.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0293b5364ab7768bf38c15f07895bcaccb6539b2", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Symbols/TypeParameterKind.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "VisualStudioFrameworkAssemblyPathResolverFactory.cs", + "path": "src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioFrameworkAssemblyPathResolverFactory.cs", + "sha": "15cd5608d6441f32b0c632422f39bd37059840b9", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioFrameworkAssemblyPathResolverFactory.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/15cd5608d6441f32b0c632422f39bd37059840b9", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioFrameworkAssemblyPathResolverFactory.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "DbConnectionDispatcher.cs", + "path": "src/EntityFramework/Infrastructure/Interception/DbConnectionDispatcher.cs", + "sha": "15fe4e369ff2cc9582dba303e0aa9c3c3ab3436a", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/Infrastructure/Interception/DbConnectionDispatcher.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/15fe4e369ff2cc9582dba303e0aa9c3c3ab3436a", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/Infrastructure/Interception/DbConnectionDispatcher.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "ProvideDeserializationMethodsForOptionalFields.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs", + "sha": "1447bcc6731af3c19d4bcf0ed3e3386d061f3e5e", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/1447bcc6731af3c19d4bcf0ed3e3386d061f3e5e", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ICodeModelService.cs", + "path": "src/VisualStudio/Core/Impl/CodeModel/ICodeModelService.cs", + "sha": "08333957bdcc3b046797620a66d9a96cfad7802d", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Impl/CodeModel/ICodeModelService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/08333957bdcc3b046797620a66d9a96cfad7802d", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Impl/CodeModel/ICodeModelService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ProcessUtil.cs", + "path": "src/Tools/Source/RunTests/ProcessUtil.cs", + "sha": "04e9d02d4992c2dc16366863bbda3071e3664521", + "url": "https://api.github.com/repositories/29078997/contents/src/Tools/Source/RunTests/ProcessUtil.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/04e9d02d4992c2dc16366863bbda3071e3664521", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Tools/Source/RunTests/ProcessUtil.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "PreviewWarningTagDefinition.cs", + "path": "src/EditorFeatures/Core.Wpf/PreviewWarningTagDefinition.cs", + "sha": "14825128675c2f4f30d5f6a15025ade58eaff946", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core.Wpf/PreviewWarningTagDefinition.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/14825128675c2f4f30d5f6a15025ade58eaff946", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core.Wpf/PreviewWarningTagDefinition.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ParenthesesTreeWriter.cs", + "path": "src/Features/Core/Portable/RQName/ParenthesesTreeWriter.cs", + "sha": "0dab983676e28fb5d637a461d62197b8e743b5ae", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/RQName/ParenthesesTreeWriter.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0dab983676e28fb5d637a461d62197b8e743b5ae", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/RQName/ParenthesesTreeWriter.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "LineSpan.cs", + "path": "src/Workspaces/Core/Portable/Shared/Extensions/LineSpan.cs", + "sha": "04f2117e39e8581d45df423b18abafaf5f3598fa", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Shared/Extensions/LineSpan.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/04f2117e39e8581d45df423b18abafaf5f3598fa", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Shared/Extensions/LineSpan.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "MiscellaneousFilesWorkspace.cs", + "path": "src/VisualStudio/Core/Def/ProjectSystem/MiscellaneousFilesWorkspace.cs", + "sha": "0279d545117b7d8b0bf65e1fc9419da767d4d378", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Def/ProjectSystem/MiscellaneousFilesWorkspace.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0279d545117b7d8b0bf65e1fc9419da767d4d378", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Def/ProjectSystem/MiscellaneousFilesWorkspace.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ProjectSchemaDefinitions.cs", + "path": "src/Framework/XamlTypes/ProjectSchemaDefinitions.cs", + "sha": "0a261bceaba2d84e9d2e6839c3b597f7aa8a5096", + "url": "https://api.github.com/repositories/32051890/contents/src/Framework/XamlTypes/ProjectSchemaDefinitions.cs?ref=946c584115367635c37ac7ecaadb2f36542f88b0", + "git_url": "https://api.github.com/repositories/32051890/git/blobs/0a261bceaba2d84e9d2e6839c3b597f7aa8a5096", + "html_url": "https://github.com/dotnet/msbuild/blob/946c584115367635c37ac7ecaadb2f36542f88b0/src/Framework/XamlTypes/ProjectSchemaDefinitions.cs", + "repository": { + "id": 32051890, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjA1MTg5MA==", + "name": "msbuild", + "full_name": "dotnet/msbuild", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/msbuild", + "description": "The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/msbuild", + "forks_url": "https://api.github.com/repos/dotnet/msbuild/forks", + "keys_url": "https://api.github.com/repos/dotnet/msbuild/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/msbuild/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/msbuild/teams", + "hooks_url": "https://api.github.com/repos/dotnet/msbuild/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/msbuild/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/msbuild/events", + "assignees_url": "https://api.github.com/repos/dotnet/msbuild/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/msbuild/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/msbuild/tags", + "blobs_url": "https://api.github.com/repos/dotnet/msbuild/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/msbuild/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/msbuild/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/msbuild/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/msbuild/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/msbuild/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/msbuild/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/msbuild/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/msbuild/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/msbuild/subscription", + "commits_url": "https://api.github.com/repos/dotnet/msbuild/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/msbuild/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/msbuild/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/msbuild/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/msbuild/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/msbuild/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/msbuild/merges", + "archive_url": "https://api.github.com/repos/dotnet/msbuild/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/msbuild/downloads", + "issues_url": "https://api.github.com/repos/dotnet/msbuild/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/msbuild/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/msbuild/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/msbuild/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/msbuild/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/msbuild/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/msbuild/deployments" + }, + "score": 1 + }, + { + "name": "ControllerWithContextTemplateModel.cs", + "path": "src/Scaffolding/VS.Web.CG.Mvc/Controller/ControllerWithContextTemplateModel.cs", + "sha": "0ca5baa34d8e423ac1da6b40ee3c956475dc6ab8", + "url": "https://api.github.com/repositories/21291278/contents/src/Scaffolding/VS.Web.CG.Mvc/Controller/ControllerWithContextTemplateModel.cs?ref=5f611b80a863e665c688e1e2c95f29154c10ceff", + "git_url": "https://api.github.com/repositories/21291278/git/blobs/0ca5baa34d8e423ac1da6b40ee3c956475dc6ab8", + "html_url": "https://github.com/dotnet/Scaffolding/blob/5f611b80a863e665c688e1e2c95f29154c10ceff/src/Scaffolding/VS.Web.CG.Mvc/Controller/ControllerWithContextTemplateModel.cs", + "repository": { + "id": 21291278, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTI5MTI3OA==", + "name": "Scaffolding", + "full_name": "dotnet/Scaffolding", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Scaffolding", + "description": "Code generators to speed up development.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Scaffolding", + "forks_url": "https://api.github.com/repos/dotnet/Scaffolding/forks", + "keys_url": "https://api.github.com/repos/dotnet/Scaffolding/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Scaffolding/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Scaffolding/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Scaffolding/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Scaffolding/events", + "assignees_url": "https://api.github.com/repos/dotnet/Scaffolding/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Scaffolding/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Scaffolding/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Scaffolding/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Scaffolding/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Scaffolding/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Scaffolding/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Scaffolding/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Scaffolding/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Scaffolding/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Scaffolding/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Scaffolding/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Scaffolding/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Scaffolding/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Scaffolding/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Scaffolding/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Scaffolding/merges", + "archive_url": "https://api.github.com/repos/dotnet/Scaffolding/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Scaffolding/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Scaffolding/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Scaffolding/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Scaffolding/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Scaffolding/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Scaffolding/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Scaffolding/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Scaffolding/deployments" + }, + "score": 1 + }, + { + "name": "MovePInvokesToNativeMethodsClass.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs", + "sha": "071a131df290de561f3b71e43e9b99ae69be6c63", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/071a131df290de561f3b71e43e9b99ae69be6c63", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "CustomModifiersTuple.cs", + "path": "src/Compilers/Core/Portable/Symbols/CustomModifiersTuple.cs", + "sha": "033731b926c2f64120c8c9c3ff7cdfa0edfa65d8", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Symbols/CustomModifiersTuple.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/033731b926c2f64120c8c9c3ff7cdfa0edfa65d8", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Symbols/CustomModifiersTuple.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ILocalSymbolInternal.cs", + "path": "src/Compilers/Core/Portable/Symbols/ILocalSymbolInternal.cs", + "sha": "00df8c07c476ead0f2bb82cb7240dde8153fc85b", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Symbols/ILocalSymbolInternal.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/00df8c07c476ead0f2bb82cb7240dde8153fc85b", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Symbols/ILocalSymbolInternal.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "AssociationInverseDiscoveryConvention.cs", + "path": "src/EntityFramework/ModelConfiguration/Conventions/Edm/AssociationInverseDiscoveryConvention.cs", + "sha": "0b8d62445dc5ae409f255771cceb3b779f115217", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/ModelConfiguration/Conventions/Edm/AssociationInverseDiscoveryConvention.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/0b8d62445dc5ae409f255771cceb3b779f115217", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/ModelConfiguration/Conventions/Edm/AssociationInverseDiscoveryConvention.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "TrackDocumentsHelper.cs", + "path": "vsintegration/src/FSharp.ProjectSystem.Base/TrackDocumentsHelper.cs", + "sha": "0b713487be5b217f8e538b9e9f96197d9a691896", + "url": "https://api.github.com/repositories/29048891/contents/vsintegration/src/FSharp.ProjectSystem.Base/TrackDocumentsHelper.cs?ref=256c7b240e063217a51b90d8886d0b789ceb066e", + "git_url": "https://api.github.com/repositories/29048891/git/blobs/0b713487be5b217f8e538b9e9f96197d9a691896", + "html_url": "https://github.com/dotnet/fsharp/blob/256c7b240e063217a51b90d8886d0b789ceb066e/vsintegration/src/FSharp.ProjectSystem.Base/TrackDocumentsHelper.cs", + "repository": { + "id": 29048891, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA0ODg5MQ==", + "name": "fsharp", + "full_name": "dotnet/fsharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/fsharp", + "description": "The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/fsharp", + "forks_url": "https://api.github.com/repos/dotnet/fsharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/fsharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/fsharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/fsharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/fsharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/fsharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/fsharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/fsharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/fsharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/fsharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/fsharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/fsharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/fsharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/fsharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/fsharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/fsharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/fsharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/fsharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/fsharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/fsharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/fsharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/fsharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/fsharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/fsharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/fsharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/fsharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/fsharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/fsharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/fsharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/fsharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/fsharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/fsharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/fsharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/fsharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/fsharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/fsharp/deployments" + }, + "score": 1 + }, + { + "name": "VisualStudioMetadataReferenceProviderServiceFactory.cs", + "path": "src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioMetadataReferenceProviderServiceFactory.cs", + "sha": "0e0f9fbb692b1d86b756b3e8fb52a7fa8ec71429", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioMetadataReferenceProviderServiceFactory.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0e0f9fbb692b1d86b756b3e8fb52a7fa8ec71429", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioMetadataReferenceProviderServiceFactory.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ScriptTaskExtensions.cs", + "path": "src/Scripting/CoreTestUtilities/ScriptTaskExtensions.cs", + "sha": "03d2ddec6257937ce836fa661365a7e80ff84802", + "url": "https://api.github.com/repositories/29078997/contents/src/Scripting/CoreTestUtilities/ScriptTaskExtensions.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/03d2ddec6257937ce836fa661365a7e80ff84802", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Scripting/CoreTestUtilities/ScriptTaskExtensions.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "dotnet-template-samples/content/02-add-parameters/MyProject.Con/Program.cs", + "sha": "160483fd90cdcc04f658eb2bdd61d248f0663137", + "url": "https://api.github.com/repositories/62173688/contents/dotnet-template-samples/content/02-add-parameters/MyProject.Con/Program.cs?ref=cf588429b4b251ae42c84ed966112e6c6d082448", + "git_url": "https://api.github.com/repositories/62173688/git/blobs/160483fd90cdcc04f658eb2bdd61d248f0663137", + "html_url": "https://github.com/dotnet/templating/blob/cf588429b4b251ae42c84ed966112e6c6d082448/dotnet-template-samples/content/02-add-parameters/MyProject.Con/Program.cs", + "repository": { + "id": 62173688, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjE3MzY4OA==", + "name": "templating", + "full_name": "dotnet/templating", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templating", + "description": "This repo contains the Template Engine which is used by dotnet new", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templating", + "forks_url": "https://api.github.com/repos/dotnet/templating/forks", + "keys_url": "https://api.github.com/repos/dotnet/templating/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templating/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templating/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templating/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templating/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templating/events", + "assignees_url": "https://api.github.com/repos/dotnet/templating/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templating/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templating/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templating/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templating/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templating/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templating/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templating/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templating/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templating/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templating/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templating/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templating/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templating/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templating/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templating/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templating/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templating/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templating/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templating/merges", + "archive_url": "https://api.github.com/repos/dotnet/templating/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templating/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templating/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templating/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templating/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templating/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templating/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templating/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templating/deployments" + }, + "score": 1 + }, + { + "name": "CSharpAvoidMultipleEnumerationsAnalyzer.cs", + "path": "src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidMultipleEnumerationsAnalyzer.cs", + "sha": "0772bc01e6ed05c0960babe639c45dcd94c861c9", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidMultipleEnumerationsAnalyzer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/0772bc01e6ed05c0960babe639c45dcd94c861c9", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidMultipleEnumerationsAnalyzer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "SimDevicePair.cs", + "path": "src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDevicePair.cs", + "sha": "0eb718c3a4942888b786c1a4a705365d1da6f8a5", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDevicePair.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/0eb718c3a4942888b786c1a4a705365d1da6f8a5", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDevicePair.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "HelpArgument.cs", + "path": "src/Microsoft.DotNet.XHarness.CLI/CommandArguments/HelpArgument.cs", + "sha": "04fc25ac914a81e1c3c94e5f921433ad529aacaf", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.CLI/CommandArguments/HelpArgument.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/04fc25ac914a81e1c3c94e5f921433ad529aacaf", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.CLI/CommandArguments/HelpArgument.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "DocumentBuilder.cs", + "path": "src/Shared/Microsoft.DotNet.Scaffolding.Shared/CodeModifier/DocumentBuilder.cs", + "sha": "067a83364f0af6e61e533758c76cdd33cabcd1ed", + "url": "https://api.github.com/repositories/21291278/contents/src/Shared/Microsoft.DotNet.Scaffolding.Shared/CodeModifier/DocumentBuilder.cs?ref=5f611b80a863e665c688e1e2c95f29154c10ceff", + "git_url": "https://api.github.com/repositories/21291278/git/blobs/067a83364f0af6e61e533758c76cdd33cabcd1ed", + "html_url": "https://github.com/dotnet/Scaffolding/blob/5f611b80a863e665c688e1e2c95f29154c10ceff/src/Shared/Microsoft.DotNet.Scaffolding.Shared/CodeModifier/DocumentBuilder.cs", + "repository": { + "id": 21291278, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTI5MTI3OA==", + "name": "Scaffolding", + "full_name": "dotnet/Scaffolding", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Scaffolding", + "description": "Code generators to speed up development.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Scaffolding", + "forks_url": "https://api.github.com/repos/dotnet/Scaffolding/forks", + "keys_url": "https://api.github.com/repos/dotnet/Scaffolding/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Scaffolding/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Scaffolding/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Scaffolding/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Scaffolding/events", + "assignees_url": "https://api.github.com/repos/dotnet/Scaffolding/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Scaffolding/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Scaffolding/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Scaffolding/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Scaffolding/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Scaffolding/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Scaffolding/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Scaffolding/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Scaffolding/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Scaffolding/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Scaffolding/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Scaffolding/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Scaffolding/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Scaffolding/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Scaffolding/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Scaffolding/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Scaffolding/merges", + "archive_url": "https://api.github.com/repos/dotnet/Scaffolding/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Scaffolding/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Scaffolding/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Scaffolding/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Scaffolding/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Scaffolding/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Scaffolding/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Scaffolding/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Scaffolding/deployments" + }, + "score": 1 + }, + { + "name": "IOUtilities.cs", + "path": "src/Workspaces/Core/Portable/Shared/Utilities/IOUtilities.cs", + "sha": "1536b0f6ce9f5c258a04d84e5979ad11f54e6a77", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Shared/Utilities/IOUtilities.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1536b0f6ce9f5c258a04d84e5979ad11f54e6a77", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Shared/Utilities/IOUtilities.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SyntaxFactoryContext.cs", + "path": "src/Compilers/CSharp/Portable/Parser/SyntaxFactoryContext.cs", + "sha": "126b9975a86c25c10b1dd548561d3beb9204a8aa", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Parser/SyntaxFactoryContext.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/126b9975a86c25c10b1dd548561d3beb9204a8aa", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Parser/SyntaxFactoryContext.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineHelpers.cs", + "path": "src/Scripting/Core/Hosting/CommandLine/CommandLineHelpers.cs", + "sha": "0df46a07f8996123c0a5d4bd51c53866fb7f7fbb", + "url": "https://api.github.com/repositories/29078997/contents/src/Scripting/Core/Hosting/CommandLine/CommandLineHelpers.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0df46a07f8996123c0a5d4bd51c53866fb7f7fbb", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Scripting/Core/Hosting/CommandLine/CommandLineHelpers.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "DefaultSourceTextUndoService.cs", + "path": "src/EditorFeatures/Core/Undo/DefaultSourceTextUndoService.cs", + "sha": "08ee35000c9df5c3c2fb357e23d2141af5337889", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core/Undo/DefaultSourceTextUndoService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/08ee35000c9df5c3c2fb357e23d2141af5337889", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core/Undo/DefaultSourceTextUndoService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "FixedStatementSyntax.cs", + "path": "src/Compilers/CSharp/Portable/Syntax/FixedStatementSyntax.cs", + "sha": "0100322ba1fb785c2ee61a816c639eaa73b7d848", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Syntax/FixedStatementSyntax.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0100322ba1fb785c2ee61a816c639eaa73b7d848", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Syntax/FixedStatementSyntax.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "JsonHelper.cs", + "path": "src/Microsoft.DotNet.ImageBuilder/src/JsonHelper.cs", + "sha": "166e3661cb613bd879dc8774519a2bcfb52976fb", + "url": "https://api.github.com/repositories/89951797/contents/src/Microsoft.DotNet.ImageBuilder/src/JsonHelper.cs?ref=9791b1592829efbcd4da15a4aabed083b66615b7", + "git_url": "https://api.github.com/repositories/89951797/git/blobs/166e3661cb613bd879dc8774519a2bcfb52976fb", + "html_url": "https://github.com/dotnet/docker-tools/blob/9791b1592829efbcd4da15a4aabed083b66615b7/src/Microsoft.DotNet.ImageBuilder/src/JsonHelper.cs", + "repository": { + "id": 89951797, + "node_id": "MDEwOlJlcG9zaXRvcnk4OTk1MTc5Nw==", + "name": "docker-tools", + "full_name": "dotnet/docker-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docker-tools", + "description": "This is a repo to house some common tools for our various docker repos. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docker-tools", + "forks_url": "https://api.github.com/repos/dotnet/docker-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/docker-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docker-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docker-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docker-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docker-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docker-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/docker-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docker-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docker-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docker-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docker-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docker-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docker-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docker-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docker-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docker-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docker-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docker-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docker-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docker-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docker-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docker-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docker-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docker-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docker-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docker-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/docker-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docker-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docker-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docker-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docker-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docker-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docker-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docker-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docker-tools/deployments" + }, + "score": 1 + }, + { + "name": "DummySymReaderMetadataProvider.cs", + "path": "src/TestUtilities/DummySymReaderMetadataProvider.cs", + "sha": "0784b789419fb7adb94d8f0af7204ab32158c59e", + "url": "https://api.github.com/repositories/45562551/contents/src/TestUtilities/DummySymReaderMetadataProvider.cs?ref=615d7ba83f00c049689e1c22af352867aba2023d", + "git_url": "https://api.github.com/repositories/45562551/git/blobs/0784b789419fb7adb94d8f0af7204ab32158c59e", + "html_url": "https://github.com/dotnet/symreader/blob/615d7ba83f00c049689e1c22af352867aba2023d/src/TestUtilities/DummySymReaderMetadataProvider.cs", + "repository": { + "id": 45562551, + "node_id": "MDEwOlJlcG9zaXRvcnk0NTU2MjU1MQ==", + "name": "symreader", + "full_name": "dotnet/symreader", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader", + "description": "Managed definitions for COM interfaces exposed by DiaSymReader APIs", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader", + "forks_url": "https://api.github.com/repos/dotnet/symreader/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader/deployments" + }, + "score": 1 + }, + { + "name": "DiscardSymbol.cs", + "path": "src/Compilers/CSharp/Portable/Symbols/DiscardSymbol.cs", + "sha": "08da8b9a72f181d91a5380a111fb254a0fd5d01a", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Symbols/DiscardSymbol.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/08da8b9a72f181d91a5380a111fb254a0fd5d01a", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Symbols/DiscardSymbol.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "NETSdkWarning.cs", + "path": "src/Tasks/Common/NETSdkWarning.cs", + "sha": "1140625c2da910bae94277b1e05b3028225d10f2", + "url": "https://api.github.com/repositories/63984307/contents/src/Tasks/Common/NETSdkWarning.cs?ref=6a0dd48eb0c28b1228056e6d6e12c782f854006a", + "git_url": "https://api.github.com/repositories/63984307/git/blobs/1140625c2da910bae94277b1e05b3028225d10f2", + "html_url": "https://github.com/dotnet/sdk/blob/6a0dd48eb0c28b1228056e6d6e12c782f854006a/src/Tasks/Common/NETSdkWarning.cs", + "repository": { + "id": 63984307, + "node_id": "MDEwOlJlcG9zaXRvcnk2Mzk4NDMwNw==", + "name": "sdk", + "full_name": "dotnet/sdk", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sdk", + "description": "Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sdk", + "forks_url": "https://api.github.com/repos/dotnet/sdk/forks", + "keys_url": "https://api.github.com/repos/dotnet/sdk/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sdk/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sdk/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sdk/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sdk/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sdk/events", + "assignees_url": "https://api.github.com/repos/dotnet/sdk/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sdk/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sdk/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sdk/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sdk/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sdk/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sdk/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sdk/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sdk/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sdk/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sdk/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sdk/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sdk/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sdk/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sdk/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sdk/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sdk/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sdk/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sdk/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sdk/merges", + "archive_url": "https://api.github.com/repos/dotnet/sdk/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sdk/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sdk/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sdk/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sdk/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sdk/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sdk/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sdk/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sdk/deployments" + }, + "score": 1 + }, + { + "name": "PackageSourceHelper.cs", + "path": "src/Features/Core/Portable/AddImport/PackageSourceHelper.cs", + "sha": "0da4c909251066f73843362aecd3ec4987779f01", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/AddImport/PackageSourceHelper.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0da4c909251066f73843362aecd3ec4987779f01", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/AddImport/PackageSourceHelper.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RQTypeVariableType.cs", + "path": "src/Features/Core/Portable/RQName/Nodes/RQTypeVariableType.cs", + "sha": "08db7688b3a728a3bdf070401dc297274aa0514f", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/RQName/Nodes/RQTypeVariableType.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/08db7688b3a728a3bdf070401dc297274aa0514f", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/RQName/Nodes/RQTypeVariableType.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SimpleSyntaxReference.cs", + "path": "src/Compilers/CSharp/Portable/Syntax/SimpleSyntaxReference.cs", + "sha": "05012aa79d8b07c7b9c61725345cb0a1004e3cb3", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Syntax/SimpleSyntaxReference.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/05012aa79d8b07c7b9c61725345cb0a1004e3cb3", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Syntax/SimpleSyntaxReference.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Binder.OverflowChecks.cs", + "path": "src/Compilers/CSharp/Portable/Binder/Binder.OverflowChecks.cs", + "sha": "0374b76808bb102db48f479cd06e537424334b58", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Binder/Binder.OverflowChecks.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0374b76808bb102db48f479cd06e537424334b58", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Binder/Binder.OverflowChecks.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "TestErrorReportingService.cs", + "path": "src/Workspaces/CoreTestUtilities/TestErrorReportingService.cs", + "sha": "0238e010c68854aa2a0d69622fa3cea822d421b4", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/CoreTestUtilities/TestErrorReportingService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0238e010c68854aa2a0d69622fa3cea822d421b4", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/CoreTestUtilities/TestErrorReportingService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IGitService.cs", + "path": "src/Microsoft.DotNet.ImageBuilder/src/IGitService.cs", + "sha": "0765ddc6951456b30734a49d3f9fe075ff6819d4", + "url": "https://api.github.com/repositories/89951797/contents/src/Microsoft.DotNet.ImageBuilder/src/IGitService.cs?ref=9791b1592829efbcd4da15a4aabed083b66615b7", + "git_url": "https://api.github.com/repositories/89951797/git/blobs/0765ddc6951456b30734a49d3f9fe075ff6819d4", + "html_url": "https://github.com/dotnet/docker-tools/blob/9791b1592829efbcd4da15a4aabed083b66615b7/src/Microsoft.DotNet.ImageBuilder/src/IGitService.cs", + "repository": { + "id": 89951797, + "node_id": "MDEwOlJlcG9zaXRvcnk4OTk1MTc5Nw==", + "name": "docker-tools", + "full_name": "dotnet/docker-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docker-tools", + "description": "This is a repo to house some common tools for our various docker repos. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docker-tools", + "forks_url": "https://api.github.com/repos/dotnet/docker-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/docker-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docker-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docker-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docker-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docker-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docker-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/docker-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docker-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docker-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docker-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docker-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docker-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docker-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docker-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docker-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docker-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docker-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docker-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docker-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docker-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docker-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docker-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docker-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docker-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docker-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docker-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/docker-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docker-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docker-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docker-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docker-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docker-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docker-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docker-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docker-tools/deployments" + }, + "score": 1 + }, + { + "name": "RewritingSimplifier.cs", + "path": "src/EntityFramework/Core/Mapping/ViewGeneration/QueryRewriting/RewritingSimplifier.cs", + "sha": "05e6339615fcbc0cfaaaac31068db2fab1d31a2e", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/Core/Mapping/ViewGeneration/QueryRewriting/RewritingSimplifier.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/05e6339615fcbc0cfaaaac31068db2fab1d31a2e", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/Core/Mapping/ViewGeneration/QueryRewriting/RewritingSimplifier.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/Microsoft.Crank.PullRequestBot/Program.cs", + "sha": "11f451ebb0fb51563dead797b0a1047bbb3173f4", + "url": "https://api.github.com/repositories/257738951/contents/src/Microsoft.Crank.PullRequestBot/Program.cs?ref=20fd95ee1a91b7030058745e620b757d795c6d7a", + "git_url": "https://api.github.com/repositories/257738951/git/blobs/11f451ebb0fb51563dead797b0a1047bbb3173f4", + "html_url": "https://github.com/dotnet/crank/blob/20fd95ee1a91b7030058745e620b757d795c6d7a/src/Microsoft.Crank.PullRequestBot/Program.cs", + "repository": { + "id": 257738951, + "node_id": "MDEwOlJlcG9zaXRvcnkyNTc3Mzg5NTE=", + "name": "crank", + "full_name": "dotnet/crank", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/crank", + "description": "Benchmarking infrastructure for applications", + "fork": false, + "url": "https://api.github.com/repos/dotnet/crank", + "forks_url": "https://api.github.com/repos/dotnet/crank/forks", + "keys_url": "https://api.github.com/repos/dotnet/crank/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/crank/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/crank/teams", + "hooks_url": "https://api.github.com/repos/dotnet/crank/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/crank/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/crank/events", + "assignees_url": "https://api.github.com/repos/dotnet/crank/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/crank/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/crank/tags", + "blobs_url": "https://api.github.com/repos/dotnet/crank/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/crank/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/crank/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/crank/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/crank/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/crank/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/crank/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/crank/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/crank/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/crank/subscription", + "commits_url": "https://api.github.com/repos/dotnet/crank/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/crank/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/crank/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/crank/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/crank/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/crank/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/crank/merges", + "archive_url": "https://api.github.com/repos/dotnet/crank/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/crank/downloads", + "issues_url": "https://api.github.com/repos/dotnet/crank/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/crank/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/crank/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/crank/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/crank/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/crank/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/crank/deployments" + }, + "score": 1 + }, + { + "name": "MethodLineDeltas.cs", + "path": "src/Microsoft.DiaSymReader.PortablePdb/MethodLineDeltas.cs", + "sha": "124ce4a18bcd2e9ed882d3bc9de694a276330b84", + "url": "https://api.github.com/repositories/55531619/contents/src/Microsoft.DiaSymReader.PortablePdb/MethodLineDeltas.cs?ref=90c6d92c05d2a89bace3dfd60802cb9f62502de5", + "git_url": "https://api.github.com/repositories/55531619/git/blobs/124ce4a18bcd2e9ed882d3bc9de694a276330b84", + "html_url": "https://github.com/dotnet/symreader-portable/blob/90c6d92c05d2a89bace3dfd60802cb9f62502de5/src/Microsoft.DiaSymReader.PortablePdb/MethodLineDeltas.cs", + "repository": { + "id": 55531619, + "node_id": "MDEwOlJlcG9zaXRvcnk1NTUzMTYxOQ==", + "name": "symreader-portable", + "full_name": "dotnet/symreader-portable", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader-portable", + "description": "Reader of Portable PDBs format that implements DiaSymReader interfaces (ISymUnmanagedReader, ISymUnmanagedBinder, etc.).", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader-portable", + "forks_url": "https://api.github.com/repos/dotnet/symreader-portable/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader-portable/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader-portable/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader-portable/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader-portable/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader-portable/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader-portable/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader-portable/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader-portable/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader-portable/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader-portable/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader-portable/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader-portable/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader-portable/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader-portable/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader-portable/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader-portable/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader-portable/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader-portable/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader-portable/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader-portable/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader-portable/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader-portable/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader-portable/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader-portable/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader-portable/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader-portable/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader-portable/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader-portable/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader-portable/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader-portable/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader-portable/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader-portable/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader-portable/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader-portable/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader-portable/deployments" + }, + "score": 1 + }, + { + "name": "XamarinFormsVersionCheck.cs", + "path": "src/extensions/maui/Microsoft.DotNet.UpgradeAssistant.Extensions.Maui/XamarinFormsVersionCheck.cs", + "sha": "10c6d8064d423fd20de103cbd4f60baa0f6ff6dc", + "url": "https://api.github.com/repositories/332061101/contents/src/extensions/maui/Microsoft.DotNet.UpgradeAssistant.Extensions.Maui/XamarinFormsVersionCheck.cs?ref=be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45", + "git_url": "https://api.github.com/repositories/332061101/git/blobs/10c6d8064d423fd20de103cbd4f60baa0f6ff6dc", + "html_url": "https://github.com/dotnet/upgrade-assistant/blob/be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45/src/extensions/maui/Microsoft.DotNet.UpgradeAssistant.Extensions.Maui/XamarinFormsVersionCheck.cs", + "repository": { + "id": 332061101, + "node_id": "MDEwOlJlcG9zaXRvcnkzMzIwNjExMDE=", + "name": "upgrade-assistant", + "full_name": "dotnet/upgrade-assistant", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/upgrade-assistant", + "description": "A tool to assist developers in upgrading .NET Framework applications to .NET 6 and beyond", + "fork": false, + "url": "https://api.github.com/repos/dotnet/upgrade-assistant", + "forks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/forks", + "keys_url": "https://api.github.com/repos/dotnet/upgrade-assistant/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/upgrade-assistant/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/upgrade-assistant/teams", + "hooks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/events", + "assignees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/upgrade-assistant/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/tags", + "blobs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/upgrade-assistant/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/upgrade-assistant/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscription", + "commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/upgrade-assistant/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/upgrade-assistant/merges", + "archive_url": "https://api.github.com/repos/dotnet/upgrade-assistant/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/upgrade-assistant/downloads", + "issues_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/upgrade-assistant/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/upgrade-assistant/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/upgrade-assistant/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/upgrade-assistant/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/upgrade-assistant/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/deployments" + }, + "score": 1 + }, + { + "name": "TypeConventionConfiguration.cs", + "path": "src/EntityFramework/ModelConfiguration/Configuration/Conventions/TypeConventionConfiguration.cs", + "sha": "0f216d4e63a50e95104d8fdd1e85b6e78b58e673", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/ModelConfiguration/Configuration/Conventions/TypeConventionConfiguration.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/0f216d4e63a50e95104d8fdd1e85b6e78b58e673", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/ModelConfiguration/Configuration/Conventions/TypeConventionConfiguration.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "StringPropertyConfiguration.cs", + "path": "src/EntityFramework/ModelConfiguration/Configuration/Properties/Primitive/StringPropertyConfiguration.cs", + "sha": "0774244abad0a1c756b4ce67f666db05009f098a", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/ModelConfiguration/Configuration/Properties/Primitive/StringPropertyConfiguration.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/0774244abad0a1c756b4ce67f666db05009f098a", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/ModelConfiguration/Configuration/Properties/Primitive/StringPropertyConfiguration.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "SelectionResult.cs", + "path": "src/Features/Core/Portable/ExtractMethod/SelectionResult.cs", + "sha": "0d922679c26d6ac3f4fed67fc48ec347aebf1d0f", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/ExtractMethod/SelectionResult.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0d922679c26d6ac3f4fed67fc48ec347aebf1d0f", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/ExtractMethod/SelectionResult.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "AnsiConsole.cs", + "path": "src/ef6/AnsiConsole.cs", + "sha": "0fd0270b146dc13d3bcda7f87a8c99923e5bfa08", + "url": "https://api.github.com/repositories/39985381/contents/src/ef6/AnsiConsole.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/0fd0270b146dc13d3bcda7f87a8c99923e5bfa08", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/ef6/AnsiConsole.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "SimpleLocalScopeBinder.cs", + "path": "src/Compilers/CSharp/Portable/Binder/SimpleLocalScopeBinder.cs", + "sha": "119ac348b2ae978a27e73ae89dc3bed4511bd296", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Binder/SimpleLocalScopeBinder.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/119ac348b2ae978a27e73ae89dc3bed4511bd296", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Binder/SimpleLocalScopeBinder.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ILanguageServerFactory.cs", + "path": "src/Features/LanguageServer/Protocol/ILanguageServerFactory.cs", + "sha": "0eb5a5e79185f94e19b6334d2cd37981f20b3ac2", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/LanguageServer/Protocol/ILanguageServerFactory.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0eb5a5e79185f94e19b6334d2cd37981f20b3ac2", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/LanguageServer/Protocol/ILanguageServerFactory.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "LSPCompletionProvider.cs", + "path": "src/Features/Core/Portable/Completion/LSPCompletionProvider.cs", + "sha": "0d59b4f454baee9b23dd066c24e24a9d5314ee3a", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Completion/LSPCompletionProvider.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0d59b4f454baee9b23dd066c24e24a9d5314ee3a", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Completion/LSPCompletionProvider.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SpanUtilities.cs", + "path": "src/Compilers/Core/Portable/InternalUtilities/SpanUtilities.cs", + "sha": "0c5a1641d1090d9959ccf31958c849803c52ab47", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/InternalUtilities/SpanUtilities.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0c5a1641d1090d9959ccf31958c849803c52ab47", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/InternalUtilities/SpanUtilities.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "VisualBasicCompilerServer.cs", + "path": "src/Compilers/Server/VBCSCompiler/VisualBasicCompilerServer.cs", + "sha": "0be389d52647731fc6816ba032f32cea97861894", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Server/VBCSCompiler/VisualBasicCompilerServer.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0be389d52647731fc6816ba032f32cea97861894", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Server/VBCSCompiler/VisualBasicCompilerServer.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Extensions.cs", + "path": "src/EditorFeatures/TestUtilities/EditAndContinue/Extensions.cs", + "sha": "074fa222242f2d2e3e674cf62668ecf1987ee198", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/TestUtilities/EditAndContinue/Extensions.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/074fa222242f2d2e3e674cf62668ecf1987ee198", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/TestUtilities/EditAndContinue/Extensions.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RemoteServiceConnection.cs", + "path": "src/Workspaces/Core/Portable/Remote/RemoteServiceConnection.cs", + "sha": "01b3a00404003f2226c30673bdbfb3b9c5e889b0", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Remote/RemoteServiceConnection.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/01b3a00404003f2226c30673bdbfb3b9c5e889b0", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Remote/RemoteServiceConnection.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IParameterKind.cs", + "path": "src/VisualStudio/Core/Impl/CodeModel/Interop/IParameterKind.cs", + "sha": "00622e3ae4b11ddac8b93865646c593f49f3b5b1", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Impl/CodeModel/Interop/IParameterKind.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/00622e3ae4b11ddac8b93865646c593f49f3b5b1", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Impl/CodeModel/Interop/IParameterKind.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "StatisticLogAggregator.cs", + "path": "src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs", + "sha": "05e72d59f51e32dbc8a51241aff7296173294da4", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/05e72d59f51e32dbc8a51241aff7296173294da4", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ResultComparer.cs", + "path": "src/Microsoft.Crank.Controller/ResultComparer.cs", + "sha": "090137febea1bcbc2206f1633a664658b1f738e2", + "url": "https://api.github.com/repositories/257738951/contents/src/Microsoft.Crank.Controller/ResultComparer.cs?ref=20fd95ee1a91b7030058745e620b757d795c6d7a", + "git_url": "https://api.github.com/repositories/257738951/git/blobs/090137febea1bcbc2206f1633a664658b1f738e2", + "html_url": "https://github.com/dotnet/crank/blob/20fd95ee1a91b7030058745e620b757d795c6d7a/src/Microsoft.Crank.Controller/ResultComparer.cs", + "repository": { + "id": 257738951, + "node_id": "MDEwOlJlcG9zaXRvcnkyNTc3Mzg5NTE=", + "name": "crank", + "full_name": "dotnet/crank", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/crank", + "description": "Benchmarking infrastructure for applications", + "fork": false, + "url": "https://api.github.com/repos/dotnet/crank", + "forks_url": "https://api.github.com/repos/dotnet/crank/forks", + "keys_url": "https://api.github.com/repos/dotnet/crank/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/crank/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/crank/teams", + "hooks_url": "https://api.github.com/repos/dotnet/crank/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/crank/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/crank/events", + "assignees_url": "https://api.github.com/repos/dotnet/crank/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/crank/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/crank/tags", + "blobs_url": "https://api.github.com/repos/dotnet/crank/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/crank/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/crank/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/crank/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/crank/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/crank/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/crank/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/crank/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/crank/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/crank/subscription", + "commits_url": "https://api.github.com/repos/dotnet/crank/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/crank/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/crank/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/crank/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/crank/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/crank/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/crank/merges", + "archive_url": "https://api.github.com/repos/dotnet/crank/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/crank/downloads", + "issues_url": "https://api.github.com/repos/dotnet/crank/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/crank/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/crank/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/crank/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/crank/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/crank/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/crank/deployments" + }, + "score": 1 + }, + { + "name": "consolewritelineactivity.cs", + "path": "snippets/csharp/VS_Snippets_CFX/wf_activities_project/cs/consolewritelineactivity.cs", + "sha": "0659549c0b4dc40cded80f063a7121b2ace2b1c6", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/VS_Snippets_CFX/wf_activities_project/cs/consolewritelineactivity.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/0659549c0b4dc40cded80f063a7121b2ace2b1c6", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/VS_Snippets_CFX/wf_activities_project/cs/consolewritelineactivity.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "HighlightingService.cs", + "path": "src/Features/Core/Portable/Highlighting/HighlightingService.cs", + "sha": "07e3611d98bea8d89b45cbe27f05df7cb2235c69", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Highlighting/HighlightingService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/07e3611d98bea8d89b45cbe27f05df7cb2235c69", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Highlighting/HighlightingService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "TypeCompareKind.cs", + "path": "src/Compilers/Core/Portable/Symbols/TypeCompareKind.cs", + "sha": "091608c1322594716568bc849f46833f7861d708", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Symbols/TypeCompareKind.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/091608c1322594716568bc849f46833f7861d708", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Symbols/TypeCompareKind.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs", + "path": "src/NetAnalyzers/UnitTests/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs", + "sha": "0da44b60048f04f9744499a754aa4bb5e7e22074", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/UnitTests/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/0da44b60048f04f9744499a754aa4bb5e7e22074", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/UnitTests/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "RemoteProjectInfoProvider.cs", + "path": "src/VisualStudio/LiveShare/Impl/Client/Projects/RemoteProjectInfoProvider.cs", + "sha": "06b5c97eeac6f6df59092bc52dbc917449536c21", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/LiveShare/Impl/Client/Projects/RemoteProjectInfoProvider.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/06b5c97eeac6f6df59092bc52dbc917449536c21", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/LiveShare/Impl/Client/Projects/RemoteProjectInfoProvider.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "DoNotDisableRequestValidation.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs", + "sha": "15603ea24d4f1110db56cc3133b07ac5bbfb08a5", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/15603ea24d4f1110db56cc3133b07ac5bbfb08a5", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotDisableRequestValidation.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "SimplexStream.cs", + "path": "src/Nerdbank.Streams/SimplexStream.cs", + "sha": "10d4af09d627aa6fcc4bd81d18e3d899d884c6ce", + "url": "https://api.github.com/repositories/43795655/contents/src/Nerdbank.Streams/SimplexStream.cs?ref=5d1c8b25e55e88d5e1f40a879f79069ebcc914ce", + "git_url": "https://api.github.com/repositories/43795655/git/blobs/10d4af09d627aa6fcc4bd81d18e3d899d884c6ce", + "html_url": "https://github.com/dotnet/Nerdbank.Streams/blob/5d1c8b25e55e88d5e1f40a879f79069ebcc914ce/src/Nerdbank.Streams/SimplexStream.cs", + "repository": { + "id": 43795655, + "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==", + "name": "Nerdbank.Streams", + "full_name": "dotnet/Nerdbank.Streams", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Nerdbank.Streams", + "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Nerdbank.Streams", + "forks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/forks", + "keys_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/events", + "assignees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/merges", + "archive_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/deployments" + }, + "score": 1 + }, + { + "name": "BufferWriterStream.cs", + "path": "src/Nerdbank.Streams/BufferWriterStream.cs", + "sha": "0ea4d2fd4a411c9bbc2974efcaa67db47855a6c7", + "url": "https://api.github.com/repositories/43795655/contents/src/Nerdbank.Streams/BufferWriterStream.cs?ref=5d1c8b25e55e88d5e1f40a879f79069ebcc914ce", + "git_url": "https://api.github.com/repositories/43795655/git/blobs/0ea4d2fd4a411c9bbc2974efcaa67db47855a6c7", + "html_url": "https://github.com/dotnet/Nerdbank.Streams/blob/5d1c8b25e55e88d5e1f40a879f79069ebcc914ce/src/Nerdbank.Streams/BufferWriterStream.cs", + "repository": { + "id": 43795655, + "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==", + "name": "Nerdbank.Streams", + "full_name": "dotnet/Nerdbank.Streams", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Nerdbank.Streams", + "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Nerdbank.Streams", + "forks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/forks", + "keys_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/events", + "assignees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/merges", + "archive_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/deployments" + }, + "score": 1 + }, + { + "name": "MockEngine.cs", + "path": "src/Compilers/Core/MSBuildTaskTests/TestUtilities/MockEngine.cs", + "sha": "126b6f4ddb59b9fb61a783d32451b76e18a27269", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/MSBuildTaskTests/TestUtilities/MockEngine.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/126b6f4ddb59b9fb61a783d32451b76e18a27269", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/MSBuildTaskTests/TestUtilities/MockEngine.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IRazorDocumentServiceProvider.cs", + "path": "src/Tools/ExternalAccess/Razor/IRazorDocumentServiceProvider.cs", + "sha": "101b26d992bd23478ec6c972e51344baa99e660c", + "url": "https://api.github.com/repositories/29078997/contents/src/Tools/ExternalAccess/Razor/IRazorDocumentServiceProvider.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/101b26d992bd23478ec6c972e51344baa99e660c", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Tools/ExternalAccess/Razor/IRazorDocumentServiceProvider.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineReference.cs", + "path": "src/Compilers/Core/Portable/CommandLine/CommandLineReference.cs", + "sha": "0f12df2d29f9b21eb604cbd660547156ec8470ef", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/CommandLine/CommandLineReference.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0f12df2d29f9b21eb604cbd660547156ec8470ef", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/CommandLine/CommandLineReference.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SerializerService.cs", + "path": "src/Workspaces/Core/Portable/Serialization/SerializerService.cs", + "sha": "096beeb1e06602a7a78096222afa077425d7ceae", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Serialization/SerializerService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/096beeb1e06602a7a78096222afa077425d7ceae", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Serialization/SerializerService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Disposable.cs", + "path": "Source/MQTTnet/Internal/Disposable.cs", + "sha": "0adb34785f23b5acad659cdb4e2500b69d39d9ee", + "url": "https://api.github.com/repositories/85242321/contents/Source/MQTTnet/Internal/Disposable.cs?ref=9295626503231e50310aba104ed94e216ba4e95a", + "git_url": "https://api.github.com/repositories/85242321/git/blobs/0adb34785f23b5acad659cdb4e2500b69d39d9ee", + "html_url": "https://github.com/dotnet/MQTTnet/blob/9295626503231e50310aba104ed94e216ba4e95a/Source/MQTTnet/Internal/Disposable.cs", + "repository": { + "id": 85242321, + "node_id": "MDEwOlJlcG9zaXRvcnk4NTI0MjMyMQ==", + "name": "MQTTnet", + "full_name": "dotnet/MQTTnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/MQTTnet", + "description": "MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/MQTTnet", + "forks_url": "https://api.github.com/repos/dotnet/MQTTnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/MQTTnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/MQTTnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/MQTTnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/MQTTnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/MQTTnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/MQTTnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/MQTTnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/MQTTnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/MQTTnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/MQTTnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/MQTTnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/MQTTnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/MQTTnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/MQTTnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/MQTTnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/MQTTnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/MQTTnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/MQTTnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/MQTTnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/MQTTnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/MQTTnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/MQTTnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/MQTTnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/MQTTnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/MQTTnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/MQTTnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/MQTTnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/MQTTnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/MQTTnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/MQTTnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/MQTTnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpUsePropertiesWhereAppropriate.Fixer.cs", + "path": "src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpUsePropertiesWhereAppropriate.Fixer.cs", + "sha": "00b8ddeabefd622d3525076783d425bab13697c5", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpUsePropertiesWhereAppropriate.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/00b8ddeabefd622d3525076783d425bab13697c5", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpUsePropertiesWhereAppropriate.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/3-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/3-codeSearch.json new file mode 100644 index 00000000000..b864ed85944 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/3-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=4" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "Perf.FileStream.cs", + "path": "src/benchmarks/micro/libraries/System.IO.FileSystem/Perf.FileStream.cs", + "sha": "0bc6ba5a79ec2d0e69f3ec93e1f93b12321f069a", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/libraries/System.IO.FileSystem/Perf.FileStream.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/0bc6ba5a79ec2d0e69f3ec93e1f93b12321f069a", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/libraries/System.IO.FileSystem/Perf.FileStream.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "TestExecutionState.cs", + "path": "src/Microsoft.DotNet.XHarness.TestRunners.Common/TestExecutionState.cs", + "sha": "0a2da695d7155725a4a15f4200038a76345ea406", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.TestRunners.Common/TestExecutionState.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/0a2da695d7155725a4a15f4200038a76345ea406", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.TestRunners.Common/TestExecutionState.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "ScriptMetadataResolver.cs", + "path": "src/Scripting/Core/ScriptMetadataResolver.cs", + "sha": "15313da651708b943406661be1814023d3f879f3", + "url": "https://api.github.com/repositories/29078997/contents/src/Scripting/Core/ScriptMetadataResolver.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/15313da651708b943406661be1814023d3f879f3", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Scripting/Core/ScriptMetadataResolver.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IInlineRenameUndoManager.cs", + "path": "src/EditorFeatures/Core/InlineRename/IInlineRenameUndoManager.cs", + "sha": "1472d177994595902470adb7f3df6b9c92a2db26", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core/InlineRename/IInlineRenameUndoManager.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1472d177994595902470adb7f3df6b9c92a2db26", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core/InlineRename/IInlineRenameUndoManager.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SyntaxList.WithTwoChildren.cs", + "path": "src/Compilers/Core/Portable/Syntax/SyntaxList.WithTwoChildren.cs", + "sha": "129a10924a0f7d1692dd65d83b385dffa1095055", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Syntax/SyntaxList.WithTwoChildren.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/129a10924a0f7d1692dd65d83b385dffa1095055", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Syntax/SyntaxList.WithTwoChildren.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ComputingTreeViewItem.cs", + "path": "src/VisualStudio/Core/Def/ValueTracking/ComputingTreeViewItem.cs", + "sha": "0fcf993b01616789f9522476a2f0493174db6311", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Def/ValueTracking/ComputingTreeViewItem.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0fcf993b01616789f9522476a2f0493174db6311", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Def/ValueTracking/ComputingTreeViewItem.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IRemoteAssetSynchronizationService.cs", + "path": "src/Workspaces/Remote/Core/IRemoteAssetSynchronizationService.cs", + "sha": "0b3c0f3a0bc77aa8277e43a83398ecdb784178ec", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Remote/Core/IRemoteAssetSynchronizationService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0b3c0f3a0bc77aa8277e43a83398ecdb784178ec", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Remote/Core/IRemoteAssetSynchronizationService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "DocumentNavigationOperation.cs", + "path": "src/Features/Core/Portable/Common/DocumentNavigationOperation.cs", + "sha": "005121ed3c22e3b5d89cc4d5849d60c70248a2ef", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Common/DocumentNavigationOperation.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/005121ed3c22e3b5d89cc4d5849d60c70248a2ef", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Common/DocumentNavigationOperation.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "AliasSymbol.cs", + "path": "src/Compilers/CSharp/Portable/Symbols/PublicModel/AliasSymbol.cs", + "sha": "0035d4b2a3e61ecbce84d26c3716d118270394b0", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Symbols/PublicModel/AliasSymbol.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0035d4b2a3e61ecbce84d26c3716d118270394b0", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Symbols/PublicModel/AliasSymbol.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "CodeStylePage.cs", + "path": "src/VisualStudio/CSharp/Impl/Options/Formatting/CodeStylePage.cs", + "sha": "02b5e27239acc8a2636826a82ea93de1f274f093", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/CSharp/Impl/Options/Formatting/CodeStylePage.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/02b5e27239acc8a2636826a82ea93de1f274f093", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/CSharp/Impl/Options/Formatting/CodeStylePage.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ISymUnmanagedScope.cs", + "path": "src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope.cs", + "sha": "085f90af8c1971d5697b3972167512da931374fa", + "url": "https://api.github.com/repositories/45562551/contents/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope.cs?ref=615d7ba83f00c049689e1c22af352867aba2023d", + "git_url": "https://api.github.com/repositories/45562551/git/blobs/085f90af8c1971d5697b3972167512da931374fa", + "html_url": "https://github.com/dotnet/symreader/blob/615d7ba83f00c049689e1c22af352867aba2023d/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope.cs", + "repository": { + "id": 45562551, + "node_id": "MDEwOlJlcG9zaXRvcnk0NTU2MjU1MQ==", + "name": "symreader", + "full_name": "dotnet/symreader", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader", + "description": "Managed definitions for COM interfaces exposed by DiaSymReader APIs", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader", + "forks_url": "https://api.github.com/repos/dotnet/symreader/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader/deployments" + }, + "score": 1 + }, + { + "name": "Substream.cs", + "path": "src/Nerdbank.Streams/Substream.cs", + "sha": "003664d8ec2bf65032ebc11f4d615cc07bed9873", + "url": "https://api.github.com/repositories/43795655/contents/src/Nerdbank.Streams/Substream.cs?ref=5d1c8b25e55e88d5e1f40a879f79069ebcc914ce", + "git_url": "https://api.github.com/repositories/43795655/git/blobs/003664d8ec2bf65032ebc11f4d615cc07bed9873", + "html_url": "https://github.com/dotnet/Nerdbank.Streams/blob/5d1c8b25e55e88d5e1f40a879f79069ebcc914ce/src/Nerdbank.Streams/Substream.cs", + "repository": { + "id": 43795655, + "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==", + "name": "Nerdbank.Streams", + "full_name": "dotnet/Nerdbank.Streams", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Nerdbank.Streams", + "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Nerdbank.Streams", + "forks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/forks", + "keys_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/events", + "assignees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/merges", + "archive_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/deployments" + }, + "score": 1 + }, + { + "name": "UsingStatementSyntax.cs", + "path": "src/Compilers/CSharp/Portable/Syntax/UsingStatementSyntax.cs", + "sha": "01d81789aef5dba20fe68b3338c3b9fcc9c41713", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Syntax/UsingStatementSyntax.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/01d81789aef5dba20fe68b3338c3b9fcc9c41713", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Syntax/UsingStatementSyntax.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Logger.OperationDisposable.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Logger.OperationDisposable.cs", + "sha": "154fb8c5c608d19ea6055f50225c6dd3d8d14ee4", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Logger.OperationDisposable.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/154fb8c5c608d19ea6055f50225c6dd3d8d14ee4", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Logger.OperationDisposable.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "JsonModeLsifJsonWriter.cs", + "path": "src/Features/Lsif/Generator/Writing/JsonModeLsifJsonWriter.cs", + "sha": "08fc997545a038cb09d4bbd3f4608d00ce4a5837", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Lsif/Generator/Writing/JsonModeLsifJsonWriter.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/08fc997545a038cb09d4bbd3f4608d00ce4a5837", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Lsif/Generator/Writing/JsonModeLsifJsonWriter.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IXmlResultParser.cs", + "path": "src/Microsoft.DotNet.XHarness.iOS.Shared/XmlResults/IXmlResultParser.cs", + "sha": "023661e45b0918592add4815355fcde6599aeddf", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.iOS.Shared/XmlResults/IXmlResultParser.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/023661e45b0918592add4815355fcde6599aeddf", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.iOS.Shared/XmlResults/IXmlResultParser.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "InitCommandOptions.cs", + "path": "src/docfx/Models/InitCommandOptions.cs", + "sha": "103be9e3491023cda9a949c98ce3496c0bfb4175", + "url": "https://api.github.com/repositories/38007053/contents/src/docfx/Models/InitCommandOptions.cs?ref=b0e90fdb63174cbcd52a8d47c7548db27caf7f16", + "git_url": "https://api.github.com/repositories/38007053/git/blobs/103be9e3491023cda9a949c98ce3496c0bfb4175", + "html_url": "https://github.com/dotnet/docfx/blob/b0e90fdb63174cbcd52a8d47c7548db27caf7f16/src/docfx/Models/InitCommandOptions.cs", + "repository": { + "id": 38007053, + "node_id": "MDEwOlJlcG9zaXRvcnkzODAwNzA1Mw==", + "name": "docfx", + "full_name": "dotnet/docfx", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docfx", + "description": "Static site generator for .NET API documentation.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docfx", + "forks_url": "https://api.github.com/repos/dotnet/docfx/forks", + "keys_url": "https://api.github.com/repos/dotnet/docfx/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docfx/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docfx/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docfx/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docfx/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docfx/events", + "assignees_url": "https://api.github.com/repos/dotnet/docfx/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docfx/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docfx/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docfx/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docfx/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docfx/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docfx/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docfx/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docfx/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docfx/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docfx/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docfx/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docfx/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docfx/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docfx/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docfx/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docfx/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docfx/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docfx/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docfx/merges", + "archive_url": "https://api.github.com/repos/dotnet/docfx/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docfx/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docfx/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docfx/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docfx/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docfx/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docfx/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docfx/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docfx/deployments" + }, + "score": 1 + }, + { + "name": "PreviewPaneService.cs", + "path": "src/EditorFeatures/Core.Cocoa/Preview/PreviewPaneService.cs", + "sha": "09a38b752f6cf4aa2b95506b21e6f511fd8dc51b", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core.Cocoa/Preview/PreviewPaneService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/09a38b752f6cf4aa2b95506b21e6f511fd8dc51b", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core.Cocoa/Preview/PreviewPaneService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SolutionLogger.cs", + "path": "src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs", + "sha": "161afc1205301594f36a544d31ce2662ef05c93c", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/161afc1205301594f36a544d31ce2662ef05c93c", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ISymbolMappingService.cs", + "path": "src/Features/Core/Portable/SymbolMapping/ISymbolMappingService.cs", + "sha": "13d443a5ed8aabcdbdace22784db75789252f016", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/SymbolMapping/ISymbolMappingService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/13d443a5ed8aabcdbdace22784db75789252f016", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/SymbolMapping/ISymbolMappingService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SimplifyThisOrMeTests.cs", + "path": "src/Features/CSharpTest/SimplifyThisOrMe/SimplifyThisOrMeTests.cs", + "sha": "115b0ab1823118dbdad40d602b1fdb925a966619", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/CSharpTest/SimplifyThisOrMe/SimplifyThisOrMeTests.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/115b0ab1823118dbdad40d602b1fdb925a966619", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/CSharpTest/SimplifyThisOrMe/SimplifyThisOrMeTests.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ObjectBinderSnapshot.cs", + "path": "src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs", + "sha": "0de23f1fc21900f7f018b031ae735c92f60a0835", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0de23f1fc21900f7f018b031ae735c92f60a0835", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "DiagnosticInfoWithSymbols.cs", + "path": "src/Compilers/CSharp/Portable/Errors/DiagnosticInfoWithSymbols.cs", + "sha": "0b18628e469b47ec801d3a28d4f82725c80b1126", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Errors/DiagnosticInfoWithSymbols.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0b18628e469b47ec801d3a28d4f82725c80b1126", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Errors/DiagnosticInfoWithSymbols.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "FormattingRangeHelperTests.cs", + "path": "src/Workspaces/CoreTest/UtilityTest/FormattingRangeHelperTests.cs", + "sha": "0a42b5e98df10d23a35c571deac1ad72feae92d3", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/CoreTest/UtilityTest/FormattingRangeHelperTests.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0a42b5e98df10d23a35c571deac1ad72feae92d3", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/CoreTest/UtilityTest/FormattingRangeHelperTests.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "EndRegionFormattingRule.cs", + "path": "src/VisualStudio/CSharp/Impl/CodeModel/EndRegionFormattingRule.cs", + "sha": "07a3f3dd02c44e2bd4a3a5f273aa2c46362a32ed", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/CSharp/Impl/CodeModel/EndRegionFormattingRule.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/07a3f3dd02c44e2bd4a3a5f273aa2c46362a32ed", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/CSharp/Impl/CodeModel/EndRegionFormattingRule.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "AbstractTypeParameterMap.cs", + "path": "src/Compilers/CSharp/Portable/Symbols/AbstractTypeParameterMap.cs", + "sha": "02db5b18b20fe71495ba702d1086ce069dac438f", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Symbols/AbstractTypeParameterMap.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/02db5b18b20fe71495ba702d1086ce069dac438f", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Symbols/AbstractTypeParameterMap.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "AsyncLockTest.cs", + "path": "Source/MQTTnet.TestApp/AsyncLockTest.cs", + "sha": "035f3d46cbb9765c73fab257f3d31056f9e92aa2", + "url": "https://api.github.com/repositories/85242321/contents/Source/MQTTnet.TestApp/AsyncLockTest.cs?ref=9295626503231e50310aba104ed94e216ba4e95a", + "git_url": "https://api.github.com/repositories/85242321/git/blobs/035f3d46cbb9765c73fab257f3d31056f9e92aa2", + "html_url": "https://github.com/dotnet/MQTTnet/blob/9295626503231e50310aba104ed94e216ba4e95a/Source/MQTTnet.TestApp/AsyncLockTest.cs", + "repository": { + "id": 85242321, + "node_id": "MDEwOlJlcG9zaXRvcnk4NTI0MjMyMQ==", + "name": "MQTTnet", + "full_name": "dotnet/MQTTnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/MQTTnet", + "description": "MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/MQTTnet", + "forks_url": "https://api.github.com/repos/dotnet/MQTTnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/MQTTnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/MQTTnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/MQTTnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/MQTTnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/MQTTnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/MQTTnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/MQTTnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/MQTTnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/MQTTnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/MQTTnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/MQTTnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/MQTTnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/MQTTnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/MQTTnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/MQTTnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/MQTTnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/MQTTnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/MQTTnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/MQTTnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/MQTTnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/MQTTnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/MQTTnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/MQTTnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/MQTTnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/MQTTnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/MQTTnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/MQTTnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/MQTTnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/MQTTnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/MQTTnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/MQTTnet/deployments" + }, + "score": 1 + }, + { + "name": "SpanChange.cs", + "path": "src/VisualStudio/Core/Def/Preview/SpanChange.cs", + "sha": "047711eca7289561795565590db582bacea04914", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Def/Preview/SpanChange.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/047711eca7289561795565590db582bacea04914", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Def/Preview/SpanChange.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "MigrationsScaffolder.cs", + "path": "src/EFCore.Design/Migrations/Design/MigrationsScaffolder.cs", + "sha": "083cdb4daea045e1b058db1c68fda6d4d61b20e2", + "url": "https://api.github.com/repositories/16157746/contents/src/EFCore.Design/Migrations/Design/MigrationsScaffolder.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/083cdb4daea045e1b058db1c68fda6d4d61b20e2", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/EFCore.Design/Migrations/Design/MigrationsScaffolder.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "CodeAnalysisMetricData.NamedTypeMetricData.cs", + "path": "src/Utilities/Compiler/CodeMetrics/CodeAnalysisMetricData.NamedTypeMetricData.cs", + "sha": "1626d41a1252c000066dbfd460d105f8126eac64", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/Compiler/CodeMetrics/CodeAnalysisMetricData.NamedTypeMetricData.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/1626d41a1252c000066dbfd460d105f8126eac64", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/Compiler/CodeMetrics/CodeAnalysisMetricData.NamedTypeMetricData.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "INamespaceSymbol.cs", + "path": "src/Compilers/Core/Portable/Symbols/INamespaceSymbol.cs", + "sha": "0b6065c11776a1d58d6cf7fa34a631b6a46f71fe", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Symbols/INamespaceSymbol.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0b6065c11776a1d58d6cf7fa34a631b6a46f71fe", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Symbols/INamespaceSymbol.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ValueTrackedItem.cs", + "path": "src/Features/Core/Portable/ValueTracking/ValueTrackedItem.cs", + "sha": "1454ff280a11bceb36740e980d9e0bc3f42f712d", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/ValueTracking/ValueTrackedItem.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1454ff280a11bceb36740e980d9e0bc3f42f712d", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/ValueTracking/ValueTrackedItem.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Runner.cs", + "path": "RepoMan/Runner.cs", + "sha": "09e585f8477758cc6205abd21379c4660305add9", + "url": "https://api.github.com/repositories/377331068/contents/RepoMan/Runner.cs?ref=3b5b3823f2d1f2079bd200594e3afd5165dde49a", + "git_url": "https://api.github.com/repositories/377331068/git/blobs/09e585f8477758cc6205abd21379c4660305add9", + "html_url": "https://github.com/dotnet/docs-tools/blob/3b5b3823f2d1f2079bd200594e3afd5165dde49a/RepoMan/Runner.cs", + "repository": { + "id": 377331068, + "node_id": "MDEwOlJlcG9zaXRvcnkzNzczMzEwNjg=", + "name": "docs-tools", + "full_name": "dotnet/docs-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docs-tools", + "description": "This repo contains GitHub Actions and other tools that are designed to be invoked on DocFx repositories.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docs-tools", + "forks_url": "https://api.github.com/repos/dotnet/docs-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/docs-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docs-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docs-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docs-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docs-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docs-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/docs-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docs-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docs-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docs-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docs-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docs-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docs-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docs-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docs-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docs-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docs-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docs-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docs-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docs-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docs-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docs-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docs-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docs-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docs-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docs-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/docs-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docs-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docs-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docs-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docs-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docs-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docs-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docs-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docs-tools/deployments" + }, + "score": 1 + }, + { + "name": "DotNetSdkTests.cs", + "path": "src/Compilers/Core/MSBuildTaskTests/DotNetSdkTests.cs", + "sha": "0aa0d9e8f7f98e2a108a7976bbcbe0a9e2f6665e", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/MSBuildTaskTests/DotNetSdkTests.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0aa0d9e8f7f98e2a108a7976bbcbe0a9e2f6665e", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/MSBuildTaskTests/DotNetSdkTests.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "MatchTests.cs", + "path": "src/Workspaces/CoreTest/Differencing/MatchTests.cs", + "sha": "15c0ecc3a90899cede3e9fd04ca5068bd7a94dbd", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/CoreTest/Differencing/MatchTests.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/15c0ecc3a90899cede3e9fd04ca5068bd7a94dbd", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/CoreTest/Differencing/MatchTests.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RunServe.cs", + "path": "src/Microsoft.DocAsCode.App/RunServe.cs", + "sha": "0f6687359e8802d5438718651486a918eb7a92b7", + "url": "https://api.github.com/repositories/38007053/contents/src/Microsoft.DocAsCode.App/RunServe.cs?ref=b0e90fdb63174cbcd52a8d47c7548db27caf7f16", + "git_url": "https://api.github.com/repositories/38007053/git/blobs/0f6687359e8802d5438718651486a918eb7a92b7", + "html_url": "https://github.com/dotnet/docfx/blob/b0e90fdb63174cbcd52a8d47c7548db27caf7f16/src/Microsoft.DocAsCode.App/RunServe.cs", + "repository": { + "id": 38007053, + "node_id": "MDEwOlJlcG9zaXRvcnkzODAwNzA1Mw==", + "name": "docfx", + "full_name": "dotnet/docfx", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docfx", + "description": "Static site generator for .NET API documentation.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docfx", + "forks_url": "https://api.github.com/repos/dotnet/docfx/forks", + "keys_url": "https://api.github.com/repos/dotnet/docfx/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docfx/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docfx/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docfx/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docfx/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docfx/events", + "assignees_url": "https://api.github.com/repos/dotnet/docfx/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docfx/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docfx/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docfx/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docfx/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docfx/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docfx/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docfx/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docfx/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docfx/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docfx/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docfx/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docfx/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docfx/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docfx/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docfx/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docfx/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docfx/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docfx/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docfx/merges", + "archive_url": "https://api.github.com/repos/dotnet/docfx/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docfx/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docfx/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docfx/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docfx/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docfx/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docfx/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docfx/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docfx/deployments" + }, + "score": 1 + }, + { + "name": "RandomModel.cs", + "path": "src/3. Meeting Your Match/Models/RandomModel.cs", + "sha": "15833ab0deceddd4c342913f3eb0439dcaa8d37f", + "url": "https://api.github.com/repositories/173785725/contents/src/3.%20Meeting%20Your%20Match/Models/RandomModel.cs?ref=4a8f76a3605b28406670db0684f14d1f521f291d", + "git_url": "https://api.github.com/repositories/173785725/git/blobs/15833ab0deceddd4c342913f3eb0439dcaa8d37f", + "html_url": "https://github.com/dotnet/mbmlbook/blob/4a8f76a3605b28406670db0684f14d1f521f291d/src/3.%20Meeting%20Your%20Match/Models/RandomModel.cs", + "repository": { + "id": 173785725, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzM3ODU3MjU=", + "name": "mbmlbook", + "full_name": "dotnet/mbmlbook", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/mbmlbook", + "description": "Sample code for the Model-Based Machine Learning book.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/mbmlbook", + "forks_url": "https://api.github.com/repos/dotnet/mbmlbook/forks", + "keys_url": "https://api.github.com/repos/dotnet/mbmlbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/mbmlbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/mbmlbook/teams", + "hooks_url": "https://api.github.com/repos/dotnet/mbmlbook/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/mbmlbook/events", + "assignees_url": "https://api.github.com/repos/dotnet/mbmlbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/mbmlbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/mbmlbook/tags", + "blobs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/mbmlbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/mbmlbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/mbmlbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/mbmlbook/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/mbmlbook/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/mbmlbook/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/mbmlbook/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/mbmlbook/subscription", + "commits_url": "https://api.github.com/repos/dotnet/mbmlbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/mbmlbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/mbmlbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/mbmlbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/mbmlbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/mbmlbook/merges", + "archive_url": "https://api.github.com/repos/dotnet/mbmlbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/mbmlbook/downloads", + "issues_url": "https://api.github.com/repos/dotnet/mbmlbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/mbmlbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/mbmlbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/mbmlbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/mbmlbook/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/mbmlbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/mbmlbook/deployments" + }, + "score": 1 + }, + { + "name": "CSharpBracePairsService.cs", + "path": "src/Features/CSharp/Portable/BracePairs/CSharpBracePairsService.cs", + "sha": "159e4a4dcd03184480cf2508e4cdffdfe1992355", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/CSharp/Portable/BracePairs/CSharpBracePairsService.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/159e4a4dcd03184480cf2508e4cdffdfe1992355", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/CSharp/Portable/BracePairs/CSharpBracePairsService.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SignatureHelpViewOptionsStorage.cs", + "path": "src/EditorFeatures/Core/Options/SignatureHelpViewOptionsStorage.cs", + "sha": "0cd1e25a954013e89af427f95d2ed484927547a8", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core/Options/SignatureHelpViewOptionsStorage.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0cd1e25a954013e89af427f95d2ed484927547a8", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core/Options/SignatureHelpViewOptionsStorage.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "HandlerResolver.cs", + "path": "Maestro/src/Microsoft.DotNet.Maestro.WebApi/Services/HandlerResolver.cs", + "sha": "11ae057206d680085ce490330ff320481c3c3eb6", + "url": "https://api.github.com/repositories/56803734/contents/Maestro/src/Microsoft.DotNet.Maestro.WebApi/Services/HandlerResolver.cs?ref=47ece761793c373569eedf314e9999a6d8d6c50f", + "git_url": "https://api.github.com/repositories/56803734/git/blobs/11ae057206d680085ce490330ff320481c3c3eb6", + "html_url": "https://github.com/dotnet/versions/blob/47ece761793c373569eedf314e9999a6d8d6c50f/Maestro/src/Microsoft.DotNet.Maestro.WebApi/Services/HandlerResolver.cs", + "repository": { + "id": 56803734, + "node_id": "MDEwOlJlcG9zaXRvcnk1NjgwMzczNA==", + "name": "versions", + "full_name": "dotnet/versions", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/versions", + "description": "This repo contains information about the various component versions that ship with .NET Core. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/versions", + "forks_url": "https://api.github.com/repos/dotnet/versions/forks", + "keys_url": "https://api.github.com/repos/dotnet/versions/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/versions/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/versions/teams", + "hooks_url": "https://api.github.com/repos/dotnet/versions/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/versions/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/versions/events", + "assignees_url": "https://api.github.com/repos/dotnet/versions/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/versions/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/versions/tags", + "blobs_url": "https://api.github.com/repos/dotnet/versions/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/versions/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/versions/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/versions/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/versions/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/versions/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/versions/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/versions/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/versions/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/versions/subscription", + "commits_url": "https://api.github.com/repos/dotnet/versions/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/versions/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/versions/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/versions/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/versions/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/versions/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/versions/merges", + "archive_url": "https://api.github.com/repos/dotnet/versions/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/versions/downloads", + "issues_url": "https://api.github.com/repos/dotnet/versions/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/versions/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/versions/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/versions/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/versions/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/versions/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/versions/deployments" + }, + "score": 1 + }, + { + "name": "Client_Publish_Samples.cs", + "path": "Samples/Client/Client_Publish_Samples.cs", + "sha": "021c0613fbb15ad7320c5fb7a800af0fdd2add51", + "url": "https://api.github.com/repositories/85242321/contents/Samples/Client/Client_Publish_Samples.cs?ref=9295626503231e50310aba104ed94e216ba4e95a", + "git_url": "https://api.github.com/repositories/85242321/git/blobs/021c0613fbb15ad7320c5fb7a800af0fdd2add51", + "html_url": "https://github.com/dotnet/MQTTnet/blob/9295626503231e50310aba104ed94e216ba4e95a/Samples/Client/Client_Publish_Samples.cs", + "repository": { + "id": 85242321, + "node_id": "MDEwOlJlcG9zaXRvcnk4NTI0MjMyMQ==", + "name": "MQTTnet", + "full_name": "dotnet/MQTTnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/MQTTnet", + "description": "MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/MQTTnet", + "forks_url": "https://api.github.com/repos/dotnet/MQTTnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/MQTTnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/MQTTnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/MQTTnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/MQTTnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/MQTTnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/MQTTnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/MQTTnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/MQTTnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/MQTTnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/MQTTnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/MQTTnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/MQTTnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/MQTTnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/MQTTnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/MQTTnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/MQTTnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/MQTTnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/MQTTnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/MQTTnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/MQTTnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/MQTTnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/MQTTnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/MQTTnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/MQTTnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/MQTTnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/MQTTnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/MQTTnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/MQTTnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/MQTTnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/MQTTnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/MQTTnet/deployments" + }, + "score": 1 + }, + { + "name": "CommonSyntaxNodeRemover.cs", + "path": "src/Compilers/Core/Portable/Syntax/CommonSyntaxNodeRemover.cs", + "sha": "13de44c1d7758aedc89bf06d9af5d31fa7f77817", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Syntax/CommonSyntaxNodeRemover.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/13de44c1d7758aedc89bf06d9af5d31fa7f77817", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Syntax/CommonSyntaxNodeRemover.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Part_CellMetadataPart.g.cs", + "path": "generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Part_CellMetadataPart.g.cs", + "sha": "136b3e62801915b273d2f9f34f55f33be949189e", + "url": "https://api.github.com/repositories/20532052/contents/generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Part_CellMetadataPart.g.cs?ref=e7a0331218de7f53582698bdfd1ddcc2124c1a40", + "git_url": "https://api.github.com/repositories/20532052/git/blobs/136b3e62801915b273d2f9f34f55f33be949189e", + "html_url": "https://github.com/dotnet/Open-XML-SDK/blob/e7a0331218de7f53582698bdfd1ddcc2124c1a40/generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.OpenXmlGenerator/Part_CellMetadataPart.g.cs", + "repository": { + "id": 20532052, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDUzMjA1Mg==", + "name": "Open-XML-SDK", + "full_name": "dotnet/Open-XML-SDK", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Open-XML-SDK", + "description": "Open XML SDK by Microsoft", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Open-XML-SDK", + "forks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/forks", + "keys_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/events", + "assignees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/merges", + "archive_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/deployments" + }, + "score": 1 + }, + { + "name": "SemanticFacts.cs", + "path": "src/Compilers/CSharp/Portable/Binder/Semantics/SemanticFacts.cs", + "sha": "08e10e0a52293584bb9a380c69768744aab7653c", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Binder/Semantics/SemanticFacts.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/08e10e0a52293584bb9a380c69768744aab7653c", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Binder/Semantics/SemanticFacts.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ModelUpdatedEventsArgs.cs", + "path": "src/EditorFeatures/Core.Wpf/SignatureHelp/ModelUpdatedEventsArgs.cs", + "sha": "13985c6ea83b18d51885d91e9299e90ec5cbd5d4", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core.Wpf/SignatureHelp/ModelUpdatedEventsArgs.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/13985c6ea83b18d51885d91e9299e90ec5cbd5d4", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core.Wpf/SignatureHelp/ModelUpdatedEventsArgs.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IVsExpansionSessionExtensions.cs", + "path": "src/VisualStudio/Core/Def/Snippets/IVsExpansionSessionExtensions.cs", + "sha": "11ee18b358882021cc7226aeb4bb0c71d58cdcc9", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/Core/Def/Snippets/IVsExpansionSessionExtensions.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/11ee18b358882021cc7226aeb4bb0c71d58cdcc9", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/Core/Def/Snippets/IVsExpansionSessionExtensions.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RenameTrackingDismisser.cs", + "path": "src/EditorFeatures/Core/Shared/Utilities/RenameTrackingDismisser.cs", + "sha": "0fcc8e048ceb2c325159d491e7511a64a2f32b77", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core/Shared/Utilities/RenameTrackingDismisser.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0fcc8e048ceb2c325159d491e7511a64a2f32b77", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core/Shared/Utilities/RenameTrackingDismisser.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "CompileTimeSolutionProvider.cs", + "path": "src/Features/Core/Portable/Workspace/CompileTimeSolutionProvider.cs", + "sha": "0f2c08f24bb6dc8773ea520ba3ac69ca520f1d4a", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Workspace/CompileTimeSolutionProvider.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0f2c08f24bb6dc8773ea520ba3ac69ca520f1d4a", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Workspace/CompileTimeSolutionProvider.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ChangeSignatureResult.cs", + "path": "src/Features/Core/Portable/ChangeSignature/ChangeSignatureResult.cs", + "sha": "0b021bef00236cefd1892a6ecf587ba1c5c10217", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/ChangeSignature/ChangeSignatureResult.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0b021bef00236cefd1892a6ecf587ba1c5c10217", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/ChangeSignature/ChangeSignatureResult.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "NavigateToSearcherTests.cs", + "path": "src/EditorFeatures/CSharpTest/NavigateTo/NavigateToSearcherTests.cs", + "sha": "09100345c3016b6643285e3f6d75a203ac6647c0", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToSearcherTests.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/09100345c3016b6643285e3f6d75a203ac6647c0", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToSearcherTests.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "MetadataImportOptions.cs", + "path": "src/Compilers/Core/Portable/MetadataReader/MetadataImportOptions.cs", + "sha": "07684bc6e52f02622eb0b93df7d257c1b04201d4", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/MetadataReader/MetadataImportOptions.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/07684bc6e52f02622eb0b93df7d257c1b04201d4", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/MetadataReader/MetadataImportOptions.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "LittleEndianReader.cs", + "path": "src/Compilers/Core/Portable/InternalUtilities/LittleEndianReader.cs", + "sha": "04067f4b430102aaa4a4d86732ae2518c695161b", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/InternalUtilities/LittleEndianReader.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/04067f4b430102aaa4a4d86732ae2518c695161b", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/InternalUtilities/LittleEndianReader.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "FixAllKind.cs", + "path": "src/Workspaces/Core/Portable/CodeFixesAndRefactorings/FixAllKind.cs", + "sha": "02542efa9e53cc62ef4d068c9a13d6c5bb14a882", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/FixAllKind.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/02542efa9e53cc62ef4d068c9a13d6c5bb14a882", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/FixAllKind.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "EnumMemberDeclarationSyntax.cs", + "path": "src/Compilers/CSharp/Portable/Syntax/EnumMemberDeclarationSyntax.cs", + "sha": "00254bd610961685fc13d9b680cb61136afda41b", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Syntax/EnumMemberDeclarationSyntax.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/00254bd610961685fc13d9b680cb61136afda41b", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Syntax/EnumMemberDeclarationSyntax.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "VsCommands.cs", + "path": "vsintegration/src/FSharp.ProjectSystem.Base/VsCommands.cs", + "sha": "07a6dcf4989c2f1dbf8f075478be96b567d2564e", + "url": "https://api.github.com/repositories/29048891/contents/vsintegration/src/FSharp.ProjectSystem.Base/VsCommands.cs?ref=256c7b240e063217a51b90d8886d0b789ceb066e", + "git_url": "https://api.github.com/repositories/29048891/git/blobs/07a6dcf4989c2f1dbf8f075478be96b567d2564e", + "html_url": "https://github.com/dotnet/fsharp/blob/256c7b240e063217a51b90d8886d0b789ceb066e/vsintegration/src/FSharp.ProjectSystem.Base/VsCommands.cs", + "repository": { + "id": 29048891, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA0ODg5MQ==", + "name": "fsharp", + "full_name": "dotnet/fsharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/fsharp", + "description": "The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/fsharp", + "forks_url": "https://api.github.com/repos/dotnet/fsharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/fsharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/fsharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/fsharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/fsharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/fsharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/fsharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/fsharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/fsharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/fsharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/fsharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/fsharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/fsharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/fsharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/fsharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/fsharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/fsharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/fsharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/fsharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/fsharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/fsharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/fsharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/fsharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/fsharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/fsharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/fsharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/fsharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/fsharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/fsharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/fsharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/fsharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/fsharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/fsharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/fsharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/fsharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/fsharp/deployments" + }, + "score": 1 + }, + { + "name": "ProjectCheckerUtil.cs", + "path": "src/Tools/BuildBoss/ProjectCheckerUtil.cs", + "sha": "077da78caa7a92183b22e2782972de1c41fbb0a3", + "url": "https://api.github.com/repositories/29078997/contents/src/Tools/BuildBoss/ProjectCheckerUtil.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/077da78caa7a92183b22e2782972de1c41fbb0a3", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Tools/BuildBoss/ProjectCheckerUtil.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "DoNotMixAttributesFromDifferentVersionsOfMEF.cs", + "path": "src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs", + "sha": "0bec9d26561e1a86b23d332c208c9225a51835d5", + "url": "https://api.github.com/repositories/36946704/contents/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/0bec9d26561e1a86b23d332c208c9225a51835d5", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "VirtualKey.cs", + "path": "src/VisualStudio/IntegrationTest/TestUtilities/Input/VirtualKey.cs", + "sha": "1485f5648e571a1d224ac2880d184b402e3d07b8", + "url": "https://api.github.com/repositories/29078997/contents/src/VisualStudio/IntegrationTest/TestUtilities/Input/VirtualKey.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1485f5648e571a1d224ac2880d184b402e3d07b8", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/VisualStudio/IntegrationTest/TestUtilities/Input/VirtualKey.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "PlotData.cs", + "path": "src/7. Harnessing the Crowd/PlotData.cs", + "sha": "148f80bf712258c1118fe7d80e876eb10c101c71", + "url": "https://api.github.com/repositories/173785725/contents/src/7.%20Harnessing%20the%20Crowd/PlotData.cs?ref=4a8f76a3605b28406670db0684f14d1f521f291d", + "git_url": "https://api.github.com/repositories/173785725/git/blobs/148f80bf712258c1118fe7d80e876eb10c101c71", + "html_url": "https://github.com/dotnet/mbmlbook/blob/4a8f76a3605b28406670db0684f14d1f521f291d/src/7.%20Harnessing%20the%20Crowd/PlotData.cs", + "repository": { + "id": 173785725, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzM3ODU3MjU=", + "name": "mbmlbook", + "full_name": "dotnet/mbmlbook", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/mbmlbook", + "description": "Sample code for the Model-Based Machine Learning book.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/mbmlbook", + "forks_url": "https://api.github.com/repos/dotnet/mbmlbook/forks", + "keys_url": "https://api.github.com/repos/dotnet/mbmlbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/mbmlbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/mbmlbook/teams", + "hooks_url": "https://api.github.com/repos/dotnet/mbmlbook/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/mbmlbook/events", + "assignees_url": "https://api.github.com/repos/dotnet/mbmlbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/mbmlbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/mbmlbook/tags", + "blobs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/mbmlbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/mbmlbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/mbmlbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/mbmlbook/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/mbmlbook/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/mbmlbook/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/mbmlbook/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/mbmlbook/subscription", + "commits_url": "https://api.github.com/repos/dotnet/mbmlbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/mbmlbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/mbmlbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/mbmlbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/mbmlbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/mbmlbook/merges", + "archive_url": "https://api.github.com/repos/dotnet/mbmlbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/mbmlbook/downloads", + "issues_url": "https://api.github.com/repos/dotnet/mbmlbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/mbmlbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/mbmlbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/mbmlbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/mbmlbook/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/mbmlbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/mbmlbook/deployments" + }, + "score": 1 + }, + { + "name": "ObjectGraphOptions.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/ObjectGraphOptions.cs", + "sha": "06481f1e755a2dcaddce4c9dc80de03314eff0a8", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/ObjectGraphOptions.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/06481f1e755a2dcaddce4c9dc80de03314eff0a8", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/ObjectGraphOptions.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "FindProcessHandler.cs", + "path": "tools/legacy-tools/ProjectTestRunner/Handlers/FindProcessHandler.cs", + "sha": "1197b28388fb7380eedb0c7567064eda0476ffd9", + "url": "https://api.github.com/repositories/62173688/contents/tools/legacy-tools/ProjectTestRunner/Handlers/FindProcessHandler.cs?ref=cf588429b4b251ae42c84ed966112e6c6d082448", + "git_url": "https://api.github.com/repositories/62173688/git/blobs/1197b28388fb7380eedb0c7567064eda0476ffd9", + "html_url": "https://github.com/dotnet/templating/blob/cf588429b4b251ae42c84ed966112e6c6d082448/tools/legacy-tools/ProjectTestRunner/Handlers/FindProcessHandler.cs", + "repository": { + "id": 62173688, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjE3MzY4OA==", + "name": "templating", + "full_name": "dotnet/templating", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templating", + "description": "This repo contains the Template Engine which is used by dotnet new", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templating", + "forks_url": "https://api.github.com/repos/dotnet/templating/forks", + "keys_url": "https://api.github.com/repos/dotnet/templating/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templating/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templating/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templating/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templating/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templating/events", + "assignees_url": "https://api.github.com/repos/dotnet/templating/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templating/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templating/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templating/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templating/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templating/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templating/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templating/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templating/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templating/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templating/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templating/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templating/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templating/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templating/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templating/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templating/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templating/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templating/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templating/merges", + "archive_url": "https://api.github.com/repos/dotnet/templating/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templating/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templating/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templating/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templating/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templating/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templating/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templating/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templating/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "dotnet-template-samples/content/16-string-value-transform/MyProject.Con/Program.cs", + "sha": "048e00e5f25833b2cb3061ef5c388221423dc42e", + "url": "https://api.github.com/repositories/62173688/contents/dotnet-template-samples/content/16-string-value-transform/MyProject.Con/Program.cs?ref=cf588429b4b251ae42c84ed966112e6c6d082448", + "git_url": "https://api.github.com/repositories/62173688/git/blobs/048e00e5f25833b2cb3061ef5c388221423dc42e", + "html_url": "https://github.com/dotnet/templating/blob/cf588429b4b251ae42c84ed966112e6c6d082448/dotnet-template-samples/content/16-string-value-transform/MyProject.Con/Program.cs", + "repository": { + "id": 62173688, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjE3MzY4OA==", + "name": "templating", + "full_name": "dotnet/templating", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templating", + "description": "This repo contains the Template Engine which is used by dotnet new", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templating", + "forks_url": "https://api.github.com/repos/dotnet/templating/forks", + "keys_url": "https://api.github.com/repos/dotnet/templating/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templating/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templating/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templating/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templating/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templating/events", + "assignees_url": "https://api.github.com/repos/dotnet/templating/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templating/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templating/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templating/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templating/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templating/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templating/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templating/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templating/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templating/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templating/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templating/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templating/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templating/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templating/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templating/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templating/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templating/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templating/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templating/merges", + "archive_url": "https://api.github.com/repos/dotnet/templating/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templating/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templating/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templating/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templating/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templating/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templating/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templating/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templating/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "src/Microsoft.HttpRepl/Properties/AssemblyInfo.cs", + "sha": "0e68898a90bfdb1e6c4dd62b793ed3c61ded35fa", + "url": "https://api.github.com/repositories/191466073/contents/src/Microsoft.HttpRepl/Properties/AssemblyInfo.cs?ref=1b0b7982bba2ef34778586f460a9db938cffe4ea", + "git_url": "https://api.github.com/repositories/191466073/git/blobs/0e68898a90bfdb1e6c4dd62b793ed3c61ded35fa", + "html_url": "https://github.com/dotnet/HttpRepl/blob/1b0b7982bba2ef34778586f460a9db938cffe4ea/src/Microsoft.HttpRepl/Properties/AssemblyInfo.cs", + "repository": { + "id": 191466073, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTE0NjYwNzM=", + "name": "HttpRepl", + "full_name": "dotnet/HttpRepl", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/HttpRepl", + "description": "The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that's supported everywhere .NET Core is supported and is used for making HTTP requests to test ASP.NET Core web APIs and view their results.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/HttpRepl", + "forks_url": "https://api.github.com/repos/dotnet/HttpRepl/forks", + "keys_url": "https://api.github.com/repos/dotnet/HttpRepl/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/HttpRepl/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/HttpRepl/teams", + "hooks_url": "https://api.github.com/repos/dotnet/HttpRepl/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/HttpRepl/events", + "assignees_url": "https://api.github.com/repos/dotnet/HttpRepl/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/HttpRepl/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/HttpRepl/tags", + "blobs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/HttpRepl/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/HttpRepl/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/HttpRepl/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/HttpRepl/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/HttpRepl/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/HttpRepl/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/HttpRepl/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/HttpRepl/subscription", + "commits_url": "https://api.github.com/repos/dotnet/HttpRepl/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/HttpRepl/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/HttpRepl/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/HttpRepl/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/HttpRepl/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/HttpRepl/merges", + "archive_url": "https://api.github.com/repos/dotnet/HttpRepl/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/HttpRepl/downloads", + "issues_url": "https://api.github.com/repos/dotnet/HttpRepl/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/HttpRepl/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/HttpRepl/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/HttpRepl/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/HttpRepl/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/HttpRepl/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/HttpRepl/deployments" + }, + "score": 1 + }, + { + "name": "CSharpClassSnippetProvider.cs", + "path": "src/Features/CSharp/Portable/Snippets/CSharpClassSnippetProvider.cs", + "sha": "14e87a8b61e2d941a9a4e294bf1fd211560661f8", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/CSharp/Portable/Snippets/CSharpClassSnippetProvider.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/14e87a8b61e2d941a9a4e294bf1fd211560661f8", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/CSharp/Portable/Snippets/CSharpClassSnippetProvider.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ICompileTimeSolutionProvider.cs", + "path": "src/Features/Core/Portable/Workspace/ICompileTimeSolutionProvider.cs", + "sha": "16702bbf87f9dded34d4c1e01aade78669c9a83f", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Workspace/ICompileTimeSolutionProvider.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/16702bbf87f9dded34d4c1e01aade78669c9a83f", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Workspace/ICompileTimeSolutionProvider.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SyncNamespaceTests_NoAction.cs", + "path": "src/Features/CSharpTest/SyncNamespace/SyncNamespaceTests_NoAction.cs", + "sha": "1667db5d356d6136f85b552640ff9733153abb8f", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/CSharpTest/SyncNamespace/SyncNamespaceTests_NoAction.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1667db5d356d6136f85b552640ff9733153abb8f", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/CSharpTest/SyncNamespace/SyncNamespaceTests_NoAction.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ExpressionListVariableBinder.cs", + "path": "src/Compilers/CSharp/Portable/Binder/ExpressionListVariableBinder.cs", + "sha": "0d6e275c6ec62a8159395b60e2a97980e6d95119", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Binder/ExpressionListVariableBinder.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0d6e275c6ec62a8159395b60e2a97980e6d95119", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Binder/ExpressionListVariableBinder.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "WorkspaceAnalyzerOptions.cs", + "path": "src/Workspaces/Core/Portable/Diagnostics/WorkspaceAnalyzerOptions.cs", + "sha": "0a0a8d96fbdfb53cb3c33fcb35475351cd676d9e", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Diagnostics/WorkspaceAnalyzerOptions.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/0a0a8d96fbdfb53cb3c33fcb35475351cd676d9e", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Diagnostics/WorkspaceAnalyzerOptions.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ObjectDisplayExtensions.cs", + "path": "src/Compilers/Core/Portable/SymbolDisplay/ObjectDisplayExtensions.cs", + "sha": "087bbfc08e9d1ad459b1a24c64f06aca19901b7a", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/SymbolDisplay/ObjectDisplayExtensions.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/087bbfc08e9d1ad459b1a24c64f06aca19901b7a", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/SymbolDisplay/ObjectDisplayExtensions.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "InlineRenameAdornment.cs", + "path": "src/EditorFeatures/Core.Wpf/InlineRename/UI/InlineRenameAdornment.cs", + "sha": "07b12ae79df0d34fcb50ce7edb7bf18188c3c474", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/Core.Wpf/InlineRename/UI/InlineRenameAdornment.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/07b12ae79df0d34fcb50ce7edb7bf18188c3c474", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/Core.Wpf/InlineRename/UI/InlineRenameAdornment.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/msbuild/src/Build/Definition/Project.cs", + "sha": "106b1ca08ee4c0b1f7e082a5b7bce953c41a8b9d", + "url": "https://api.github.com/repositories/550902717/contents/src/msbuild/src/Build/Definition/Project.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/106b1ca08ee4c0b1f7e082a5b7bce953c41a8b9d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/msbuild/src/Build/Definition/Project.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectUtilities.cs", + "path": "src/roslyn/src/VisualStudio/IntegrationTest/TestUtilities/Common/ProjectUtilities.cs", + "sha": "09c80fd0a06a47fb40da51c99632c3beced7fba5", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/IntegrationTest/TestUtilities/Common/ProjectUtilities.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/09c80fd0a06a47fb40da51c99632c3beced7fba5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/IntegrationTest/TestUtilities/Common/ProjectUtilities.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectFactoryFixture.cs", + "path": "src/aspnetcore/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs", + "sha": "0de11acd780e134b7d2d599691964cd6e1281317", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0de11acd780e134b7d2d599691964cd6e1281317", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/ProjectTemplates/Shared/ProjectFactoryFixture.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Microsoft.VisualStudio.Package.Project.cs", + "path": "src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/Microsoft.VisualStudio.Package.Project.cs", + "sha": "1062cdd69fdb3c03d53e802867d0688f6249e8d3", + "url": "https://api.github.com/repositories/550902717/contents/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/Microsoft.VisualStudio.Package.Project.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1062cdd69fdb3c03d53e802867d0688f6249e8d3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/Microsoft.VisualStudio.Package.Project.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Microsoft.CodeAnalysis.Workspaces.cs", + "path": "src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.7.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "sha": "0c95bd4f9ce698e969eef47fb1bd02fab1c701f0", + "url": "https://api.github.com/repositories/176748372/contents/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.7.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/0c95bd4f9ce698e969eef47fb1bd02fab1c701f0", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.7.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "IProjectEngineFactory.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/IProjectEngineFactory.cs", + "sha": "096aff11cb7a6e36ea397d4d0e95e3c30f132488", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/IProjectEngineFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/096aff11cb7a6e36ea397d4d0e95e3c30f132488", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.ProjectEngineHost/IProjectEngineFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ReflectionAccessAnalyzer.cs", + "path": "src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs", + "sha": "09abc1332083a6e5a3659ca32b2a19b8cb297f8e", + "url": "https://api.github.com/repositories/72579311/contents/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs?ref=ba65e934dcb8cfbc81a494e890927f9a5d31deac", + "git_url": "https://api.github.com/repositories/72579311/git/blobs/09abc1332083a6e5a3659ca32b2a19b8cb297f8e", + "html_url": "https://github.com/dotnet/linker/blob/ba65e934dcb8cfbc81a494e890927f9a5d31deac/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs", + "repository": { + "id": 72579311, + "node_id": "MDEwOlJlcG9zaXRvcnk3MjU3OTMxMQ==", + "name": "linker", + "full_name": "dotnet/linker", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/linker", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/linker", + "forks_url": "https://api.github.com/repos/dotnet/linker/forks", + "keys_url": "https://api.github.com/repos/dotnet/linker/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/linker/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/linker/teams", + "hooks_url": "https://api.github.com/repos/dotnet/linker/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/linker/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/linker/events", + "assignees_url": "https://api.github.com/repos/dotnet/linker/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/linker/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/linker/tags", + "blobs_url": "https://api.github.com/repos/dotnet/linker/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/linker/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/linker/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/linker/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/linker/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/linker/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/linker/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/linker/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/linker/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/linker/subscription", + "commits_url": "https://api.github.com/repos/dotnet/linker/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/linker/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/linker/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/linker/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/linker/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/linker/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/linker/merges", + "archive_url": "https://api.github.com/repos/dotnet/linker/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/linker/downloads", + "issues_url": "https://api.github.com/repos/dotnet/linker/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/linker/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/linker/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/linker/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/linker/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/linker/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/linker/deployments" + }, + "score": 1 + }, + { + "name": "ReflectionAccessAnalyzer.cs", + "path": "src/runtime/src/tools/illink/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs", + "sha": "09abc1332083a6e5a3659ca32b2a19b8cb297f8e", + "url": "https://api.github.com/repositories/550902717/contents/src/runtime/src/tools/illink/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/09abc1332083a6e5a3659ca32b2a19b8cb297f8e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/runtime/src/tools/illink/src/ILLink.RoslynAnalyzer/TrimAnalysis/ReflectionAccessAnalyzer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ScriptSourceResolver.cs", + "path": "src/roslyn/src/Scripting/Core/ScriptSourceResolver.cs", + "sha": "000f1537401fa8652189a786bf4c2d47305eff37", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Scripting/Core/ScriptSourceResolver.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/000f1537401fa8652189a786bf4c2d47305eff37", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Scripting/Core/ScriptSourceResolver.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PiiValue.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Log/PiiValue.cs", + "sha": "0bbac7b214613600eaa41bfc88deb290f46ed7cb", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Log/PiiValue.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0bbac7b214613600eaa41bfc88deb290f46ed7cb", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Log/PiiValue.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CategorizedAnalyzerConfigOptions.cs", + "path": "src/roslyn-analyzers/src/Utilities/Compiler/Options/CategorizedAnalyzerConfigOptions.cs", + "sha": "0566aaf2814fc309720d2cb8f318eaf664ca31b0", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/Compiler/Options/CategorizedAnalyzerConfigOptions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0566aaf2814fc309720d2cb8f318eaf664ca31b0", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/Compiler/Options/CategorizedAnalyzerConfigOptions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Tracing.cs", + "path": "src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/Tracing.cs", + "sha": "0c9c6c295f22b7ed9ba35c109b0df70e4435c4ef", + "url": "https://api.github.com/repositories/550902717/contents/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/Tracing.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0c9c6c295f22b7ed9ba35c109b0df70e4435c4ef", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/Tracing.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ICscHostObject5.cs", + "path": "src/roslyn/src/Compilers/Core/MSBuildTask/ICscHostObject5.cs", + "sha": "12a1fadf057d6c76da4daa37b36775f2fb3ed119", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/MSBuildTask/ICscHostObject5.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/12a1fadf057d6c76da4daa37b36775f2fb3ed119", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/MSBuildTask/ICscHostObject5.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SmartIndent.cs", + "path": "src/roslyn/src/EditorFeatures/Core/SmartIndent/SmartIndent.cs", + "sha": "1114993551bf92ac0c79549cbf85bcebb88b9dca", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core/SmartIndent/SmartIndent.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1114993551bf92ac0c79549cbf85bcebb88b9dca", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core/SmartIndent/SmartIndent.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpDoNotMarkServicedComponentsWithWebMethod.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.NetFramework.Analyzers/CSharpDoNotMarkServicedComponentsWithWebMethod.cs", + "sha": "08fcea9f4b356a59d2fe36ef60ee581dbd887fd4", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.NetFramework.Analyzers/CSharpDoNotMarkServicedComponentsWithWebMethod.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/08fcea9f4b356a59d2fe36ef60ee581dbd887fd4", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.NetFramework.Analyzers/CSharpDoNotMarkServicedComponentsWithWebMethod.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ConsoleIO.cs", + "path": "src/roslyn/src/Scripting/Core/Hosting/CommandLine/ConsoleIO.cs", + "sha": "09a00e33e02c00ea52dcfa70d86a3cf4b85265ab", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Scripting/Core/Hosting/CommandLine/ConsoleIO.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/09a00e33e02c00ea52dcfa70d86a3cf4b85265ab", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Scripting/Core/Hosting/CommandLine/ConsoleIO.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "BuildToolId.cs", + "path": "src/roslyn/src/Features/Core/Portable/Diagnostics/BuildToolId.cs", + "sha": "01eecd26cb0999c40bc518494d2428da4adea237", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Diagnostics/BuildToolId.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/01eecd26cb0999c40bc518494d2428da4adea237", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Diagnostics/BuildToolId.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "VisualBasicPerformanceCodeFixVerifier`2.cs", + "path": "src/roslyn-analyzers/src/PerformanceSensitiveAnalyzers/UnitTests/VisualBasicPerformanceCodeFixVerifier`2.cs", + "sha": "10759e8b881c1e2c0a016f9a10fa2ea8a0d126a6", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/PerformanceSensitiveAnalyzers/UnitTests/VisualBasicPerformanceCodeFixVerifier%602.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/10759e8b881c1e2c0a016f9a10fa2ea8a0d126a6", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/PerformanceSensitiveAnalyzers/UnitTests/VisualBasicPerformanceCodeFixVerifier%602.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CompletionTags.cs", + "path": "src/roslyn/src/Features/Core/Portable/Completion/CompletionTags.cs", + "sha": "028edb5798780d6deb7a63f708c9d833561e29a8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Completion/CompletionTags.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/028edb5798780d6deb7a63f708c9d833561e29a8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Completion/CompletionTags.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ParameterFlags.cs", + "path": "src/roslyn/src/VisualStudio/CSharp/Impl/CodeModel/ParameterFlags.cs", + "sha": "047dde037fb7554941e0d5c214e4cf22524af945", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/CSharp/Impl/CodeModel/ParameterFlags.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/047dde037fb7554941e0d5c214e4cf22524af945", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/CSharp/Impl/CodeModel/ParameterFlags.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TypeParameterKind.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Symbols/TypeParameterKind.cs", + "sha": "0293b5364ab7768bf38c15f07895bcaccb6539b2", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Symbols/TypeParameterKind.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0293b5364ab7768bf38c15f07895bcaccb6539b2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Symbols/TypeParameterKind.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "VisualStudioFrameworkAssemblyPathResolverFactory.cs", + "path": "src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioFrameworkAssemblyPathResolverFactory.cs", + "sha": "15cd5608d6441f32b0c632422f39bd37059840b9", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioFrameworkAssemblyPathResolverFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/15cd5608d6441f32b0c632422f39bd37059840b9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioFrameworkAssemblyPathResolverFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProvideDeserializationMethodsForOptionalFields.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs", + "sha": "1447bcc6731af3c19d4bcf0ed3e3386d061f3e5e", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1447bcc6731af3c19d4bcf0ed3e3386d061f3e5e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/ProvideDeserializationMethodsForOptionalFields.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ICodeModelService.cs", + "path": "src/roslyn/src/VisualStudio/Core/Impl/CodeModel/ICodeModelService.cs", + "sha": "08333957bdcc3b046797620a66d9a96cfad7802d", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Impl/CodeModel/ICodeModelService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/08333957bdcc3b046797620a66d9a96cfad7802d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Impl/CodeModel/ICodeModelService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProcessUtil.cs", + "path": "src/roslyn/src/Tools/Source/RunTests/ProcessUtil.cs", + "sha": "04e9d02d4992c2dc16366863bbda3071e3664521", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/Source/RunTests/ProcessUtil.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/04e9d02d4992c2dc16366863bbda3071e3664521", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/Source/RunTests/ProcessUtil.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PreviewWarningTagDefinition.cs", + "path": "src/roslyn/src/EditorFeatures/Core.Wpf/PreviewWarningTagDefinition.cs", + "sha": "14825128675c2f4f30d5f6a15025ade58eaff946", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core.Wpf/PreviewWarningTagDefinition.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/14825128675c2f4f30d5f6a15025ade58eaff946", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core.Wpf/PreviewWarningTagDefinition.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ParenthesesTreeWriter.cs", + "path": "src/roslyn/src/Features/Core/Portable/RQName/ParenthesesTreeWriter.cs", + "sha": "0dab983676e28fb5d637a461d62197b8e743b5ae", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/RQName/ParenthesesTreeWriter.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0dab983676e28fb5d637a461d62197b8e743b5ae", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/RQName/ParenthesesTreeWriter.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "LineSpan.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Shared/Extensions/LineSpan.cs", + "sha": "04f2117e39e8581d45df423b18abafaf5f3598fa", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Shared/Extensions/LineSpan.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/04f2117e39e8581d45df423b18abafaf5f3598fa", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Shared/Extensions/LineSpan.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "MiscellaneousFilesWorkspace.cs", + "path": "src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MiscellaneousFilesWorkspace.cs", + "sha": "0279d545117b7d8b0bf65e1fc9419da767d4d378", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MiscellaneousFilesWorkspace.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0279d545117b7d8b0bf65e1fc9419da767d4d378", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MiscellaneousFilesWorkspace.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectSchemaDefinitions.cs", + "path": "src/msbuild/src/Framework/XamlTypes/ProjectSchemaDefinitions.cs", + "sha": "0a261bceaba2d84e9d2e6839c3b597f7aa8a5096", + "url": "https://api.github.com/repositories/550902717/contents/src/msbuild/src/Framework/XamlTypes/ProjectSchemaDefinitions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0a261bceaba2d84e9d2e6839c3b597f7aa8a5096", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/msbuild/src/Framework/XamlTypes/ProjectSchemaDefinitions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/4-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/4-codeSearch.json new file mode 100644 index 00000000000..982205d61db --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/4-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=5" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "MovePInvokesToNativeMethodsClass.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs", + "sha": "071a131df290de561f3b71e43e9b99ae69be6c63", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/071a131df290de561f3b71e43e9b99ae69be6c63", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/MovePInvokesToNativeMethodsClass.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CustomModifiersTuple.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Symbols/CustomModifiersTuple.cs", + "sha": "033731b926c2f64120c8c9c3ff7cdfa0edfa65d8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Symbols/CustomModifiersTuple.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/033731b926c2f64120c8c9c3ff7cdfa0edfa65d8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Symbols/CustomModifiersTuple.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ILocalSymbolInternal.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Symbols/ILocalSymbolInternal.cs", + "sha": "00df8c07c476ead0f2bb82cb7240dde8153fc85b", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Symbols/ILocalSymbolInternal.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/00df8c07c476ead0f2bb82cb7240dde8153fc85b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Symbols/ILocalSymbolInternal.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TrackDocumentsHelper.cs", + "path": "src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/TrackDocumentsHelper.cs", + "sha": "0b713487be5b217f8e538b9e9f96197d9a691896", + "url": "https://api.github.com/repositories/550902717/contents/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/TrackDocumentsHelper.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0b713487be5b217f8e538b9e9f96197d9a691896", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/TrackDocumentsHelper.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "VisualStudioMetadataReferenceProviderServiceFactory.cs", + "path": "src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioMetadataReferenceProviderServiceFactory.cs", + "sha": "0e0f9fbb692b1d86b756b3e8fb52a7fa8ec71429", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioMetadataReferenceProviderServiceFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0e0f9fbb692b1d86b756b3e8fb52a7fa8ec71429", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Def/ProjectSystem/MetadataReferences/VisualStudioMetadataReferenceProviderServiceFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ScriptTaskExtensions.cs", + "path": "src/roslyn/src/Scripting/CoreTestUtilities/ScriptTaskExtensions.cs", + "sha": "03d2ddec6257937ce836fa661365a7e80ff84802", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Scripting/CoreTestUtilities/ScriptTaskExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/03d2ddec6257937ce836fa661365a7e80ff84802", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Scripting/CoreTestUtilities/ScriptTaskExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/templating/dotnet-template-samples/content/02-add-parameters/MyProject.Con/Program.cs", + "sha": "160483fd90cdcc04f658eb2bdd61d248f0663137", + "url": "https://api.github.com/repositories/550902717/contents/src/templating/dotnet-template-samples/content/02-add-parameters/MyProject.Con/Program.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/160483fd90cdcc04f658eb2bdd61d248f0663137", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/templating/dotnet-template-samples/content/02-add-parameters/MyProject.Con/Program.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpAvoidMultipleEnumerationsAnalyzer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidMultipleEnumerationsAnalyzer.cs", + "sha": "0772bc01e6ed05c0960babe639c45dcd94c861c9", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidMultipleEnumerationsAnalyzer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0772bc01e6ed05c0960babe639c45dcd94c861c9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/QualityGuidelines/CSharpAvoidMultipleEnumerationsAnalyzer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IOUtilities.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Shared/Utilities/IOUtilities.cs", + "sha": "1536b0f6ce9f5c258a04d84e5979ad11f54e6a77", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Shared/Utilities/IOUtilities.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1536b0f6ce9f5c258a04d84e5979ad11f54e6a77", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Shared/Utilities/IOUtilities.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineHelpers.cs", + "path": "src/roslyn/src/Scripting/Core/Hosting/CommandLine/CommandLineHelpers.cs", + "sha": "0df46a07f8996123c0a5d4bd51c53866fb7f7fbb", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Scripting/Core/Hosting/CommandLine/CommandLineHelpers.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0df46a07f8996123c0a5d4bd51c53866fb7f7fbb", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Scripting/Core/Hosting/CommandLine/CommandLineHelpers.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DefaultSourceTextUndoService.cs", + "path": "src/roslyn/src/EditorFeatures/Core/Undo/DefaultSourceTextUndoService.cs", + "sha": "08ee35000c9df5c3c2fb357e23d2141af5337889", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core/Undo/DefaultSourceTextUndoService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/08ee35000c9df5c3c2fb357e23d2141af5337889", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core/Undo/DefaultSourceTextUndoService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "FixedStatementSyntax.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Syntax/FixedStatementSyntax.cs", + "sha": "0100322ba1fb785c2ee61a816c639eaa73b7d848", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Syntax/FixedStatementSyntax.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0100322ba1fb785c2ee61a816c639eaa73b7d848", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Syntax/FixedStatementSyntax.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DummySymReaderMetadataProvider.cs", + "path": "src/symreader/src/TestUtilities/DummySymReaderMetadataProvider.cs", + "sha": "0784b789419fb7adb94d8f0af7204ab32158c59e", + "url": "https://api.github.com/repositories/550902717/contents/src/symreader/src/TestUtilities/DummySymReaderMetadataProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0784b789419fb7adb94d8f0af7204ab32158c59e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/symreader/src/TestUtilities/DummySymReaderMetadataProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DiscardSymbol.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Symbols/DiscardSymbol.cs", + "sha": "08da8b9a72f181d91a5380a111fb254a0fd5d01a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Symbols/DiscardSymbol.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/08da8b9a72f181d91a5380a111fb254a0fd5d01a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Symbols/DiscardSymbol.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "NETSdkWarning.cs", + "path": "src/sdk/src/Tasks/Common/NETSdkWarning.cs", + "sha": "1140625c2da910bae94277b1e05b3028225d10f2", + "url": "https://api.github.com/repositories/550902717/contents/src/sdk/src/Tasks/Common/NETSdkWarning.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1140625c2da910bae94277b1e05b3028225d10f2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/sdk/src/Tasks/Common/NETSdkWarning.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PackageSourceHelper.cs", + "path": "src/roslyn/src/Features/Core/Portable/AddImport/PackageSourceHelper.cs", + "sha": "0da4c909251066f73843362aecd3ec4987779f01", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/AddImport/PackageSourceHelper.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0da4c909251066f73843362aecd3ec4987779f01", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/AddImport/PackageSourceHelper.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RQTypeVariableType.cs", + "path": "src/roslyn/src/Features/Core/Portable/RQName/Nodes/RQTypeVariableType.cs", + "sha": "08db7688b3a728a3bdf070401dc297274aa0514f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/RQName/Nodes/RQTypeVariableType.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/08db7688b3a728a3bdf070401dc297274aa0514f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/RQName/Nodes/RQTypeVariableType.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SimpleSyntaxReference.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Syntax/SimpleSyntaxReference.cs", + "sha": "05012aa79d8b07c7b9c61725345cb0a1004e3cb3", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Syntax/SimpleSyntaxReference.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/05012aa79d8b07c7b9c61725345cb0a1004e3cb3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Syntax/SimpleSyntaxReference.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Binder.OverflowChecks.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Binder/Binder.OverflowChecks.cs", + "sha": "0374b76808bb102db48f479cd06e537424334b58", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Binder/Binder.OverflowChecks.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0374b76808bb102db48f479cd06e537424334b58", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Binder/Binder.OverflowChecks.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TestErrorReportingService.cs", + "path": "src/roslyn/src/Workspaces/CoreTestUtilities/TestErrorReportingService.cs", + "sha": "0238e010c68854aa2a0d69622fa3cea822d421b4", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/CoreTestUtilities/TestErrorReportingService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0238e010c68854aa2a0d69622fa3cea822d421b4", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/CoreTestUtilities/TestErrorReportingService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SelectionResult.cs", + "path": "src/roslyn/src/Features/Core/Portable/ExtractMethod/SelectionResult.cs", + "sha": "0d922679c26d6ac3f4fed67fc48ec347aebf1d0f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/ExtractMethod/SelectionResult.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0d922679c26d6ac3f4fed67fc48ec347aebf1d0f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/ExtractMethod/SelectionResult.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SimpleLocalScopeBinder.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Binder/SimpleLocalScopeBinder.cs", + "sha": "119ac348b2ae978a27e73ae89dc3bed4511bd296", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Binder/SimpleLocalScopeBinder.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/119ac348b2ae978a27e73ae89dc3bed4511bd296", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Binder/SimpleLocalScopeBinder.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ILanguageServerFactory.cs", + "path": "src/roslyn/src/Features/LanguageServer/Protocol/ILanguageServerFactory.cs", + "sha": "0eb5a5e79185f94e19b6334d2cd37981f20b3ac2", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/LanguageServer/Protocol/ILanguageServerFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0eb5a5e79185f94e19b6334d2cd37981f20b3ac2", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/LanguageServer/Protocol/ILanguageServerFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "LSPCompletionProvider.cs", + "path": "src/roslyn/src/Features/Core/Portable/Completion/LSPCompletionProvider.cs", + "sha": "0d59b4f454baee9b23dd066c24e24a9d5314ee3a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Completion/LSPCompletionProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0d59b4f454baee9b23dd066c24e24a9d5314ee3a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Completion/LSPCompletionProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SpanUtilities.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/InternalUtilities/SpanUtilities.cs", + "sha": "0c5a1641d1090d9959ccf31958c849803c52ab47", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/SpanUtilities.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0c5a1641d1090d9959ccf31958c849803c52ab47", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/SpanUtilities.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "VisualBasicCompilerServer.cs", + "path": "src/roslyn/src/Compilers/Server/VBCSCompiler/VisualBasicCompilerServer.cs", + "sha": "0be389d52647731fc6816ba032f32cea97861894", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Server/VBCSCompiler/VisualBasicCompilerServer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0be389d52647731fc6816ba032f32cea97861894", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Server/VBCSCompiler/VisualBasicCompilerServer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Extensions.cs", + "path": "src/roslyn/src/EditorFeatures/TestUtilities/EditAndContinue/Extensions.cs", + "sha": "074fa222242f2d2e3e674cf62668ecf1987ee198", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/TestUtilities/EditAndContinue/Extensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/074fa222242f2d2e3e674cf62668ecf1987ee198", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/TestUtilities/EditAndContinue/Extensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RemoteServiceConnection.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Remote/RemoteServiceConnection.cs", + "sha": "01b3a00404003f2226c30673bdbfb3b9c5e889b0", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Remote/RemoteServiceConnection.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/01b3a00404003f2226c30673bdbfb3b9c5e889b0", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Remote/RemoteServiceConnection.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IParameterKind.cs", + "path": "src/roslyn/src/VisualStudio/Core/Impl/CodeModel/Interop/IParameterKind.cs", + "sha": "00622e3ae4b11ddac8b93865646c593f49f3b5b1", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Impl/CodeModel/Interop/IParameterKind.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/00622e3ae4b11ddac8b93865646c593f49f3b5b1", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Impl/CodeModel/Interop/IParameterKind.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "StatisticLogAggregator.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs", + "sha": "05e72d59f51e32dbc8a51241aff7296173294da4", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/05e72d59f51e32dbc8a51241aff7296173294da4", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "HighlightingService.cs", + "path": "src/roslyn/src/Features/Core/Portable/Highlighting/HighlightingService.cs", + "sha": "07e3611d98bea8d89b45cbe27f05df7cb2235c69", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Highlighting/HighlightingService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/07e3611d98bea8d89b45cbe27f05df7cb2235c69", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Highlighting/HighlightingService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TypeCompareKind.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Symbols/TypeCompareKind.cs", + "sha": "091608c1322594716568bc849f46833f7861d708", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Symbols/TypeCompareKind.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/091608c1322594716568bc849f46833f7861d708", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Symbols/TypeCompareKind.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs", + "sha": "0da44b60048f04f9744499a754aa4bb5e7e22074", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0da44b60048f04f9744499a754aa4bb5e7e22074", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.NetCore.Analyzers/InteropServices/MarkBooleanPInvokeArgumentsWithMarshalAsTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RemoteProjectInfoProvider.cs", + "path": "src/roslyn/src/VisualStudio/LiveShare/Impl/Client/Projects/RemoteProjectInfoProvider.cs", + "sha": "06b5c97eeac6f6df59092bc52dbc917449536c21", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/LiveShare/Impl/Client/Projects/RemoteProjectInfoProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/06b5c97eeac6f6df59092bc52dbc917449536c21", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/LiveShare/Impl/Client/Projects/RemoteProjectInfoProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "MockEngine.cs", + "path": "src/roslyn/src/Compilers/Core/MSBuildTaskTests/TestUtilities/MockEngine.cs", + "sha": "126b6f4ddb59b9fb61a783d32451b76e18a27269", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/MSBuildTaskTests/TestUtilities/MockEngine.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/126b6f4ddb59b9fb61a783d32451b76e18a27269", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/MSBuildTaskTests/TestUtilities/MockEngine.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IRazorDocumentServiceProvider.cs", + "path": "src/roslyn/src/Tools/ExternalAccess/Razor/IRazorDocumentServiceProvider.cs", + "sha": "101b26d992bd23478ec6c972e51344baa99e660c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/ExternalAccess/Razor/IRazorDocumentServiceProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/101b26d992bd23478ec6c972e51344baa99e660c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/ExternalAccess/Razor/IRazorDocumentServiceProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineReference.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/CommandLine/CommandLineReference.cs", + "sha": "0f12df2d29f9b21eb604cbd660547156ec8470ef", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/CommandLine/CommandLineReference.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0f12df2d29f9b21eb604cbd660547156ec8470ef", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/CommandLine/CommandLineReference.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SerializerService.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Serialization/SerializerService.cs", + "sha": "096beeb1e06602a7a78096222afa077425d7ceae", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Serialization/SerializerService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/096beeb1e06602a7a78096222afa077425d7ceae", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Serialization/SerializerService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpUsePropertiesWhereAppropriate.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpUsePropertiesWhereAppropriate.Fixer.cs", + "sha": "00b8ddeabefd622d3525076783d425bab13697c5", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpUsePropertiesWhereAppropriate.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/00b8ddeabefd622d3525076783d425bab13697c5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/CSharpUsePropertiesWhereAppropriate.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ScriptMetadataResolver.cs", + "path": "src/roslyn/src/Scripting/Core/ScriptMetadataResolver.cs", + "sha": "15313da651708b943406661be1814023d3f879f3", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Scripting/Core/ScriptMetadataResolver.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/15313da651708b943406661be1814023d3f879f3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Scripting/Core/ScriptMetadataResolver.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IInlineRenameUndoManager.cs", + "path": "src/roslyn/src/EditorFeatures/Core/InlineRename/IInlineRenameUndoManager.cs", + "sha": "1472d177994595902470adb7f3df6b9c92a2db26", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core/InlineRename/IInlineRenameUndoManager.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1472d177994595902470adb7f3df6b9c92a2db26", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core/InlineRename/IInlineRenameUndoManager.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SyntaxList.WithTwoChildren.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Syntax/SyntaxList.WithTwoChildren.cs", + "sha": "129a10924a0f7d1692dd65d83b385dffa1095055", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Syntax/SyntaxList.WithTwoChildren.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/129a10924a0f7d1692dd65d83b385dffa1095055", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Syntax/SyntaxList.WithTwoChildren.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ComputingTreeViewItem.cs", + "path": "src/roslyn/src/VisualStudio/Core/Def/ValueTracking/ComputingTreeViewItem.cs", + "sha": "0fcf993b01616789f9522476a2f0493174db6311", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Def/ValueTracking/ComputingTreeViewItem.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0fcf993b01616789f9522476a2f0493174db6311", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Def/ValueTracking/ComputingTreeViewItem.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IRemoteAssetSynchronizationService.cs", + "path": "src/roslyn/src/Workspaces/Remote/Core/IRemoteAssetSynchronizationService.cs", + "sha": "0b3c0f3a0bc77aa8277e43a83398ecdb784178ec", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Remote/Core/IRemoteAssetSynchronizationService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0b3c0f3a0bc77aa8277e43a83398ecdb784178ec", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Remote/Core/IRemoteAssetSynchronizationService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DocumentNavigationOperation.cs", + "path": "src/roslyn/src/Features/Core/Portable/Common/DocumentNavigationOperation.cs", + "sha": "005121ed3c22e3b5d89cc4d5849d60c70248a2ef", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Common/DocumentNavigationOperation.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/005121ed3c22e3b5d89cc4d5849d60c70248a2ef", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Common/DocumentNavigationOperation.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AliasSymbol.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Symbols/PublicModel/AliasSymbol.cs", + "sha": "0035d4b2a3e61ecbce84d26c3716d118270394b0", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Symbols/PublicModel/AliasSymbol.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0035d4b2a3e61ecbce84d26c3716d118270394b0", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Symbols/PublicModel/AliasSymbol.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CodeStylePage.cs", + "path": "src/roslyn/src/VisualStudio/CSharp/Impl/Options/Formatting/CodeStylePage.cs", + "sha": "02b5e27239acc8a2636826a82ea93de1f274f093", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/CSharp/Impl/Options/Formatting/CodeStylePage.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/02b5e27239acc8a2636826a82ea93de1f274f093", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/CSharp/Impl/Options/Formatting/CodeStylePage.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ISymUnmanagedScope.cs", + "path": "src/symreader/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope.cs", + "sha": "085f90af8c1971d5697b3972167512da931374fa", + "url": "https://api.github.com/repositories/550902717/contents/src/symreader/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/085f90af8c1971d5697b3972167512da931374fa", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/symreader/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "UsingStatementSyntax.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Syntax/UsingStatementSyntax.cs", + "sha": "01d81789aef5dba20fe68b3338c3b9fcc9c41713", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Syntax/UsingStatementSyntax.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/01d81789aef5dba20fe68b3338c3b9fcc9c41713", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Syntax/UsingStatementSyntax.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "JsonModeLsifJsonWriter.cs", + "path": "src/roslyn/src/Features/Lsif/Generator/Writing/JsonModeLsifJsonWriter.cs", + "sha": "08fc997545a038cb09d4bbd3f4608d00ce4a5837", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Lsif/Generator/Writing/JsonModeLsifJsonWriter.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/08fc997545a038cb09d4bbd3f4608d00ce4a5837", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Lsif/Generator/Writing/JsonModeLsifJsonWriter.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PreviewPaneService.cs", + "path": "src/roslyn/src/EditorFeatures/Core.Cocoa/Preview/PreviewPaneService.cs", + "sha": "09a38b752f6cf4aa2b95506b21e6f511fd8dc51b", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core.Cocoa/Preview/PreviewPaneService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/09a38b752f6cf4aa2b95506b21e6f511fd8dc51b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core.Cocoa/Preview/PreviewPaneService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SolutionLogger.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs", + "sha": "161afc1205301594f36a544d31ce2662ef05c93c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/161afc1205301594f36a544d31ce2662ef05c93c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ISymbolMappingService.cs", + "path": "src/roslyn/src/Features/Core/Portable/SymbolMapping/ISymbolMappingService.cs", + "sha": "13d443a5ed8aabcdbdace22784db75789252f016", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/SymbolMapping/ISymbolMappingService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/13d443a5ed8aabcdbdace22784db75789252f016", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/SymbolMapping/ISymbolMappingService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SimplifyThisOrMeTests.cs", + "path": "src/roslyn/src/Features/CSharpTest/SimplifyThisOrMe/SimplifyThisOrMeTests.cs", + "sha": "115b0ab1823118dbdad40d602b1fdb925a966619", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/CSharpTest/SimplifyThisOrMe/SimplifyThisOrMeTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/115b0ab1823118dbdad40d602b1fdb925a966619", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/CSharpTest/SimplifyThisOrMe/SimplifyThisOrMeTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ObjectBinderSnapshot.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs", + "sha": "0de23f1fc21900f7f018b031ae735c92f60a0835", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0de23f1fc21900f7f018b031ae735c92f60a0835", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DiagnosticInfoWithSymbols.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Errors/DiagnosticInfoWithSymbols.cs", + "sha": "0b18628e469b47ec801d3a28d4f82725c80b1126", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Errors/DiagnosticInfoWithSymbols.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0b18628e469b47ec801d3a28d4f82725c80b1126", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Errors/DiagnosticInfoWithSymbols.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "FormattingRangeHelperTests.cs", + "path": "src/roslyn/src/Workspaces/CoreTest/UtilityTest/FormattingRangeHelperTests.cs", + "sha": "0a42b5e98df10d23a35c571deac1ad72feae92d3", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/CoreTest/UtilityTest/FormattingRangeHelperTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0a42b5e98df10d23a35c571deac1ad72feae92d3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/CoreTest/UtilityTest/FormattingRangeHelperTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "EndRegionFormattingRule.cs", + "path": "src/roslyn/src/VisualStudio/CSharp/Impl/CodeModel/EndRegionFormattingRule.cs", + "sha": "07a3f3dd02c44e2bd4a3a5f273aa2c46362a32ed", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/CSharp/Impl/CodeModel/EndRegionFormattingRule.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/07a3f3dd02c44e2bd4a3a5f273aa2c46362a32ed", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/CSharp/Impl/CodeModel/EndRegionFormattingRule.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AbstractTypeParameterMap.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Symbols/AbstractTypeParameterMap.cs", + "sha": "02db5b18b20fe71495ba702d1086ce069dac438f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Symbols/AbstractTypeParameterMap.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/02db5b18b20fe71495ba702d1086ce069dac438f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Symbols/AbstractTypeParameterMap.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SpanChange.cs", + "path": "src/roslyn/src/VisualStudio/Core/Def/Preview/SpanChange.cs", + "sha": "047711eca7289561795565590db582bacea04914", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Def/Preview/SpanChange.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/047711eca7289561795565590db582bacea04914", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Def/Preview/SpanChange.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CodeAnalysisMetricData.NamedTypeMetricData.cs", + "path": "src/roslyn-analyzers/src/Utilities/Compiler/CodeMetrics/CodeAnalysisMetricData.NamedTypeMetricData.cs", + "sha": "1626d41a1252c000066dbfd460d105f8126eac64", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/Compiler/CodeMetrics/CodeAnalysisMetricData.NamedTypeMetricData.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1626d41a1252c000066dbfd460d105f8126eac64", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/Compiler/CodeMetrics/CodeAnalysisMetricData.NamedTypeMetricData.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "INamespaceSymbol.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Symbols/INamespaceSymbol.cs", + "sha": "0b6065c11776a1d58d6cf7fa34a631b6a46f71fe", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Symbols/INamespaceSymbol.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0b6065c11776a1d58d6cf7fa34a631b6a46f71fe", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Symbols/INamespaceSymbol.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ValueTrackedItem.cs", + "path": "src/roslyn/src/Features/Core/Portable/ValueTracking/ValueTrackedItem.cs", + "sha": "1454ff280a11bceb36740e980d9e0bc3f42f712d", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/ValueTracking/ValueTrackedItem.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1454ff280a11bceb36740e980d9e0bc3f42f712d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/ValueTracking/ValueTrackedItem.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DotNetSdkTests.cs", + "path": "src/roslyn/src/Compilers/Core/MSBuildTaskTests/DotNetSdkTests.cs", + "sha": "0aa0d9e8f7f98e2a108a7976bbcbe0a9e2f6665e", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/MSBuildTaskTests/DotNetSdkTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0aa0d9e8f7f98e2a108a7976bbcbe0a9e2f6665e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/MSBuildTaskTests/DotNetSdkTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "MatchTests.cs", + "path": "src/roslyn/src/Workspaces/CoreTest/Differencing/MatchTests.cs", + "sha": "15c0ecc3a90899cede3e9fd04ca5068bd7a94dbd", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/CoreTest/Differencing/MatchTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/15c0ecc3a90899cede3e9fd04ca5068bd7a94dbd", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/CoreTest/Differencing/MatchTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpBracePairsService.cs", + "path": "src/roslyn/src/Features/CSharp/Portable/BracePairs/CSharpBracePairsService.cs", + "sha": "159e4a4dcd03184480cf2508e4cdffdfe1992355", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/CSharp/Portable/BracePairs/CSharpBracePairsService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/159e4a4dcd03184480cf2508e4cdffdfe1992355", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/CSharp/Portable/BracePairs/CSharpBracePairsService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SignatureHelpViewOptionsStorage.cs", + "path": "src/roslyn/src/EditorFeatures/Core/Options/SignatureHelpViewOptionsStorage.cs", + "sha": "0cd1e25a954013e89af427f95d2ed484927547a8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core/Options/SignatureHelpViewOptionsStorage.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0cd1e25a954013e89af427f95d2ed484927547a8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core/Options/SignatureHelpViewOptionsStorage.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CommonSyntaxNodeRemover.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Syntax/CommonSyntaxNodeRemover.cs", + "sha": "13de44c1d7758aedc89bf06d9af5d31fa7f77817", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Syntax/CommonSyntaxNodeRemover.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/13de44c1d7758aedc89bf06d9af5d31fa7f77817", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Syntax/CommonSyntaxNodeRemover.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SemanticFacts.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Binder/Semantics/SemanticFacts.cs", + "sha": "08e10e0a52293584bb9a380c69768744aab7653c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Binder/Semantics/SemanticFacts.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/08e10e0a52293584bb9a380c69768744aab7653c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Binder/Semantics/SemanticFacts.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ModelUpdatedEventsArgs.cs", + "path": "src/roslyn/src/EditorFeatures/Core.Wpf/SignatureHelp/ModelUpdatedEventsArgs.cs", + "sha": "13985c6ea83b18d51885d91e9299e90ec5cbd5d4", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core.Wpf/SignatureHelp/ModelUpdatedEventsArgs.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/13985c6ea83b18d51885d91e9299e90ec5cbd5d4", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core.Wpf/SignatureHelp/ModelUpdatedEventsArgs.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IVsExpansionSessionExtensions.cs", + "path": "src/roslyn/src/VisualStudio/Core/Def/Snippets/IVsExpansionSessionExtensions.cs", + "sha": "11ee18b358882021cc7226aeb4bb0c71d58cdcc9", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/Core/Def/Snippets/IVsExpansionSessionExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/11ee18b358882021cc7226aeb4bb0c71d58cdcc9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/Core/Def/Snippets/IVsExpansionSessionExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RenameTrackingDismisser.cs", + "path": "src/roslyn/src/EditorFeatures/Core/Shared/Utilities/RenameTrackingDismisser.cs", + "sha": "0fcc8e048ceb2c325159d491e7511a64a2f32b77", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core/Shared/Utilities/RenameTrackingDismisser.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0fcc8e048ceb2c325159d491e7511a64a2f32b77", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core/Shared/Utilities/RenameTrackingDismisser.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CompileTimeSolutionProvider.cs", + "path": "src/roslyn/src/Features/Core/Portable/Workspace/CompileTimeSolutionProvider.cs", + "sha": "0f2c08f24bb6dc8773ea520ba3ac69ca520f1d4a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Workspace/CompileTimeSolutionProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0f2c08f24bb6dc8773ea520ba3ac69ca520f1d4a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Workspace/CompileTimeSolutionProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ChangeSignatureResult.cs", + "path": "src/roslyn/src/Features/Core/Portable/ChangeSignature/ChangeSignatureResult.cs", + "sha": "0b021bef00236cefd1892a6ecf587ba1c5c10217", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/ChangeSignature/ChangeSignatureResult.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0b021bef00236cefd1892a6ecf587ba1c5c10217", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/ChangeSignature/ChangeSignatureResult.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "NavigateToSearcherTests.cs", + "path": "src/roslyn/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToSearcherTests.cs", + "sha": "09100345c3016b6643285e3f6d75a203ac6647c0", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToSearcherTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/09100345c3016b6643285e3f6d75a203ac6647c0", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/CSharpTest/NavigateTo/NavigateToSearcherTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "MetadataImportOptions.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/MetadataReader/MetadataImportOptions.cs", + "sha": "07684bc6e52f02622eb0b93df7d257c1b04201d4", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/MetadataReader/MetadataImportOptions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/07684bc6e52f02622eb0b93df7d257c1b04201d4", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/MetadataReader/MetadataImportOptions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "LittleEndianReader.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/InternalUtilities/LittleEndianReader.cs", + "sha": "04067f4b430102aaa4a4d86732ae2518c695161b", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/LittleEndianReader.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/04067f4b430102aaa4a4d86732ae2518c695161b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/InternalUtilities/LittleEndianReader.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "FixAllKind.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/FixAllKind.cs", + "sha": "02542efa9e53cc62ef4d068c9a13d6c5bb14a882", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/FixAllKind.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/02542efa9e53cc62ef4d068c9a13d6c5bb14a882", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/FixAllKind.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "EnumMemberDeclarationSyntax.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Syntax/EnumMemberDeclarationSyntax.cs", + "sha": "00254bd610961685fc13d9b680cb61136afda41b", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Syntax/EnumMemberDeclarationSyntax.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/00254bd610961685fc13d9b680cb61136afda41b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Syntax/EnumMemberDeclarationSyntax.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "VsCommands.cs", + "path": "src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/VsCommands.cs", + "sha": "07a6dcf4989c2f1dbf8f075478be96b567d2564e", + "url": "https://api.github.com/repositories/550902717/contents/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/VsCommands.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/07a6dcf4989c2f1dbf8f075478be96b567d2564e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/VsCommands.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectCheckerUtil.cs", + "path": "src/roslyn/src/Tools/BuildBoss/ProjectCheckerUtil.cs", + "sha": "077da78caa7a92183b22e2782972de1c41fbb0a3", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Tools/BuildBoss/ProjectCheckerUtil.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/077da78caa7a92183b22e2782972de1c41fbb0a3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Tools/BuildBoss/ProjectCheckerUtil.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DoNotMixAttributesFromDifferentVersionsOfMEF.cs", + "path": "src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs", + "sha": "0bec9d26561e1a86b23d332c208c9225a51835d5", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0bec9d26561e1a86b23d332c208c9225a51835d5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Roslyn.Diagnostics.Analyzers/Core/DoNotMixAttributesFromDifferentVersionsOfMEF.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "VirtualKey.cs", + "path": "src/roslyn/src/VisualStudio/IntegrationTest/TestUtilities/Input/VirtualKey.cs", + "sha": "1485f5648e571a1d224ac2880d184b402e3d07b8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/VisualStudio/IntegrationTest/TestUtilities/Input/VirtualKey.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1485f5648e571a1d224ac2880d184b402e3d07b8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/VisualStudio/IntegrationTest/TestUtilities/Input/VirtualKey.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ObjectGraphOptions.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/ObjectGraphOptions.cs", + "sha": "06481f1e755a2dcaddce4c9dc80de03314eff0a8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/ObjectGraphOptions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/06481f1e755a2dcaddce4c9dc80de03314eff0a8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/ObjectGraphOptions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "FindProcessHandler.cs", + "path": "src/templating/tools/legacy-tools/ProjectTestRunner/Handlers/FindProcessHandler.cs", + "sha": "1197b28388fb7380eedb0c7567064eda0476ffd9", + "url": "https://api.github.com/repositories/550902717/contents/src/templating/tools/legacy-tools/ProjectTestRunner/Handlers/FindProcessHandler.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1197b28388fb7380eedb0c7567064eda0476ffd9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/templating/tools/legacy-tools/ProjectTestRunner/Handlers/FindProcessHandler.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/templating/dotnet-template-samples/content/16-string-value-transform/MyProject.Con/Program.cs", + "sha": "048e00e5f25833b2cb3061ef5c388221423dc42e", + "url": "https://api.github.com/repositories/550902717/contents/src/templating/dotnet-template-samples/content/16-string-value-transform/MyProject.Con/Program.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/048e00e5f25833b2cb3061ef5c388221423dc42e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/templating/dotnet-template-samples/content/16-string-value-transform/MyProject.Con/Program.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpClassSnippetProvider.cs", + "path": "src/roslyn/src/Features/CSharp/Portable/Snippets/CSharpClassSnippetProvider.cs", + "sha": "14e87a8b61e2d941a9a4e294bf1fd211560661f8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/CSharp/Portable/Snippets/CSharpClassSnippetProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/14e87a8b61e2d941a9a4e294bf1fd211560661f8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/CSharp/Portable/Snippets/CSharpClassSnippetProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ICompileTimeSolutionProvider.cs", + "path": "src/roslyn/src/Features/Core/Portable/Workspace/ICompileTimeSolutionProvider.cs", + "sha": "16702bbf87f9dded34d4c1e01aade78669c9a83f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Workspace/ICompileTimeSolutionProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/16702bbf87f9dded34d4c1e01aade78669c9a83f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Workspace/ICompileTimeSolutionProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SyncNamespaceTests_NoAction.cs", + "path": "src/roslyn/src/Features/CSharpTest/SyncNamespace/SyncNamespaceTests_NoAction.cs", + "sha": "1667db5d356d6136f85b552640ff9733153abb8f", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/CSharpTest/SyncNamespace/SyncNamespaceTests_NoAction.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1667db5d356d6136f85b552640ff9733153abb8f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/CSharpTest/SyncNamespace/SyncNamespaceTests_NoAction.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ExpressionListVariableBinder.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Binder/ExpressionListVariableBinder.cs", + "sha": "0d6e275c6ec62a8159395b60e2a97980e6d95119", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Binder/ExpressionListVariableBinder.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0d6e275c6ec62a8159395b60e2a97980e6d95119", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Binder/ExpressionListVariableBinder.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "WorkspaceAnalyzerOptions.cs", + "path": "src/roslyn/src/Workspaces/Core/Portable/Diagnostics/WorkspaceAnalyzerOptions.cs", + "sha": "0a0a8d96fbdfb53cb3c33fcb35475351cd676d9e", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Workspaces/Core/Portable/Diagnostics/WorkspaceAnalyzerOptions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/0a0a8d96fbdfb53cb3c33fcb35475351cd676d9e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Workspaces/Core/Portable/Diagnostics/WorkspaceAnalyzerOptions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ObjectDisplayExtensions.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/SymbolDisplay/ObjectDisplayExtensions.cs", + "sha": "087bbfc08e9d1ad459b1a24c64f06aca19901b7a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/SymbolDisplay/ObjectDisplayExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/087bbfc08e9d1ad459b1a24c64f06aca19901b7a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/SymbolDisplay/ObjectDisplayExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "InlineRenameAdornment.cs", + "path": "src/roslyn/src/EditorFeatures/Core.Wpf/InlineRename/UI/InlineRenameAdornment.cs", + "sha": "07b12ae79df0d34fcb50ce7edb7bf18188c3c474", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/Core.Wpf/InlineRename/UI/InlineRenameAdornment.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/07b12ae79df0d34fcb50ce7edb7bf18188c3c474", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/Core.Wpf/InlineRename/UI/InlineRenameAdornment.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/Samples/XmlFileLogger/ObjectModel/Project.cs", + "sha": "19081d2c14bcdbe6f00af65c68a0631f6fc7e200", + "url": "https://api.github.com/repositories/32051890/contents/src/Samples/XmlFileLogger/ObjectModel/Project.cs?ref=946c584115367635c37ac7ecaadb2f36542f88b0", + "git_url": "https://api.github.com/repositories/32051890/git/blobs/19081d2c14bcdbe6f00af65c68a0631f6fc7e200", + "html_url": "https://github.com/dotnet/msbuild/blob/946c584115367635c37ac7ecaadb2f36542f88b0/src/Samples/XmlFileLogger/ObjectModel/Project.cs", + "repository": { + "id": 32051890, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjA1MTg5MA==", + "name": "msbuild", + "full_name": "dotnet/msbuild", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/msbuild", + "description": "The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/msbuild", + "forks_url": "https://api.github.com/repos/dotnet/msbuild/forks", + "keys_url": "https://api.github.com/repos/dotnet/msbuild/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/msbuild/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/msbuild/teams", + "hooks_url": "https://api.github.com/repos/dotnet/msbuild/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/msbuild/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/msbuild/events", + "assignees_url": "https://api.github.com/repos/dotnet/msbuild/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/msbuild/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/msbuild/tags", + "blobs_url": "https://api.github.com/repos/dotnet/msbuild/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/msbuild/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/msbuild/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/msbuild/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/msbuild/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/msbuild/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/msbuild/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/msbuild/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/msbuild/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/msbuild/subscription", + "commits_url": "https://api.github.com/repos/dotnet/msbuild/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/msbuild/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/msbuild/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/msbuild/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/msbuild/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/msbuild/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/msbuild/merges", + "archive_url": "https://api.github.com/repos/dotnet/msbuild/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/msbuild/downloads", + "issues_url": "https://api.github.com/repos/dotnet/msbuild/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/msbuild/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/msbuild/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/msbuild/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/msbuild/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/msbuild/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/msbuild/deployments" + }, + "score": 1 + }, + { + "name": "ProjectOptions.cs", + "path": "src/dotnet-ef/ProjectOptions.cs", + "sha": "1acfcd199735b331dc669335b688c6479668cdb7", + "url": "https://api.github.com/repositories/16157746/contents/src/dotnet-ef/ProjectOptions.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/1acfcd199735b331dc669335b688c6479668cdb7", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/dotnet-ef/ProjectOptions.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "ProjectExtensions.cs", + "path": "src/Features/Core/Portable/Shared/Extensions/ProjectExtensions.cs", + "sha": "1df24cf4ee104affea3f03fbce25ed6c3722443b", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/Shared/Extensions/ProjectExtensions.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1df24cf4ee104affea3f03fbce25ed6c3722443b", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/Shared/Extensions/ProjectExtensions.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Propagator.cs", + "path": "src/EntityFramework/Core/Mapping/Update/Internal/Propagator.cs", + "sha": "1f419f93e49d3986907d19c928052fe73a7f3c8b", + "url": "https://api.github.com/repositories/317711432/contents/src/EntityFramework/Core/Mapping/Update/Internal/Propagator.cs?ref=65fb0c15394c26c1acbff55ed359b565433bef1b", + "git_url": "https://api.github.com/repositories/317711432/git/blobs/1f419f93e49d3986907d19c928052fe73a7f3c8b", + "html_url": "https://github.com/dotnet/ef6tools/blob/65fb0c15394c26c1acbff55ed359b565433bef1b/src/EntityFramework/Core/Mapping/Update/Internal/Propagator.cs", + "repository": { + "id": 317711432, + "node_id": "MDEwOlJlcG9zaXRvcnkzMTc3MTE0MzI=", + "name": "ef6tools", + "full_name": "dotnet/ef6tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6tools", + "description": "This is the codebase for the Entity Framework 6 and LINQ-To-SQL designers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6tools", + "forks_url": "https://api.github.com/repos/dotnet/ef6tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6tools/deployments" + }, + "score": 1 + }, + { + "name": "ClearCommand.cs", + "path": "src/Tools/dotnet-user-jwts/src/Commands/ClearCommand.cs", + "sha": "2b977e3f6313043abacbdc408ffe34bae01e94aa", + "url": "https://api.github.com/repositories/17620347/contents/src/Tools/dotnet-user-jwts/src/Commands/ClearCommand.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/2b977e3f6313043abacbdc408ffe34bae01e94aa", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Tools/dotnet-user-jwts/src/Commands/ClearCommand.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "src/tools/illink/src/linker/Linker/AssemblyInfo.cs", + "sha": "17d4913b9ec6d587077ae1d4aa921317a0f62cee", + "url": "https://api.github.com/repositories/210716005/contents/src/tools/illink/src/linker/Linker/AssemblyInfo.cs?ref=79c2669e8551ba0f42f04e4bea9e1e692dca6d17", + "git_url": "https://api.github.com/repositories/210716005/git/blobs/17d4913b9ec6d587077ae1d4aa921317a0f62cee", + "html_url": "https://github.com/dotnet/runtime/blob/79c2669e8551ba0f42f04e4bea9e1e692dca6d17/src/tools/illink/src/linker/Linker/AssemblyInfo.cs", + "repository": { + "id": 210716005, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTA3MTYwMDU=", + "name": "runtime", + "full_name": "dotnet/runtime", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/runtime", + "description": ".NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/runtime", + "forks_url": "https://api.github.com/repos/dotnet/runtime/forks", + "keys_url": "https://api.github.com/repos/dotnet/runtime/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/runtime/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/runtime/teams", + "hooks_url": "https://api.github.com/repos/dotnet/runtime/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/runtime/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/runtime/events", + "assignees_url": "https://api.github.com/repos/dotnet/runtime/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/runtime/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/runtime/tags", + "blobs_url": "https://api.github.com/repos/dotnet/runtime/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/runtime/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/runtime/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/runtime/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/runtime/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/runtime/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/runtime/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/runtime/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/runtime/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/runtime/subscription", + "commits_url": "https://api.github.com/repos/dotnet/runtime/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/runtime/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/runtime/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/runtime/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/runtime/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/runtime/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/runtime/merges", + "archive_url": "https://api.github.com/repos/dotnet/runtime/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/runtime/downloads", + "issues_url": "https://api.github.com/repos/dotnet/runtime/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/runtime/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/runtime/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/runtime/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/runtime/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/runtime/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/runtime/deployments" + }, + "score": 1 + }, + { + "name": "RecipeInference.cs", + "path": "src/Microsoft.ML.AutoML/Experiment/RecipeInference.cs", + "sha": "21929f819e059248b3e4a37f1000328906332ac7", + "url": "https://api.github.com/repositories/132021166/contents/src/Microsoft.ML.AutoML/Experiment/RecipeInference.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/21929f819e059248b3e4a37f1000328906332ac7", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/src/Microsoft.ML.AutoML/Experiment/RecipeInference.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/5-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/5-codeSearch.json new file mode 100644 index 00000000000..4b941df0b86 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/5-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=6" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "Sphere.cs", + "path": "csharp/parallel/Raytracer/Sphere.cs", + "sha": "298a15e4148cb4f9fe9066802dc2da82cedfca6a", + "url": "https://api.github.com/repositories/119571446/contents/csharp/parallel/Raytracer/Sphere.cs?ref=9ea0841931b49f43371dd59b8b3297d91aca97e0", + "git_url": "https://api.github.com/repositories/119571446/git/blobs/298a15e4148cb4f9fe9066802dc2da82cedfca6a", + "html_url": "https://github.com/dotnet/samples/blob/9ea0841931b49f43371dd59b8b3297d91aca97e0/csharp/parallel/Raytracer/Sphere.cs", + "repository": { + "id": 119571446, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTk1NzE0NDY=", + "name": "samples", + "full_name": "dotnet/samples", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/samples", + "description": "Sample code referenced by the .NET documentation", + "fork": false, + "url": "https://api.github.com/repos/dotnet/samples", + "forks_url": "https://api.github.com/repos/dotnet/samples/forks", + "keys_url": "https://api.github.com/repos/dotnet/samples/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/samples/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/samples/teams", + "hooks_url": "https://api.github.com/repos/dotnet/samples/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/samples/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/samples/events", + "assignees_url": "https://api.github.com/repos/dotnet/samples/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/samples/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/samples/tags", + "blobs_url": "https://api.github.com/repos/dotnet/samples/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/samples/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/samples/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/samples/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/samples/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/samples/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/samples/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/samples/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/samples/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/samples/subscription", + "commits_url": "https://api.github.com/repos/dotnet/samples/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/samples/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/samples/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/samples/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/samples/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/samples/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/samples/merges", + "archive_url": "https://api.github.com/repos/dotnet/samples/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/samples/downloads", + "issues_url": "https://api.github.com/repos/dotnet/samples/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/samples/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/samples/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/samples/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/samples/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/samples/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/samples/deployments" + }, + "score": 1 + }, + { + "name": "DeploymentManifestInfo.cs", + "path": "src/Microsoft.Tye.Core/DeploymentManifestInfo.cs", + "sha": "1d57ba90d36282ce94ec12113df5a77243787333", + "url": "https://api.github.com/repositories/243854166/contents/src/Microsoft.Tye.Core/DeploymentManifestInfo.cs?ref=75465614e67b5f1e500d1f8b1cb70af22c0c683e", + "git_url": "https://api.github.com/repositories/243854166/git/blobs/1d57ba90d36282ce94ec12113df5a77243787333", + "html_url": "https://github.com/dotnet/tye/blob/75465614e67b5f1e500d1f8b1cb70af22c0c683e/src/Microsoft.Tye.Core/DeploymentManifestInfo.cs", + "repository": { + "id": 243854166, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDM4NTQxNjY=", + "name": "tye", + "full_name": "dotnet/tye", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/tye", + "description": "Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with minimal configuration.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/tye", + "forks_url": "https://api.github.com/repos/dotnet/tye/forks", + "keys_url": "https://api.github.com/repos/dotnet/tye/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/tye/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/tye/teams", + "hooks_url": "https://api.github.com/repos/dotnet/tye/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/tye/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/tye/events", + "assignees_url": "https://api.github.com/repos/dotnet/tye/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/tye/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/tye/tags", + "blobs_url": "https://api.github.com/repos/dotnet/tye/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/tye/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/tye/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/tye/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/tye/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/tye/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/tye/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/tye/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/tye/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/tye/subscription", + "commits_url": "https://api.github.com/repos/dotnet/tye/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/tye/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/tye/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/tye/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/tye/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/tye/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/tye/merges", + "archive_url": "https://api.github.com/repos/dotnet/tye/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/tye/downloads", + "issues_url": "https://api.github.com/repos/dotnet/tye/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/tye/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/tye/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/tye/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/tye/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/tye/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/tye/deployments" + }, + "score": 1 + }, + { + "name": "AsyncContext.cs", + "path": "src/Microsoft.TryDotNet.WasmRunner/AsyncContext.cs", + "sha": "299e7291869a7de5661b70d5b28f00d0a82d1c46", + "url": "https://api.github.com/repositories/104407534/contents/src/Microsoft.TryDotNet.WasmRunner/AsyncContext.cs?ref=4a671ffd36d04373f1069aad8dd24a730889b035", + "git_url": "https://api.github.com/repositories/104407534/git/blobs/299e7291869a7de5661b70d5b28f00d0a82d1c46", + "html_url": "https://github.com/dotnet/try/blob/4a671ffd36d04373f1069aad8dd24a730889b035/src/Microsoft.TryDotNet.WasmRunner/AsyncContext.cs", + "repository": { + "id": 104407534, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ0MDc1MzQ=", + "name": "try", + "full_name": "dotnet/try", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/try", + "description": "Try .NET provides developers and content authors with tools to create interactive experiences.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/try", + "forks_url": "https://api.github.com/repos/dotnet/try/forks", + "keys_url": "https://api.github.com/repos/dotnet/try/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/try/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/try/teams", + "hooks_url": "https://api.github.com/repos/dotnet/try/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/try/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/try/events", + "assignees_url": "https://api.github.com/repos/dotnet/try/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/try/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/try/tags", + "blobs_url": "https://api.github.com/repos/dotnet/try/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/try/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/try/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/try/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/try/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/try/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/try/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/try/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/try/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/try/subscription", + "commits_url": "https://api.github.com/repos/dotnet/try/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/try/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/try/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/try/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/try/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/try/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/try/merges", + "archive_url": "https://api.github.com/repos/dotnet/try/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/try/downloads", + "issues_url": "https://api.github.com/repos/dotnet/try/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/try/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/try/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/try/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/try/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/try/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/try/deployments" + }, + "score": 1 + }, + { + "name": "SR.cs", + "path": "src/DocumentFormat.OpenXml.Framework/Resources/SR.cs", + "sha": "190b0d0076ff1d24531a25718bb85bae5555b7bb", + "url": "https://api.github.com/repositories/20532052/contents/src/DocumentFormat.OpenXml.Framework/Resources/SR.cs?ref=e7a0331218de7f53582698bdfd1ddcc2124c1a40", + "git_url": "https://api.github.com/repositories/20532052/git/blobs/190b0d0076ff1d24531a25718bb85bae5555b7bb", + "html_url": "https://github.com/dotnet/Open-XML-SDK/blob/e7a0331218de7f53582698bdfd1ddcc2124c1a40/src/DocumentFormat.OpenXml.Framework/Resources/SR.cs", + "repository": { + "id": 20532052, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDUzMjA1Mg==", + "name": "Open-XML-SDK", + "full_name": "dotnet/Open-XML-SDK", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Open-XML-SDK", + "description": "Open XML SDK by Microsoft", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Open-XML-SDK", + "forks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/forks", + "keys_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/events", + "assignees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/merges", + "archive_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/deployments" + }, + "score": 1 + }, + { + "name": "User32+HELPINFO.cs", + "path": "src/User32/User32+HELPINFO.cs", + "sha": "220dc551ee55a903de4e872b6ac8eecdc54a27e1", + "url": "https://api.github.com/repositories/44758360/contents/src/User32/User32%2BHELPINFO.cs?ref=93de9b78bcd8ed84d02901b0556c348fa66257ed", + "git_url": "https://api.github.com/repositories/44758360/git/blobs/220dc551ee55a903de4e872b6ac8eecdc54a27e1", + "html_url": "https://github.com/dotnet/pinvoke/blob/93de9b78bcd8ed84d02901b0556c348fa66257ed/src/User32/User32%2BHELPINFO.cs", + "repository": { + "id": 44758360, + "node_id": "MDEwOlJlcG9zaXRvcnk0NDc1ODM2MA==", + "name": "pinvoke", + "full_name": "dotnet/pinvoke", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/pinvoke", + "description": "A library containing all P/Invoke code so you don't have to import it every time. Maintained and updated to support the latest Windows OS.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/pinvoke", + "forks_url": "https://api.github.com/repos/dotnet/pinvoke/forks", + "keys_url": "https://api.github.com/repos/dotnet/pinvoke/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/pinvoke/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/pinvoke/teams", + "hooks_url": "https://api.github.com/repos/dotnet/pinvoke/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/pinvoke/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/pinvoke/events", + "assignees_url": "https://api.github.com/repos/dotnet/pinvoke/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/pinvoke/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/pinvoke/tags", + "blobs_url": "https://api.github.com/repos/dotnet/pinvoke/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/pinvoke/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/pinvoke/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/pinvoke/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/pinvoke/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/pinvoke/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/pinvoke/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/pinvoke/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/pinvoke/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/pinvoke/subscription", + "commits_url": "https://api.github.com/repos/dotnet/pinvoke/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/pinvoke/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/pinvoke/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/pinvoke/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/pinvoke/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/pinvoke/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/pinvoke/merges", + "archive_url": "https://api.github.com/repos/dotnet/pinvoke/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/pinvoke/downloads", + "issues_url": "https://api.github.com/repos/dotnet/pinvoke/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/pinvoke/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/pinvoke/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/pinvoke/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/pinvoke/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/pinvoke/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/pinvoke/deployments" + }, + "score": 1 + }, + { + "name": "EntireTerminalRegion.cs", + "path": "src/System.CommandLine.Rendering/EntireTerminalRegion.cs", + "sha": "205cc235a5118d8e1f29be6e01f939ac144936e7", + "url": "https://api.github.com/repositories/129934884/contents/src/System.CommandLine.Rendering/EntireTerminalRegion.cs?ref=f6ff2f1a94a58617e744f8fe0d469a2a420a6259", + "git_url": "https://api.github.com/repositories/129934884/git/blobs/205cc235a5118d8e1f29be6e01f939ac144936e7", + "html_url": "https://github.com/dotnet/command-line-api/blob/f6ff2f1a94a58617e744f8fe0d469a2a420a6259/src/System.CommandLine.Rendering/EntireTerminalRegion.cs", + "repository": { + "id": 129934884, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjk5MzQ4ODQ=", + "name": "command-line-api", + "full_name": "dotnet/command-line-api", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/command-line-api", + "description": "Command line parsing, invocation, and rendering of terminal output.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/command-line-api", + "forks_url": "https://api.github.com/repos/dotnet/command-line-api/forks", + "keys_url": "https://api.github.com/repos/dotnet/command-line-api/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/command-line-api/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/command-line-api/teams", + "hooks_url": "https://api.github.com/repos/dotnet/command-line-api/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/command-line-api/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/command-line-api/events", + "assignees_url": "https://api.github.com/repos/dotnet/command-line-api/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/command-line-api/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/command-line-api/tags", + "blobs_url": "https://api.github.com/repos/dotnet/command-line-api/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/command-line-api/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/command-line-api/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/command-line-api/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/command-line-api/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/command-line-api/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/command-line-api/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/command-line-api/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/command-line-api/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/command-line-api/subscription", + "commits_url": "https://api.github.com/repos/dotnet/command-line-api/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/command-line-api/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/command-line-api/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/command-line-api/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/command-line-api/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/command-line-api/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/command-line-api/merges", + "archive_url": "https://api.github.com/repos/dotnet/command-line-api/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/command-line-api/downloads", + "issues_url": "https://api.github.com/repos/dotnet/command-line-api/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/command-line-api/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/command-line-api/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/command-line-api/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/command-line-api/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/command-line-api/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/command-line-api/deployments" + }, + "score": 1 + }, + { + "name": "RepeatBenchmark.cs", + "path": "Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/RepeatBenchmark.cs", + "sha": "229756df383f9db968d05be0076cff16b993f011", + "url": "https://api.github.com/repositories/12576526/contents/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/RepeatBenchmark.cs?ref=95d9ea9d2786f6ec49a051c5cff47dc42591e54f", + "git_url": "https://api.github.com/repositories/12576526/git/blobs/229756df383f9db968d05be0076cff16b993f011", + "html_url": "https://github.com/dotnet/reactive/blob/95d9ea9d2786f6ec49a051c5cff47dc42591e54f/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/RepeatBenchmark.cs", + "repository": { + "id": 12576526, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjU3NjUyNg==", + "name": "reactive", + "full_name": "dotnet/reactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/reactive", + "description": "The Reactive Extensions for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/reactive", + "forks_url": "https://api.github.com/repos/dotnet/reactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/reactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/reactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/reactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/reactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/reactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/reactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/reactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/reactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/reactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/reactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/reactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/reactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/reactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/reactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/reactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/reactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/reactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/reactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/reactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/reactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/reactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/reactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/reactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/reactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/reactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/reactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/reactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/reactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/reactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/reactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/reactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/reactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/reactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/reactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/reactive/deployments" + }, + "score": 1 + }, + { + "name": "ArrayComparer.cs", + "path": "src/Runtime/Core/Utils/ArrayComparer.cs", + "sha": "1e3d5d7be7028ce003e9e0823eab866250849bdb", + "url": "https://api.github.com/repositories/148852400/contents/src/Runtime/Core/Utils/ArrayComparer.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/1e3d5d7be7028ce003e9e0823eab866250849bdb", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Runtime/Core/Utils/ArrayComparer.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "PInvoke.PostMessage.cs", + "path": "src/System.Windows.Forms.Primitives/src/Windows/Win32/PInvoke.PostMessage.cs", + "sha": "1e32fd6be8576826ea3ea2991884f7e0623dcf9f", + "url": "https://api.github.com/repositories/153711830/contents/src/System.Windows.Forms.Primitives/src/Windows/Win32/PInvoke.PostMessage.cs?ref=386d51b6a85689a0964d0596e8e0d03a471fc225", + "git_url": "https://api.github.com/repositories/153711830/git/blobs/1e32fd6be8576826ea3ea2991884f7e0623dcf9f", + "html_url": "https://github.com/dotnet/winforms/blob/386d51b6a85689a0964d0596e8e0d03a471fc225/src/System.Windows.Forms.Primitives/src/Windows/Win32/PInvoke.PostMessage.cs", + "repository": { + "id": 153711830, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE4MzA=", + "name": "winforms", + "full_name": "dotnet/winforms", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/winforms", + "description": "Windows Forms is a .NET UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/winforms", + "forks_url": "https://api.github.com/repos/dotnet/winforms/forks", + "keys_url": "https://api.github.com/repos/dotnet/winforms/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/winforms/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/winforms/teams", + "hooks_url": "https://api.github.com/repos/dotnet/winforms/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/winforms/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/winforms/events", + "assignees_url": "https://api.github.com/repos/dotnet/winforms/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/winforms/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/winforms/tags", + "blobs_url": "https://api.github.com/repos/dotnet/winforms/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/winforms/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/winforms/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/winforms/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/winforms/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/winforms/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/winforms/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/winforms/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/winforms/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/winforms/subscription", + "commits_url": "https://api.github.com/repos/dotnet/winforms/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/winforms/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/winforms/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/winforms/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/winforms/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/winforms/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/winforms/merges", + "archive_url": "https://api.github.com/repos/dotnet/winforms/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/winforms/downloads", + "issues_url": "https://api.github.com/repos/dotnet/winforms/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/winforms/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/winforms/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/winforms/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/winforms/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/winforms/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/winforms/deployments" + }, + "score": 1 + }, + { + "name": "Tanh.cs", + "path": "src/TorchSharp/NN/Activation/Tanh.cs", + "sha": "26752857c45779a4be166a7d0d1a2b6d82dbf029", + "url": "https://api.github.com/repositories/152770407/contents/src/TorchSharp/NN/Activation/Tanh.cs?ref=8157954c65932b7cf5ff92a40ff54d65b923e972", + "git_url": "https://api.github.com/repositories/152770407/git/blobs/26752857c45779a4be166a7d0d1a2b6d82dbf029", + "html_url": "https://github.com/dotnet/TorchSharp/blob/8157954c65932b7cf5ff92a40ff54d65b923e972/src/TorchSharp/NN/Activation/Tanh.cs", + "repository": { + "id": 152770407, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTI3NzA0MDc=", + "name": "TorchSharp", + "full_name": "dotnet/TorchSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/TorchSharp", + "description": "A .NET library that provides access to the library that powers PyTorch.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/TorchSharp", + "forks_url": "https://api.github.com/repos/dotnet/TorchSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/TorchSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/TorchSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/TorchSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/TorchSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/TorchSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/TorchSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/TorchSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/TorchSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/TorchSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/TorchSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/TorchSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/TorchSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/TorchSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/TorchSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/TorchSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/TorchSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/TorchSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/TorchSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/TorchSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/TorchSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/TorchSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/TorchSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/TorchSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/TorchSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/TorchSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/TorchSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/TorchSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/TorchSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/TorchSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/TorchSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/TorchSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/TorchSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/TorchSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/TorchSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/TorchSharp/deployments" + }, + "score": 1 + }, + { + "name": "Exp2.cs", + "path": "src/benchmarks/micro/runtime/Math/Functions/Single/Exp2.cs", + "sha": "1a0418282d8b0621b09fd8dce203b92665e32d5f", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Math/Functions/Single/Exp2.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/1a0418282d8b0621b09fd8dce203b92665e32d5f", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Math/Functions/Single/Exp2.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "InvalidGroupInputRefScopeEntry.cs", + "path": "src/EntityFramework/Core/Common/EntitySql/InvalidGroupInputRefScopeEntry.cs", + "sha": "197888a00d3ad73e572e1371f3fdbbef557cbf3d", + "url": "https://api.github.com/repositories/39985381/contents/src/EntityFramework/Core/Common/EntitySql/InvalidGroupInputRefScopeEntry.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/197888a00d3ad73e572e1371f3fdbbef557cbf3d", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/EntityFramework/Core/Common/EntitySql/InvalidGroupInputRefScopeEntry.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "MqttClient.cs", + "path": "Source/MQTTnet/Server/Internal/MqttClient.cs", + "sha": "2cfde8877d51f247b6a7bac5a354bf3e7e9cb7de", + "url": "https://api.github.com/repositories/85242321/contents/Source/MQTTnet/Server/Internal/MqttClient.cs?ref=9295626503231e50310aba104ed94e216ba4e95a", + "git_url": "https://api.github.com/repositories/85242321/git/blobs/2cfde8877d51f247b6a7bac5a354bf3e7e9cb7de", + "html_url": "https://github.com/dotnet/MQTTnet/blob/9295626503231e50310aba104ed94e216ba4e95a/Source/MQTTnet/Server/Internal/MqttClient.cs", + "repository": { + "id": 85242321, + "node_id": "MDEwOlJlcG9zaXRvcnk4NTI0MjMyMQ==", + "name": "MQTTnet", + "full_name": "dotnet/MQTTnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/MQTTnet", + "description": "MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/MQTTnet", + "forks_url": "https://api.github.com/repos/dotnet/MQTTnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/MQTTnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/MQTTnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/MQTTnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/MQTTnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/MQTTnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/MQTTnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/MQTTnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/MQTTnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/MQTTnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/MQTTnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/MQTTnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/MQTTnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/MQTTnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/MQTTnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/MQTTnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/MQTTnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/MQTTnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/MQTTnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/MQTTnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/MQTTnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/MQTTnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/MQTTnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/MQTTnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/MQTTnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/MQTTnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/MQTTnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/MQTTnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/MQTTnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/MQTTnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/MQTTnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/MQTTnet/deployments" + }, + "score": 1 + }, + { + "name": "CreateManifestFile.cs", + "path": "src/WebSdk/Publish/Tasks/Tasks/MsDeploy/CreateManifestFile.cs", + "sha": "27f9a1e414b2415793dbb410ea2fc593807e0121", + "url": "https://api.github.com/repositories/63984307/contents/src/WebSdk/Publish/Tasks/Tasks/MsDeploy/CreateManifestFile.cs?ref=6a0dd48eb0c28b1228056e6d6e12c782f854006a", + "git_url": "https://api.github.com/repositories/63984307/git/blobs/27f9a1e414b2415793dbb410ea2fc593807e0121", + "html_url": "https://github.com/dotnet/sdk/blob/6a0dd48eb0c28b1228056e6d6e12c782f854006a/src/WebSdk/Publish/Tasks/Tasks/MsDeploy/CreateManifestFile.cs", + "repository": { + "id": 63984307, + "node_id": "MDEwOlJlcG9zaXRvcnk2Mzk4NDMwNw==", + "name": "sdk", + "full_name": "dotnet/sdk", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sdk", + "description": "Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sdk", + "forks_url": "https://api.github.com/repos/dotnet/sdk/forks", + "keys_url": "https://api.github.com/repos/dotnet/sdk/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sdk/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sdk/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sdk/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sdk/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sdk/events", + "assignees_url": "https://api.github.com/repos/dotnet/sdk/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sdk/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sdk/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sdk/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sdk/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sdk/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sdk/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sdk/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sdk/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sdk/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sdk/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sdk/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sdk/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sdk/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sdk/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sdk/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sdk/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sdk/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sdk/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sdk/merges", + "archive_url": "https://api.github.com/repos/dotnet/sdk/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sdk/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sdk/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sdk/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sdk/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sdk/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sdk/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sdk/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sdk/deployments" + }, + "score": 1 + }, + { + "name": "JsonTypeResolver.cs", + "path": "src/Microsoft.Crank.Controller/JsonTypeResolver.cs", + "sha": "24919802bb989d904f52612a2ce9d2ac240157f8", + "url": "https://api.github.com/repositories/257738951/contents/src/Microsoft.Crank.Controller/JsonTypeResolver.cs?ref=20fd95ee1a91b7030058745e620b757d795c6d7a", + "git_url": "https://api.github.com/repositories/257738951/git/blobs/24919802bb989d904f52612a2ce9d2ac240157f8", + "html_url": "https://github.com/dotnet/crank/blob/20fd95ee1a91b7030058745e620b757d795c6d7a/src/Microsoft.Crank.Controller/JsonTypeResolver.cs", + "repository": { + "id": 257738951, + "node_id": "MDEwOlJlcG9zaXRvcnkyNTc3Mzg5NTE=", + "name": "crank", + "full_name": "dotnet/crank", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/crank", + "description": "Benchmarking infrastructure for applications", + "fork": false, + "url": "https://api.github.com/repos/dotnet/crank", + "forks_url": "https://api.github.com/repos/dotnet/crank/forks", + "keys_url": "https://api.github.com/repos/dotnet/crank/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/crank/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/crank/teams", + "hooks_url": "https://api.github.com/repos/dotnet/crank/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/crank/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/crank/events", + "assignees_url": "https://api.github.com/repos/dotnet/crank/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/crank/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/crank/tags", + "blobs_url": "https://api.github.com/repos/dotnet/crank/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/crank/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/crank/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/crank/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/crank/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/crank/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/crank/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/crank/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/crank/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/crank/subscription", + "commits_url": "https://api.github.com/repos/dotnet/crank/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/crank/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/crank/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/crank/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/crank/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/crank/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/crank/merges", + "archive_url": "https://api.github.com/repos/dotnet/crank/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/crank/downloads", + "issues_url": "https://api.github.com/repos/dotnet/crank/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/crank/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/crank/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/crank/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/crank/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/crank/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/crank/deployments" + }, + "score": 1 + }, + { + "name": "NonKhrReturnTypeOverloader.cs", + "path": "src/Core/Silk.NET.BuildTools/Overloading/Complex/NonKhrReturnTypeOverloader.cs", + "sha": "22a677dfa218eeaefe5046d74bf03203ca82d0ee", + "url": "https://api.github.com/repositories/191232240/contents/src/Core/Silk.NET.BuildTools/Overloading/Complex/NonKhrReturnTypeOverloader.cs?ref=d5f1f295966c0790abc215ab6e900f810f464443", + "git_url": "https://api.github.com/repositories/191232240/git/blobs/22a677dfa218eeaefe5046d74bf03203ca82d0ee", + "html_url": "https://github.com/dotnet/Silk.NET/blob/d5f1f295966c0790abc215ab6e900f810f464443/src/Core/Silk.NET.BuildTools/Overloading/Complex/NonKhrReturnTypeOverloader.cs", + "repository": { + "id": 191232240, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTEyMzIyNDA=", + "name": "Silk.NET", + "full_name": "dotnet/Silk.NET", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Silk.NET", + "description": "The high-speed OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX bindings library your mother warned you about.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Silk.NET", + "forks_url": "https://api.github.com/repos/dotnet/Silk.NET/forks", + "keys_url": "https://api.github.com/repos/dotnet/Silk.NET/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Silk.NET/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Silk.NET/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Silk.NET/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Silk.NET/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Silk.NET/events", + "assignees_url": "https://api.github.com/repos/dotnet/Silk.NET/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Silk.NET/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Silk.NET/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Silk.NET/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Silk.NET/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Silk.NET/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Silk.NET/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Silk.NET/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Silk.NET/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Silk.NET/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Silk.NET/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Silk.NET/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Silk.NET/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Silk.NET/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Silk.NET/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Silk.NET/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Silk.NET/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Silk.NET/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Silk.NET/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Silk.NET/merges", + "archive_url": "https://api.github.com/repos/dotnet/Silk.NET/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Silk.NET/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Silk.NET/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Silk.NET/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Silk.NET/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Silk.NET/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Silk.NET/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Silk.NET/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Silk.NET/deployments" + }, + "score": 1 + }, + { + "name": "ResolvedAnalyzerReference.xaml.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/Dependencies/ResolvedAnalyzerReference.xaml.cs", + "sha": "248dc148d02777aed67a5e36c884af12b4d1affe", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/Dependencies/ResolvedAnalyzerReference.xaml.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/248dc148d02777aed67a5e36c884af12b4d1affe", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/Dependencies/ResolvedAnalyzerReference.xaml.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "ConfigurationProjectConfigurationDimensionProvider.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Configuration/ConfigurationProjectConfigurationDimensionProvider.cs", + "sha": "23ac7411f28a12ca87afa505116f6e641ce0e421", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Configuration/ConfigurationProjectConfigurationDimensionProvider.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/23ac7411f28a12ca87afa505116f6e641ce0e421", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Configuration/ConfigurationProjectConfigurationDimensionProvider.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "ResourceModel.cs", + "path": "src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/ResourceModel/ResourceModel.cs", + "sha": "244c80df97cab95f7117a880a79662dce91a92cd", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/ResourceModel/ResourceModel.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/244c80df97cab95f7117a880a79662dce91a92cd", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/ResourceModel/ResourceModel.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "SystemKeyConverter.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/SystemKeyConverter.cs", + "sha": "1c43d59ae08c0b909afb622f344ed40a927b0318", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/SystemKeyConverter.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1c43d59ae08c0b909afb622f344ed40a927b0318", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/SystemKeyConverter.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "ContextExchangeMechanism.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/ContextExchangeMechanism.cs", + "sha": "2ca155f79f39415981ae3074406f5a7377a94e7e", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/ContextExchangeMechanism.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2ca155f79f39415981ae3074406f5a7377a94e7e", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/ContextExchangeMechanism.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "IRelation.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/Tree/Dependencies/AttachedCollections/IRelation.cs", + "sha": "25efae6dfb8ec3dca93bde7d3dda25d52f201cb0", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/Tree/Dependencies/AttachedCollections/IRelation.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/25efae6dfb8ec3dca93bde7d3dda25d52f201cb0", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/Tree/Dependencies/AttachedCollections/IRelation.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "FontCacheLogic.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/MS/internal/FontCache/FontCacheLogic.cs", + "sha": "1eb2a269cef24524978b5246d3baf7f97514150f", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/MS/internal/FontCache/FontCacheLogic.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1eb2a269cef24524978b5246d3baf7f97514150f", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/MS/internal/FontCache/FontCacheLogic.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "IBindingMulticastCapabilities.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/IBindingMulticastCapabilities.cs", + "sha": "2c83479bf915deb352e3db1074c816d4c2f6edce", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/IBindingMulticastCapabilities.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2c83479bf915deb352e3db1074c816d4c2f6edce", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/IBindingMulticastCapabilities.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "DefaultClaimSet.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Claims/DefaultClaimSet.cs", + "sha": "17f2651ce29cfbec4c5e34b406e0a6942e1d22e9", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Claims/DefaultClaimSet.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/17f2651ce29cfbec4c5e34b406e0a6942e1d22e9", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Claims/DefaultClaimSet.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AutomationElementCollection.cs", + "path": "src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/System/Windows/Automation/AutomationElementCollection.cs", + "sha": "1dfdae83c5fc8a5b2a570e2f740d6f32011bae82", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/System/Windows/Automation/AutomationElementCollection.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1dfdae83c5fc8a5b2a570e2f740d6f32011bae82", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/System/Windows/Automation/AutomationElementCollection.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "ILaunchProfileExtensionValueProviderMetadata.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Properties/LaunchProfiles/ILaunchProfileExtensionValueProviderMetadata.cs", + "sha": "2c7d1870bf7a731c2f8ad5a8f9aeff848ff5933e", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Properties/LaunchProfiles/ILaunchProfileExtensionValueProviderMetadata.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/2c7d1870bf7a731c2f8ad5a8f9aeff848ff5933e", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Properties/LaunchProfiles/ILaunchProfileExtensionValueProviderMetadata.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "DefaultProjectPathProviderFactory.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultProjectPathProviderFactory.cs", + "sha": "20a81dec6c47ee9fa770edf37858c1ad16f146c0", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultProjectPathProviderFactory.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/20a81dec6c47ee9fa770edf37858c1ad16f146c0", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultProjectPathProviderFactory.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "AbstractAddItemCommandHandler.TemplateDetails.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/Input/Commands/AbstractAddItemCommandHandler.TemplateDetails.cs", + "sha": "18fbc1fcfe78dac22e0bb618cf06d9297b5350ca", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/Input/Commands/AbstractAddItemCommandHandler.TemplateDetails.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/18fbc1fcfe78dac22e0bb618cf06d9297b5350ca", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/Input/Commands/AbstractAddItemCommandHandler.TemplateDetails.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "WcfService.cs", + "path": "src/System.Private.ServiceModel/tools/IISHostedWcfService/App_code/WcfService.cs", + "sha": "1cd313715bfef793b1aae70d8cb885fd41214b5f", + "url": "https://api.github.com/repositories/35562993/contents/src/System.Private.ServiceModel/tools/IISHostedWcfService/App_code/WcfService.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1cd313715bfef793b1aae70d8cb885fd41214b5f", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.Private.ServiceModel/tools/IISHostedWcfService/App_code/WcfService.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "ArrayExtensions.cs", + "path": "src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ArrayExtensions.cs", + "sha": "2663e636bd7a1182644d15d488e7e775108c3884", + "url": "https://api.github.com/repositories/159564733/contents/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ArrayExtensions.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2663e636bd7a1182644d15d488e7e775108c3884", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ArrayExtensions.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "CatalogFileEntry.cs", + "path": "src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CatalogFileEntry.cs", + "sha": "268d50fc5a71ee0a69c3451938bab8c87a1f3a13", + "url": "https://api.github.com/repositories/104528436/contents/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CatalogFileEntry.cs?ref=7a6697a82a7c7fe1cf0445bde7de63dae69f8b9e", + "git_url": "https://api.github.com/repositories/104528436/git/blobs/268d50fc5a71ee0a69c3451938bab8c87a1f3a13", + "html_url": "https://github.com/dotnet/installer/blob/7a6697a82a7c7fe1cf0445bde7de63dae69f8b9e/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CatalogFileEntry.cs", + "repository": { + "id": 104528436, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1Mjg0MzY=", + "name": "installer", + "full_name": "dotnet/installer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/installer", + "description": ".NET SDK Installer", + "fork": false, + "url": "https://api.github.com/repos/dotnet/installer", + "forks_url": "https://api.github.com/repos/dotnet/installer/forks", + "keys_url": "https://api.github.com/repos/dotnet/installer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/installer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/installer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/installer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/installer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/installer/events", + "assignees_url": "https://api.github.com/repos/dotnet/installer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/installer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/installer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/installer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/installer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/installer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/installer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/installer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/installer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/installer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/installer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/installer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/installer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/installer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/installer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/installer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/installer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/installer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/installer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/installer/merges", + "archive_url": "https://api.github.com/repos/dotnet/installer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/installer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/installer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/installer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/installer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/installer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/installer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/installer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/installer/deployments" + }, + "score": 1 + }, + { + "name": "AnimationUsingKeyFramesTemplate.cs", + "path": "src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationUsingKeyFramesTemplate.cs", + "sha": "18af0f6b99b0e45a7832c0adb5156f895a18df49", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationUsingKeyFramesTemplate.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/18af0f6b99b0e45a7832c0adb5156f895a18df49", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationUsingKeyFramesTemplate.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "FaultFormatter.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/FaultFormatter.cs", + "sha": "298c34a6c23d2d1935c76520c5c1f66d3bbcee29", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/FaultFormatter.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/298c34a6c23d2d1935c76520c5c1f66d3bbcee29", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/FaultFormatter.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "NGCUIElementCollectionSerializerAsync.cs", + "path": "src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/NGCUIElementCollectionSerializerAsync.cs", + "sha": "174e255b1084a10012acb0f3d66e218761c449aa", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/NGCUIElementCollectionSerializerAsync.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/174e255b1084a10012acb0f3d66e218761c449aa", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/manager/NGCUIElementCollectionSerializerAsync.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "ServiceChannelManager.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/ServiceChannelManager.cs", + "sha": "22446baee439da6787060d93303ed8165abdeb8c", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/ServiceChannelManager.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/22446baee439da6787060d93303ed8165abdeb8c", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/ServiceChannelManager.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "DeltaMergeMatchedActionBuilder.cs", + "path": "src/csharp/Extensions/Microsoft.Spark.Extensions.Delta/Tables/DeltaMergeMatchedActionBuilder.cs", + "sha": "24a6995705d258a8e41d81f58493a82e2ca92082", + "url": "https://api.github.com/repositories/182849051/contents/src/csharp/Extensions/Microsoft.Spark.Extensions.Delta/Tables/DeltaMergeMatchedActionBuilder.cs?ref=b63c08b87a060e5100392bcc0069b53d3a607fcf", + "git_url": "https://api.github.com/repositories/182849051/git/blobs/24a6995705d258a8e41d81f58493a82e2ca92082", + "html_url": "https://github.com/dotnet/spark/blob/b63c08b87a060e5100392bcc0069b53d3a607fcf/src/csharp/Extensions/Microsoft.Spark.Extensions.Delta/Tables/DeltaMergeMatchedActionBuilder.cs", + "repository": { + "id": 182849051, + "node_id": "MDEwOlJlcG9zaXRvcnkxODI4NDkwNTE=", + "name": "spark", + "full_name": "dotnet/spark", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/spark", + "description": ".NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/spark", + "forks_url": "https://api.github.com/repos/dotnet/spark/forks", + "keys_url": "https://api.github.com/repos/dotnet/spark/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/spark/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/spark/teams", + "hooks_url": "https://api.github.com/repos/dotnet/spark/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/spark/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/spark/events", + "assignees_url": "https://api.github.com/repos/dotnet/spark/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/spark/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/spark/tags", + "blobs_url": "https://api.github.com/repos/dotnet/spark/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/spark/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/spark/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/spark/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/spark/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/spark/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/spark/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/spark/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/spark/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/spark/subscription", + "commits_url": "https://api.github.com/repos/dotnet/spark/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/spark/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/spark/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/spark/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/spark/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/spark/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/spark/merges", + "archive_url": "https://api.github.com/repos/dotnet/spark/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/spark/downloads", + "issues_url": "https://api.github.com/repos/dotnet/spark/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/spark/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/spark/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/spark/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/spark/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/spark/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/spark/deployments" + }, + "score": 1 + }, + { + "name": "AnimationType.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/AnimationType.cs", + "sha": "1fa47f7a750e36c36e99c7cf787608dfccac6d7f", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/AnimationType.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1fa47f7a750e36c36e99c7cf787608dfccac6d7f", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/AnimationType.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "WSTrust.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/WSTrust.cs", + "sha": "28ea25c39ab8b9895d48d43aac5a9f62d38c3f6a", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/WSTrust.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/28ea25c39ab8b9895d48d43aac5a9f62d38c3f6a", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/WSTrust.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "DoubleAnimationClockResource.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimationClockResource.cs", + "sha": "2653870135b6e923be4816d032658b5daf01a1db", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimationClockResource.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2653870135b6e923be4816d032658b5daf01a1db", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimationClockResource.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "CodeTypeDeclarationCollection.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeTypeDeclarationCollection.cs", + "sha": "17232269ecf72886b52ca1c53cb1a4d273173407", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeTypeDeclarationCollection.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/17232269ecf72886b52ca1c53cb1a4d273173407", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeTypeDeclarationCollection.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "CultureSpecificStringDictionary.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/CultureSpecificStringDictionary.cs", + "sha": "264cba841ad882f5510c712de6636549d607a33c", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/CultureSpecificStringDictionary.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/264cba841ad882f5510c712de6636549d607a33c", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/CultureSpecificStringDictionary.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "Tracing.cs", + "path": "src/vstest/src/Microsoft.TestPlatform.Build/Tracing.cs", + "sha": "1cb8b3f8e6e95dcd5e5987a47673bcb86757756a", + "url": "https://api.github.com/repositories/550902717/contents/src/vstest/src/Microsoft.TestPlatform.Build/Tracing.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1cb8b3f8e6e95dcd5e5987a47673bcb86757756a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/vstest/src/Microsoft.TestPlatform.Build/Tracing.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AnnotationHelper.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Annotations/AnnotationHelper.cs", + "sha": "294a2f6883f4d73c3e8d8d95b73a0cc46c068212", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Annotations/AnnotationHelper.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/294a2f6883f4d73c3e8d8d95b73a0cc46c068212", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Annotations/AnnotationHelper.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "IAzureSignToolSignatureProvider.cs", + "path": "src/Sign.Core/SignatureProviders/IAzureSignToolSignatureProvider.cs", + "sha": "266bb6acec4f3880e132523fb8373b55453bf9b9", + "url": "https://api.github.com/repositories/67908016/contents/src/Sign.Core/SignatureProviders/IAzureSignToolSignatureProvider.cs?ref=7058dfa76f7ffd4653d7f78d8a73b7c3efa21fb7", + "git_url": "https://api.github.com/repositories/67908016/git/blobs/266bb6acec4f3880e132523fb8373b55453bf9b9", + "html_url": "https://github.com/dotnet/sign/blob/7058dfa76f7ffd4653d7f78d8a73b7c3efa21fb7/src/Sign.Core/SignatureProviders/IAzureSignToolSignatureProvider.cs", + "repository": { + "id": 67908016, + "node_id": "MDEwOlJlcG9zaXRvcnk2NzkwODAxNg==", + "name": "sign", + "full_name": "dotnet/sign", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sign", + "description": "Code Signing CLI tool supporting Authenticode, NuGet, VSIX, and ClickOnce", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sign", + "forks_url": "https://api.github.com/repos/dotnet/sign/forks", + "keys_url": "https://api.github.com/repos/dotnet/sign/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sign/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sign/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sign/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sign/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sign/events", + "assignees_url": "https://api.github.com/repos/dotnet/sign/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sign/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sign/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sign/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sign/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sign/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sign/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sign/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sign/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sign/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sign/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sign/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sign/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sign/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sign/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sign/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sign/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sign/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sign/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sign/merges", + "archive_url": "https://api.github.com/repos/dotnet/sign/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sign/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sign/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sign/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sign/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sign/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sign/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sign/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sign/deployments" + }, + "score": 1 + }, + { + "name": "RootRoslynCommand.cs", + "path": "src/dotnet-roslyn-tools/Commands/RootRoslynCommand.cs", + "sha": "1d35ed10ce367f4432fe26bdc0d7122d803c8dad", + "url": "https://api.github.com/repositories/65219019/contents/src/dotnet-roslyn-tools/Commands/RootRoslynCommand.cs?ref=c0a8ae99f9d9804a147f463f279ff7e33cd70527", + "git_url": "https://api.github.com/repositories/65219019/git/blobs/1d35ed10ce367f4432fe26bdc0d7122d803c8dad", + "html_url": "https://github.com/dotnet/roslyn-tools/blob/c0a8ae99f9d9804a147f463f279ff7e33cd70527/src/dotnet-roslyn-tools/Commands/RootRoslynCommand.cs", + "repository": { + "id": 65219019, + "node_id": "MDEwOlJlcG9zaXRvcnk2NTIxOTAxOQ==", + "name": "roslyn-tools", + "full_name": "dotnet/roslyn-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-tools", + "description": "Tools used in Roslyn based repos", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-tools", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-tools/deployments" + }, + "score": 1 + }, + { + "name": "PopupControlService.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/PopupControlService.cs", + "sha": "2484530d7f5d2f4565e80d8eaf554293054e8e44", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/PopupControlService.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2484530d7f5d2f4565e80d8eaf554293054e8e44", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/PopupControlService.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "Microsoft.Data.SqlClient.TypeForwards.cs", + "path": "src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.TypeForwards.cs", + "sha": "1a726d07cc44911a23f320a094d5836cbac22b93", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.TypeForwards.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/1a726d07cc44911a23f320a094d5836cbac22b93", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.TypeForwards.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "CSharpAvoidUsingCrefTagsWithAPrefix.cs", + "path": "src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/Documentation/CSharpAvoidUsingCrefTagsWithAPrefix.cs", + "sha": "187504be64c93e26bf896a4592c1c4c40832f070", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/Documentation/CSharpAvoidUsingCrefTagsWithAPrefix.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/187504be64c93e26bf896a4592c1c4c40832f070", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/Documentation/CSharpAvoidUsingCrefTagsWithAPrefix.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ImplicitUsingsEditor.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/PropertyPages/Editors/ImplicitUsingsEditor/ImplicitUsingsEditor.cs", + "sha": "1896bd10e302bcb83d0ad23d4ad9e773ad330131", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/PropertyPages/Editors/ImplicitUsingsEditor/ImplicitUsingsEditor.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/1896bd10e302bcb83d0ad23d4ad9e773ad330131", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/PropertyPages/Editors/ImplicitUsingsEditor/ImplicitUsingsEditor.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineArgumentsDataSource.cs", + "path": "src/VisualStudio.Roslyn.SDK/ComponentDebugger/CommandLineArgumentsDataSource.cs", + "sha": "22d274bfd1758c18632ca1761eca298935bd8964", + "url": "https://api.github.com/repositories/83729993/contents/src/VisualStudio.Roslyn.SDK/ComponentDebugger/CommandLineArgumentsDataSource.cs?ref=43040ec5db1c49b82f941ba0b7fc1d64726c3aed", + "git_url": "https://api.github.com/repositories/83729993/git/blobs/22d274bfd1758c18632ca1761eca298935bd8964", + "html_url": "https://github.com/dotnet/roslyn-sdk/blob/43040ec5db1c49b82f941ba0b7fc1d64726c3aed/src/VisualStudio.Roslyn.SDK/ComponentDebugger/CommandLineArgumentsDataSource.cs", + "repository": { + "id": 83729993, + "node_id": "MDEwOlJlcG9zaXRvcnk4MzcyOTk5Mw==", + "name": "roslyn-sdk", + "full_name": "dotnet/roslyn-sdk", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-sdk", + "description": "Roslyn-SDK templates and Syntax Visualizer", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-sdk", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-sdk/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-sdk/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-sdk/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-sdk/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-sdk/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-sdk/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-sdk/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-sdk/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-sdk/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-sdk/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-sdk/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-sdk/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-sdk/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-sdk/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-sdk/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-sdk/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-sdk/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-sdk/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-sdk/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-sdk/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-sdk/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-sdk/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-sdk/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-sdk/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-sdk/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-sdk/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-sdk/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-sdk/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-sdk/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-sdk/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-sdk/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-sdk/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-sdk/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-sdk/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-sdk/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-sdk/deployments" + }, + "score": 1 + }, + { + "name": "ProjectNode.cs", + "path": "vsintegration/src/FSharp.ProjectSystem.Base/ProjectNode.cs", + "sha": "26e93f1c12574e75bdd16601928be4e26f172f46", + "url": "https://api.github.com/repositories/29048891/contents/vsintegration/src/FSharp.ProjectSystem.Base/ProjectNode.cs?ref=256c7b240e063217a51b90d8886d0b789ceb066e", + "git_url": "https://api.github.com/repositories/29048891/git/blobs/26e93f1c12574e75bdd16601928be4e26f172f46", + "html_url": "https://github.com/dotnet/fsharp/blob/256c7b240e063217a51b90d8886d0b789ceb066e/vsintegration/src/FSharp.ProjectSystem.Base/ProjectNode.cs", + "repository": { + "id": 29048891, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA0ODg5MQ==", + "name": "fsharp", + "full_name": "dotnet/fsharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/fsharp", + "description": "The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/fsharp", + "forks_url": "https://api.github.com/repos/dotnet/fsharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/fsharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/fsharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/fsharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/fsharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/fsharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/fsharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/fsharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/fsharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/fsharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/fsharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/fsharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/fsharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/fsharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/fsharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/fsharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/fsharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/fsharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/fsharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/fsharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/fsharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/fsharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/fsharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/fsharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/fsharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/fsharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/fsharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/fsharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/fsharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/fsharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/fsharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/fsharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/fsharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/fsharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/fsharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/fsharp/deployments" + }, + "score": 1 + }, + { + "name": "CheckStaticInvocation.cs", + "path": "src/Microsoft.DotNet.Interactive.CSharp/SignatureHelp/CheckStaticInvocation.cs", + "sha": "26292baaa4efb775fbafa520380f4a83246bc1cb", + "url": "https://api.github.com/repositories/235469871/contents/src/Microsoft.DotNet.Interactive.CSharp/SignatureHelp/CheckStaticInvocation.cs?ref=69a961635590e271bac141899380de1ac2089613", + "git_url": "https://api.github.com/repositories/235469871/git/blobs/26292baaa4efb775fbafa520380f4a83246bc1cb", + "html_url": "https://github.com/dotnet/interactive/blob/69a961635590e271bac141899380de1ac2089613/src/Microsoft.DotNet.Interactive.CSharp/SignatureHelp/CheckStaticInvocation.cs", + "repository": { + "id": 235469871, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzU0Njk4NzE=", + "name": "interactive", + "full_name": "dotnet/interactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/interactive", + "description": ".NET Interactive combines the power of .NET with many other languages to create notebooks, REPLs, and embedded coding experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/interactive", + "forks_url": "https://api.github.com/repos/dotnet/interactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/interactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/interactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/interactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/interactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/interactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/interactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/interactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/interactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/interactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/interactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/interactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/interactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/interactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/interactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/interactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/interactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/interactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/interactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/interactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/interactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/interactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/interactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/interactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/interactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/interactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/interactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/interactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/interactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/interactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/interactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/interactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/interactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/interactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/interactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/interactive/deployments" + }, + "score": 1 + }, + { + "name": "DecimalAnimationBase.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimationBase.cs", + "sha": "1c4734fd2a2d6360b03c4a16437273d4f1ecf585", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimationBase.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1c4734fd2a2d6360b03c4a16437273d4f1ecf585", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimationBase.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "TaskMethodInvoker.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/TaskMethodInvoker.cs", + "sha": "1912e492b6986881db2431309047e4557f3264d9", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/TaskMethodInvoker.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1912e492b6986881db2431309047e4557f3264d9", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Dispatcher/TaskMethodInvoker.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "RunResult.cs", + "path": "src/Microsoft.DotNet.Interactive.CSharpProject/RunResult.cs", + "sha": "1c73cf266c44ea6ae63709fef805f55a470199f6", + "url": "https://api.github.com/repositories/235469871/contents/src/Microsoft.DotNet.Interactive.CSharpProject/RunResult.cs?ref=69a961635590e271bac141899380de1ac2089613", + "git_url": "https://api.github.com/repositories/235469871/git/blobs/1c73cf266c44ea6ae63709fef805f55a470199f6", + "html_url": "https://github.com/dotnet/interactive/blob/69a961635590e271bac141899380de1ac2089613/src/Microsoft.DotNet.Interactive.CSharpProject/RunResult.cs", + "repository": { + "id": 235469871, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzU0Njk4NzE=", + "name": "interactive", + "full_name": "dotnet/interactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/interactive", + "description": ".NET Interactive combines the power of .NET with many other languages to create notebooks, REPLs, and embedded coding experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/interactive", + "forks_url": "https://api.github.com/repos/dotnet/interactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/interactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/interactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/interactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/interactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/interactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/interactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/interactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/interactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/interactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/interactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/interactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/interactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/interactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/interactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/interactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/interactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/interactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/interactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/interactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/interactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/interactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/interactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/interactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/interactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/interactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/interactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/interactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/interactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/interactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/interactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/interactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/interactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/interactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/interactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/interactive/deployments" + }, + "score": 1 + }, + { + "name": "RSAPKCS1SHA256SignatureDescription.cs", + "path": "src/Sign.Core/SignatureProviders/RSAPKCS1SHA256SignatureDescription.cs", + "sha": "29a596399e9b51b9dcc39309ca9b01295f5d7cb0", + "url": "https://api.github.com/repositories/67908016/contents/src/Sign.Core/SignatureProviders/RSAPKCS1SHA256SignatureDescription.cs?ref=7058dfa76f7ffd4653d7f78d8a73b7c3efa21fb7", + "git_url": "https://api.github.com/repositories/67908016/git/blobs/29a596399e9b51b9dcc39309ca9b01295f5d7cb0", + "html_url": "https://github.com/dotnet/sign/blob/7058dfa76f7ffd4653d7f78d8a73b7c3efa21fb7/src/Sign.Core/SignatureProviders/RSAPKCS1SHA256SignatureDescription.cs", + "repository": { + "id": 67908016, + "node_id": "MDEwOlJlcG9zaXRvcnk2NzkwODAxNg==", + "name": "sign", + "full_name": "dotnet/sign", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sign", + "description": "Code Signing CLI tool supporting Authenticode, NuGet, VSIX, and ClickOnce", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sign", + "forks_url": "https://api.github.com/repos/dotnet/sign/forks", + "keys_url": "https://api.github.com/repos/dotnet/sign/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sign/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sign/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sign/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sign/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sign/events", + "assignees_url": "https://api.github.com/repos/dotnet/sign/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sign/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sign/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sign/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sign/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sign/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sign/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sign/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sign/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sign/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sign/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sign/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sign/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sign/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sign/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sign/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sign/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sign/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sign/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sign/merges", + "archive_url": "https://api.github.com/repos/dotnet/sign/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sign/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sign/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sign/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sign/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sign/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sign/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sign/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sign/deployments" + }, + "score": 1 + }, + { + "name": "XmlBinaryReaderSession.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Xml/XmlBinaryReaderSession.cs", + "sha": "2d09dd6d76e6530782fa0d5cf66ccd5393bb11c9", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Xml/XmlBinaryReaderSession.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2d09dd6d76e6530782fa0d5cf66ccd5393bb11c9", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Xml/XmlBinaryReaderSession.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "SqlAuthenticationProvider.cs", + "path": "src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlAuthenticationProvider.cs", + "sha": "25e1cf006e7c7c712c0b0e89eb22245c7bf370b3", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlAuthenticationProvider.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/25e1cf006e7c7c712c0b0e89eb22245c7bf370b3", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlAuthenticationProvider.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "XPathDocumentView.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathDocumentView.cs", + "sha": "1b7ea1dd8254b479f2799c62eccbfa826ca81248", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathDocumentView.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1b7ea1dd8254b479f2799c62eccbfa826ca81248", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Cache/XPathDocumentView.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "RibbonTextBoxAutomationPeer.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonTextBoxAutomationPeer.cs", + "sha": "2c39fa20be7837f3edef0eba20ea88d5f6593546", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonTextBoxAutomationPeer.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2c39fa20be7837f3edef0eba20ea88d5f6593546", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonTextBoxAutomationPeer.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "IRegistrationExtension.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRegistrationExtension.cs", + "sha": "1811b7c11ad51611fb0e490e52c335356ffb675e", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRegistrationExtension.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1811b7c11ad51611fb0e490e52c335356ffb675e", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRegistrationExtension.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "RangeValuePattern.cs", + "path": "src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/System/Windows/Automation/RangeValuePattern.cs", + "sha": "1bdb319fef9fe2aa0250ba3d8574da300bd48979", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/System/Windows/Automation/RangeValuePattern.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1bdb319fef9fe2aa0250ba3d8574da300bd48979", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/System/Windows/Automation/RangeValuePattern.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "XmlAsyncCheckReader.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlAsyncCheckReader.cs", + "sha": "18fec09e031addb03792f9750c630bbb95e36550", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlAsyncCheckReader.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/18fec09e031addb03792f9750c630bbb95e36550", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlAsyncCheckReader.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "DataGridHeaderBorder.cs", + "path": "src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Classic/Microsoft/Windows/Themes/DataGridHeaderBorder.cs", + "sha": "2ad475f26f374a472df780c3629e7bf104a22549", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Classic/Microsoft/Windows/Themes/DataGridHeaderBorder.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2ad475f26f374a472df780c3629e7bf104a22549", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Classic/Microsoft/Windows/Themes/DataGridHeaderBorder.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "AboutDialogInfoAttribute.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs", + "sha": "2921601314c9b26cbfaebef44fa144260d985e8b", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2921601314c9b26cbfaebef44fa144260d985e8b", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "StartupTelemetryEventBuilder.cs", + "path": "src/Microsoft.DotNet.Interactive.Telemetry/StartupTelemetryEventBuilder.cs", + "sha": "1e75ef0317a3a51cbfa6a2c65260730fd5d9a37c", + "url": "https://api.github.com/repositories/235469871/contents/src/Microsoft.DotNet.Interactive.Telemetry/StartupTelemetryEventBuilder.cs?ref=69a961635590e271bac141899380de1ac2089613", + "git_url": "https://api.github.com/repositories/235469871/git/blobs/1e75ef0317a3a51cbfa6a2c65260730fd5d9a37c", + "html_url": "https://github.com/dotnet/interactive/blob/69a961635590e271bac141899380de1ac2089613/src/Microsoft.DotNet.Interactive.Telemetry/StartupTelemetryEventBuilder.cs", + "repository": { + "id": 235469871, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzU0Njk4NzE=", + "name": "interactive", + "full_name": "dotnet/interactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/interactive", + "description": ".NET Interactive combines the power of .NET with many other languages to create notebooks, REPLs, and embedded coding experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/interactive", + "forks_url": "https://api.github.com/repos/dotnet/interactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/interactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/interactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/interactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/interactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/interactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/interactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/interactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/interactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/interactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/interactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/interactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/interactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/interactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/interactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/interactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/interactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/interactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/interactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/interactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/interactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/interactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/interactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/interactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/interactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/interactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/interactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/interactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/interactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/interactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/interactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/interactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/interactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/interactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/interactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/interactive/deployments" + }, + "score": 1 + }, + { + "name": "FlowDocumentScrollViewer.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/FlowDocumentScrollViewer.cs", + "sha": "2ad80ca9fc04b9beb3fb6773fbbb8569bfcf27cc", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/FlowDocumentScrollViewer.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2ad80ca9fc04b9beb3fb6773fbbb8569bfcf27cc", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/FlowDocumentScrollViewer.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "IRazorFileChangeListener.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRazorFileChangeListener.cs", + "sha": "2a9d4ea87878a61f737929f555dc0ba471892968", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRazorFileChangeListener.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2a9d4ea87878a61f737929f555dc0ba471892968", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRazorFileChangeListener.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "ParameterValidationAnalysisResult.cs", + "path": "src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/ParameterValidationAnalysis/ParameterValidationAnalysisResult.cs", + "sha": "2d63cff69f3664de45e24a0f093de8e29f80095a", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/ParameterValidationAnalysis/ParameterValidationAnalysisResult.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/2d63cff69f3664de45e24a0f093de8e29f80095a", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/ParameterValidationAnalysis/ParameterValidationAnalysisResult.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ScrollChrome.cs", + "path": "src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Luna/Microsoft/Windows/Themes/ScrollChrome.cs", + "sha": "2bf784cb1003ff3ca16ee6eca4fffbbd38abec4c", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Luna/Microsoft/Windows/Themes/ScrollChrome.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2bf784cb1003ff3ca16ee6eca4fffbbd38abec4c", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Luna/Microsoft/Windows/Themes/ScrollChrome.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "TransactionFlowAttribute.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Description/TransactionFlowAttribute.cs", + "sha": "23f906a358b9bd4cc6d19c90fc73364a1a803f7a", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Description/TransactionFlowAttribute.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/23f906a358b9bd4cc6d19c90fc73364a1a803f7a", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Description/TransactionFlowAttribute.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "EditorconfigCommandPackage.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/EditorconfigCommandPackage.cs", + "sha": "198364b27715ab486dcb8f44242bcd3d2844a374", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/EditorconfigCommandPackage.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/198364b27715ab486dcb8f44242bcd3d2844a374", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/EditorconfigCommandPackage.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "IConfigurationSyncService.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IConfigurationSyncService.cs", + "sha": "26afc5b96775c7939f87bc69164b42b58373e724", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IConfigurationSyncService.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/26afc5b96775c7939f87bc69164b42b58373e724", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IConfigurationSyncService.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "DefaultDynamicDocumentContainer.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultDynamicDocumentContainer.cs", + "sha": "1f4f8d977458f6c34839130600505137fd06dace", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultDynamicDocumentContainer.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1f4f8d977458f6c34839130600505137fd06dace", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultDynamicDocumentContainer.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "Rotation3DAnimation.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimation.cs", + "sha": "27e3bda1be0e7abb2be85ce6328b3bfba8bec45d", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimation.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/27e3bda1be0e7abb2be85ce6328b3bfba8bec45d", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimation.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "TextMessageEncoder.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/TextMessageEncoder.cs", + "sha": "2ad08c9358edb40d1148a9652330211d8a85bd2f", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/TextMessageEncoder.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2ad08c9358edb40d1148a9652330211d8a85bd2f", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/TextMessageEncoder.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "ReliableOutputConnection.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/ReliableOutputConnection.cs", + "sha": "2b5248fd433a1d4d2700a335dbbf8b987f7cdfd7", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/ReliableOutputConnection.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2b5248fd433a1d4d2700a335dbbf8b987f7cdfd7", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/ReliableOutputConnection.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/Microsoft.Crank.Jobs.Bombardier/Program.cs", + "sha": "24a35c28d7b71e040828eb449d0b60cdb408e416", + "url": "https://api.github.com/repositories/257738951/contents/src/Microsoft.Crank.Jobs.Bombardier/Program.cs?ref=20fd95ee1a91b7030058745e620b757d795c6d7a", + "git_url": "https://api.github.com/repositories/257738951/git/blobs/24a35c28d7b71e040828eb449d0b60cdb408e416", + "html_url": "https://github.com/dotnet/crank/blob/20fd95ee1a91b7030058745e620b757d795c6d7a/src/Microsoft.Crank.Jobs.Bombardier/Program.cs", + "repository": { + "id": 257738951, + "node_id": "MDEwOlJlcG9zaXRvcnkyNTc3Mzg5NTE=", + "name": "crank", + "full_name": "dotnet/crank", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/crank", + "description": "Benchmarking infrastructure for applications", + "fork": false, + "url": "https://api.github.com/repos/dotnet/crank", + "forks_url": "https://api.github.com/repos/dotnet/crank/forks", + "keys_url": "https://api.github.com/repos/dotnet/crank/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/crank/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/crank/teams", + "hooks_url": "https://api.github.com/repos/dotnet/crank/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/crank/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/crank/events", + "assignees_url": "https://api.github.com/repos/dotnet/crank/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/crank/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/crank/tags", + "blobs_url": "https://api.github.com/repos/dotnet/crank/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/crank/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/crank/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/crank/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/crank/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/crank/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/crank/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/crank/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/crank/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/crank/subscription", + "commits_url": "https://api.github.com/repos/dotnet/crank/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/crank/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/crank/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/crank/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/crank/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/crank/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/crank/merges", + "archive_url": "https://api.github.com/repos/dotnet/crank/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/crank/downloads", + "issues_url": "https://api.github.com/repos/dotnet/crank/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/crank/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/crank/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/crank/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/crank/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/crank/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/crank/deployments" + }, + "score": 1 + }, + { + "name": "CopyAnalysisContext.cs", + "path": "src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/CopyAnalysis/CopyAnalysisContext.cs", + "sha": "25ebcb3369d03e882d43a986d0ddd406261c3312", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/CopyAnalysis/CopyAnalysisContext.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/25ebcb3369d03e882d43a986d0ddd406261c3312", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/CopyAnalysis/CopyAnalysisContext.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "RazorLogHubTraceProvider.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/Logging/RazorLogHubTraceProvider.cs", + "sha": "1eed50e2aa699dfee649d5c0d4365e1e5ec5541b", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/Logging/RazorLogHubTraceProvider.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1eed50e2aa699dfee649d5c0d4365e1e5ec5541b", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/Logging/RazorLogHubTraceProvider.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "CSharpFormatter.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/CSharpFormatter.cs", + "sha": "1e527d636816e600c0bfa054f5c05887c5f55c10", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/CSharpFormatter.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1e527d636816e600c0bfa054f5c05887c5f55c10", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/CSharpFormatter.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "IFormattingPass.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/IFormattingPass.cs", + "sha": "1c88df4ae3290b499313282b2483604ff9460520", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/IFormattingPass.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1c88df4ae3290b499313282b2483604ff9460520", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/IFormattingPass.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "SymbolIsBannedInAnalyzersTests.cs", + "path": "src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/SymbolIsBannedInAnalyzersTests.cs", + "sha": "29ec5f76f3f088806eb15ce1f0c2b66bac710c9c", + "url": "https://api.github.com/repositories/36946704/contents/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/SymbolIsBannedInAnalyzersTests.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/29ec5f76f3f088806eb15ce1f0c2b66bac710c9c", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/SymbolIsBannedInAnalyzersTests.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/jit-dasm-pmi/Program.cs", + "sha": "2051e1ec9ee7a435f1c0976c5bfaa02094ec0bc4", + "url": "https://api.github.com/repositories/58085226/contents/src/jit-dasm-pmi/Program.cs?ref=2ee1e8ac13f646376effa1522c92881a468e89bb", + "git_url": "https://api.github.com/repositories/58085226/git/blobs/2051e1ec9ee7a435f1c0976c5bfaa02094ec0bc4", + "html_url": "https://github.com/dotnet/jitutils/blob/2ee1e8ac13f646376effa1522c92881a468e89bb/src/jit-dasm-pmi/Program.cs", + "repository": { + "id": 58085226, + "node_id": "MDEwOlJlcG9zaXRvcnk1ODA4NTIyNg==", + "name": "jitutils", + "full_name": "dotnet/jitutils", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/jitutils", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/jitutils", + "forks_url": "https://api.github.com/repos/dotnet/jitutils/forks", + "keys_url": "https://api.github.com/repos/dotnet/jitutils/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/jitutils/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/jitutils/teams", + "hooks_url": "https://api.github.com/repos/dotnet/jitutils/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/jitutils/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/jitutils/events", + "assignees_url": "https://api.github.com/repos/dotnet/jitutils/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/jitutils/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/jitutils/tags", + "blobs_url": "https://api.github.com/repos/dotnet/jitutils/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/jitutils/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/jitutils/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/jitutils/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/jitutils/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/jitutils/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/jitutils/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/jitutils/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/jitutils/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/jitutils/subscription", + "commits_url": "https://api.github.com/repos/dotnet/jitutils/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/jitutils/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/jitutils/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/jitutils/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/jitutils/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/jitutils/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/jitutils/merges", + "archive_url": "https://api.github.com/repos/dotnet/jitutils/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/jitutils/downloads", + "issues_url": "https://api.github.com/repos/dotnet/jitutils/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/jitutils/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/jitutils/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/jitutils/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/jitutils/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/jitutils/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/jitutils/deployments" + }, + "score": 1 + }, + { + "name": "DoNotNameEnumValuesReserved.cs", + "path": "src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs", + "sha": "2bdb0e29b45d9af91a7272dc293956e6e3045032", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/2bdb0e29b45d9af91a7272dc293956e6e3045032", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "UniqueId.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Xml/UniqueId.cs", + "sha": "1d729f71e33c7d361a66af761f1da2da7c375a11", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Xml/UniqueId.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1d729f71e33c7d361a66af761f1da2da7c375a11", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Xml/UniqueId.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "FolderWorkspace_VisualBasicProjectLoader.cs", + "path": "src/Workspaces/FolderWorkspace_VisualBasicProjectLoader.cs", + "sha": "1f50e45af63481ca6baf4036aba62df22ac11b2b", + "url": "https://api.github.com/repositories/170942990/contents/src/Workspaces/FolderWorkspace_VisualBasicProjectLoader.cs?ref=6a6ebab20275991239c0224b56959f9d5537a280", + "git_url": "https://api.github.com/repositories/170942990/git/blobs/1f50e45af63481ca6baf4036aba62df22ac11b2b", + "html_url": "https://github.com/dotnet/format/blob/6a6ebab20275991239c0224b56959f9d5537a280/src/Workspaces/FolderWorkspace_VisualBasicProjectLoader.cs", + "repository": { + "id": 170942990, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzA5NDI5OTA=", + "name": "format", + "full_name": "dotnet/format", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/format", + "description": "Home for the dotnet-format command", + "fork": false, + "url": "https://api.github.com/repos/dotnet/format", + "forks_url": "https://api.github.com/repos/dotnet/format/forks", + "keys_url": "https://api.github.com/repos/dotnet/format/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/format/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/format/teams", + "hooks_url": "https://api.github.com/repos/dotnet/format/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/format/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/format/events", + "assignees_url": "https://api.github.com/repos/dotnet/format/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/format/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/format/tags", + "blobs_url": "https://api.github.com/repos/dotnet/format/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/format/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/format/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/format/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/format/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/format/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/format/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/format/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/format/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/format/subscription", + "commits_url": "https://api.github.com/repos/dotnet/format/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/format/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/format/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/format/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/format/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/format/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/format/merges", + "archive_url": "https://api.github.com/repos/dotnet/format/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/format/downloads", + "issues_url": "https://api.github.com/repos/dotnet/format/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/format/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/format/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/format/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/format/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/format/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/format/deployments" + }, + "score": 1 + }, + { + "name": "SerializerWriterEventHandlers.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Documents/Serialization/SerializerWriterEventHandlers.cs", + "sha": "17e1c646fe5ea51ea892d28f88bc94729e5106ea", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Documents/Serialization/SerializerWriterEventHandlers.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/17e1c646fe5ea51ea892d28f88bc94729e5106ea", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Documents/Serialization/SerializerWriterEventHandlers.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/1. A Murder Mystery/Program.cs", + "sha": "1f057f1fa881a5164eb741046c3f5cebde01223c", + "url": "https://api.github.com/repositories/173785725/contents/src/1.%20A%20Murder%20Mystery/Program.cs?ref=4a8f76a3605b28406670db0684f14d1f521f291d", + "git_url": "https://api.github.com/repositories/173785725/git/blobs/1f057f1fa881a5164eb741046c3f5cebde01223c", + "html_url": "https://github.com/dotnet/mbmlbook/blob/4a8f76a3605b28406670db0684f14d1f521f291d/src/1.%20A%20Murder%20Mystery/Program.cs", + "repository": { + "id": 173785725, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzM3ODU3MjU=", + "name": "mbmlbook", + "full_name": "dotnet/mbmlbook", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/mbmlbook", + "description": "Sample code for the Model-Based Machine Learning book.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/mbmlbook", + "forks_url": "https://api.github.com/repos/dotnet/mbmlbook/forks", + "keys_url": "https://api.github.com/repos/dotnet/mbmlbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/mbmlbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/mbmlbook/teams", + "hooks_url": "https://api.github.com/repos/dotnet/mbmlbook/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/mbmlbook/events", + "assignees_url": "https://api.github.com/repos/dotnet/mbmlbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/mbmlbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/mbmlbook/tags", + "blobs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/mbmlbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/mbmlbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/mbmlbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/mbmlbook/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/mbmlbook/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/mbmlbook/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/mbmlbook/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/mbmlbook/subscription", + "commits_url": "https://api.github.com/repos/dotnet/mbmlbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/mbmlbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/mbmlbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/mbmlbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/mbmlbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/mbmlbook/merges", + "archive_url": "https://api.github.com/repos/dotnet/mbmlbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/mbmlbook/downloads", + "issues_url": "https://api.github.com/repos/dotnet/mbmlbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/mbmlbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/mbmlbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/mbmlbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/mbmlbook/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/mbmlbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/mbmlbook/deployments" + }, + "score": 1 + }, + { + "name": "RecipientServiceModelSecurityTokenRequirement.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Security/Tokens/RecipientServiceModelSecurityTokenRequirement.cs", + "sha": "1dd373ec0f411c8a681b69170ed81eace00483fe", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Security/Tokens/RecipientServiceModelSecurityTokenRequirement.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1dd373ec0f411c8a681b69170ed81eace00483fe", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Security/Tokens/RecipientServiceModelSecurityTokenRequirement.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "RegistrationExtensionResult.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RegistrationExtensionResult.cs", + "sha": "1e615256af768193b88c34334913a1f1ae11e4f5", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RegistrationExtensionResult.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1e615256af768193b88c34334913a1f1ae11e4f5", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RegistrationExtensionResult.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "VBWarningsValueProvider.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Properties/InterceptedProjectProperties/BuildPropertyPage/VBWarningsValueProvider.cs", + "sha": "1d0f111dd334ab3853f5214a3363717666c9efc0", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Properties/InterceptedProjectProperties/BuildPropertyPage/VBWarningsValueProvider.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/1d0f111dd334ab3853f5214a3363717666c9efc0", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Properties/InterceptedProjectProperties/BuildPropertyPage/VBWarningsValueProvider.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "DebugCriticalHandleMinusOneIsInvalid.cs", + "path": "src/Microsoft.Data.SqlClient/netcore/src/Common/src/System/Net/DebugCriticalHandleMinusOneIsInvalid.cs", + "sha": "1949341de2afb82c832a81137fce9cd6d6fddeac", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/netcore/src/Common/src/System/Net/DebugCriticalHandleMinusOneIsInvalid.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/1949341de2afb82c832a81137fce9cd6d6fddeac", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/netcore/src/Common/src/System/Net/DebugCriticalHandleMinusOneIsInvalid.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "LogLevel.cs", + "path": "src/nuget-client/src/NuGet.Core/NuGet.Common/Errors/LogLevel.cs", + "sha": "26b8b5e1df8c5dfec23e2c69f1eab4d56004698e", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Core/NuGet.Common/Errors/LogLevel.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/26b8b5e1df8c5dfec23e2c69f1eab4d56004698e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Core/NuGet.Common/Errors/LogLevel.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "HelpContext.cs", + "path": "src/command-line-api/src/System.CommandLine/Help/HelpContext.cs", + "sha": "20e0946418287b7e47b54503716a82c7bc77d23e", + "url": "https://api.github.com/repositories/550902717/contents/src/command-line-api/src/System.CommandLine/Help/HelpContext.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/20e0946418287b7e47b54503716a82c7bc77d23e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/command-line-api/src/System.CommandLine/Help/HelpContext.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "XmlValidatingReaderImpl.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlValidatingReaderImpl.cs", + "sha": "238e0b66a2891a641a4f9a7b7429ad243294aebd", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlValidatingReaderImpl.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/238e0b66a2891a641a4f9a7b7429ad243294aebd", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Core/XmlValidatingReaderImpl.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "IObjectWritable.cs", + "path": "src/Compilers/Core/Portable/Serialization/IObjectWritable.cs", + "sha": "2bd45e56d1d8f2ebf518a673cf445ef264528c77", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Serialization/IObjectWritable.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/2bd45e56d1d8f2ebf518a673cf445ef264528c77", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Serialization/IObjectWritable.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "AuthHelper.cs", + "path": "src/Microsoft.DotNet.ImageBuilder/src/AuthHelper.cs", + "sha": "192fde01a93139d7236ec70cf649cf99134af2a1", + "url": "https://api.github.com/repositories/89951797/contents/src/Microsoft.DotNet.ImageBuilder/src/AuthHelper.cs?ref=9791b1592829efbcd4da15a4aabed083b66615b7", + "git_url": "https://api.github.com/repositories/89951797/git/blobs/192fde01a93139d7236ec70cf649cf99134af2a1", + "html_url": "https://github.com/dotnet/docker-tools/blob/9791b1592829efbcd4da15a4aabed083b66615b7/src/Microsoft.DotNet.ImageBuilder/src/AuthHelper.cs", + "repository": { + "id": 89951797, + "node_id": "MDEwOlJlcG9zaXRvcnk4OTk1MTc5Nw==", + "name": "docker-tools", + "full_name": "dotnet/docker-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docker-tools", + "description": "This is a repo to house some common tools for our various docker repos. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docker-tools", + "forks_url": "https://api.github.com/repos/dotnet/docker-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/docker-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docker-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docker-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docker-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docker-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docker-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/docker-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docker-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docker-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docker-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docker-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docker-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docker-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docker-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docker-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docker-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docker-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docker-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docker-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docker-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docker-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docker-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docker-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docker-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docker-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docker-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/docker-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docker-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docker-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docker-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docker-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docker-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docker-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docker-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docker-tools/deployments" + }, + "score": 1 + }, + { + "name": "GitService.cs", + "path": "src/Microsoft.DotNet.ImageBuilder/src/GitService.cs", + "sha": "171258d67ebdd7ed87b688d26ab4d01ecac1f6e1", + "url": "https://api.github.com/repositories/89951797/contents/src/Microsoft.DotNet.ImageBuilder/src/GitService.cs?ref=9791b1592829efbcd4da15a4aabed083b66615b7", + "git_url": "https://api.github.com/repositories/89951797/git/blobs/171258d67ebdd7ed87b688d26ab4d01ecac1f6e1", + "html_url": "https://github.com/dotnet/docker-tools/blob/9791b1592829efbcd4da15a4aabed083b66615b7/src/Microsoft.DotNet.ImageBuilder/src/GitService.cs", + "repository": { + "id": 89951797, + "node_id": "MDEwOlJlcG9zaXRvcnk4OTk1MTc5Nw==", + "name": "docker-tools", + "full_name": "dotnet/docker-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/docker-tools", + "description": "This is a repo to house some common tools for our various docker repos. ", + "fork": false, + "url": "https://api.github.com/repos/dotnet/docker-tools", + "forks_url": "https://api.github.com/repos/dotnet/docker-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/docker-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/docker-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/docker-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/docker-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/docker-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/docker-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/docker-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/docker-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/docker-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/docker-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/docker-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/docker-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/docker-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/docker-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/docker-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/docker-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/docker-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/docker-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/docker-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/docker-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/docker-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/docker-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/docker-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/docker-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/docker-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/docker-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/docker-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/docker-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/docker-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/docker-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/docker-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/docker-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/docker-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/docker-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/docker-tools/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/6-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/6-codeSearch.json new file mode 100644 index 00000000000..2e48d0b9c4d --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/6-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=7" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "RibbonContentPresenter.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonContentPresenter.cs", + "sha": "29fc7f9cfb701729c14d7221f00e36ac00735d0a", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonContentPresenter.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/29fc7f9cfb701729c14d7221f00e36ac00735d0a", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonContentPresenter.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "program.cs", + "path": "snippets/csharp/VS_Snippets_CFX/dynamicactivitycreation/cs/program.cs", + "sha": "181d88b9f4d887afdbe7beae5ce7f687116341e1", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/VS_Snippets_CFX/dynamicactivitycreation/cs/program.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/181d88b9f4d887afdbe7beae5ce7f687116341e1", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/VS_Snippets_CFX/dynamicactivitycreation/cs/program.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "Tom.cs", + "path": "src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/Tom.cs", + "sha": "24d897d711d38a81564c5cbc7b765edf4cd91bd1", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/Tom.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/24d897d711d38a81564c5cbc7b765edf4cd91bd1", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/Tom.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "WorkspaceHacks.cs", + "path": "src/SourceBrowser/src/HtmlGenerator/Utilities/WorkspaceHacks.cs", + "sha": "2a2252251efa3a33ecb7e240ea7d99f77473b2e3", + "url": "https://api.github.com/repositories/70289307/contents/src/SourceBrowser/src/HtmlGenerator/Utilities/WorkspaceHacks.cs?ref=6d243919ae9c95fbed27773657107800854e122a", + "git_url": "https://api.github.com/repositories/70289307/git/blobs/2a2252251efa3a33ecb7e240ea7d99f77473b2e3", + "html_url": "https://github.com/dotnet/source-indexer/blob/6d243919ae9c95fbed27773657107800854e122a/src/SourceBrowser/src/HtmlGenerator/Utilities/WorkspaceHacks.cs", + "repository": { + "id": 70289307, + "node_id": "MDEwOlJlcG9zaXRvcnk3MDI4OTMwNw==", + "name": "source-indexer", + "full_name": "dotnet/source-indexer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-indexer", + "description": "This repo contains the code for building http://source.dot.net", + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-indexer", + "forks_url": "https://api.github.com/repos/dotnet/source-indexer/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-indexer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-indexer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-indexer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-indexer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-indexer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-indexer/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-indexer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-indexer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-indexer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-indexer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-indexer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-indexer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-indexer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-indexer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-indexer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-indexer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-indexer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-indexer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-indexer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-indexer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-indexer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-indexer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-indexer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-indexer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-indexer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-indexer/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-indexer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-indexer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-indexer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-indexer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-indexer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-indexer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-indexer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-indexer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-indexer/deployments" + }, + "score": 1 + }, + { + "name": "System.Printing.PrintCapabilities.cs", + "path": "src/Microsoft.DotNet.Wpf/cycle-breakers/ReachFramework/System.Printing.PrintCapabilities.cs", + "sha": "235104aef722554c5d019d74e358d381972a225b", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/cycle-breakers/ReachFramework/System.Printing.PrintCapabilities.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/235104aef722554c5d019d74e358d381972a225b", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/cycle-breakers/ReachFramework/System.Printing.PrintCapabilities.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "Logger.EmptyDisposable.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Logger.EmptyDisposable.cs", + "sha": "243828c929e9e778d741f4d62d0f1aa0e6ea4c39", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Logger.EmptyDisposable.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/243828c929e9e778d741f4d62d0f1aa0e6ea4c39", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Logger.EmptyDisposable.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "IdentifiersShouldHaveCorrectPrefix.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs", + "sha": "22fe2f10950067a7a14cdad00c2c3b1567c2ce1e", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/22fe2f10950067a7a14cdad00c2c3b1567c2ce1e", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "dotnet-template-samples/content/15-computed-symbol/MyProject.Con/Program.cs", + "sha": "295224e56678b28813fb5f4cbcca933af888a85f", + "url": "https://api.github.com/repositories/62173688/contents/dotnet-template-samples/content/15-computed-symbol/MyProject.Con/Program.cs?ref=cf588429b4b251ae42c84ed966112e6c6d082448", + "git_url": "https://api.github.com/repositories/62173688/git/blobs/295224e56678b28813fb5f4cbcca933af888a85f", + "html_url": "https://github.com/dotnet/templating/blob/cf588429b4b251ae42c84ed966112e6c6d082448/dotnet-template-samples/content/15-computed-symbol/MyProject.Con/Program.cs", + "repository": { + "id": 62173688, + "node_id": "MDEwOlJlcG9zaXRvcnk2MjE3MzY4OA==", + "name": "templating", + "full_name": "dotnet/templating", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templating", + "description": "This repo contains the Template Engine which is used by dotnet new", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templating", + "forks_url": "https://api.github.com/repos/dotnet/templating/forks", + "keys_url": "https://api.github.com/repos/dotnet/templating/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templating/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templating/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templating/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templating/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templating/events", + "assignees_url": "https://api.github.com/repos/dotnet/templating/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templating/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templating/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templating/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templating/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templating/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templating/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templating/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templating/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templating/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templating/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templating/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templating/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templating/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templating/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templating/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templating/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templating/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templating/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templating/merges", + "archive_url": "https://api.github.com/repos/dotnet/templating/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templating/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templating/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templating/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templating/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templating/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templating/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templating/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templating/deployments" + }, + "score": 1 + }, + { + "name": "HierarchicalVirtualizationConstraints.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/Primitives/HierarchicalVirtualizationConstraints.cs", + "sha": "25bf9dbe67a5cb89f666928d9ccbf0d230678754", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/Primitives/HierarchicalVirtualizationConstraints.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/25bf9dbe67a5cb89f666928d9ccbf0d230678754", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/Primitives/HierarchicalVirtualizationConstraints.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "IMonitorProjectConfigurationFilePathHandler.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IMonitorProjectConfigurationFilePathHandler.cs", + "sha": "2cef6a5cfe1d30aed28843afa3bb2aea2a0d4d65", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IMonitorProjectConfigurationFilePathHandler.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2cef6a5cfe1d30aed28843afa3bb2aea2a0d4d65", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IMonitorProjectConfigurationFilePathHandler.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "VisualStudioDocumentTrackerFactory.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/VisualStudioDocumentTrackerFactory.cs", + "sha": "1e3a2b63a6f8fbe431b41440cf5b77671c9134ec", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/VisualStudioDocumentTrackerFactory.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1e3a2b63a6f8fbe431b41440cf5b77671c9134ec", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/VisualStudioDocumentTrackerFactory.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "SourceTextSourceLineCollection.cs", + "path": "src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/SourceTextSourceLineCollection.cs", + "sha": "1a3381f72866e8b42483ddcd0092fed0d9fe6639", + "url": "https://api.github.com/repositories/159564733/contents/src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/SourceTextSourceLineCollection.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1a3381f72866e8b42483ddcd0092fed0d9fe6639", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/SourceTextSourceLineCollection.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "DefaultVisualStudioDocumentTracker.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs", + "sha": "199916bec912faab3ecd3918389f1a4a9fe42721", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/199916bec912faab3ecd3918389f1a4a9fe42721", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "SubstreamReader.cs", + "path": "src/Nerdbank.Streams/SubstreamReader.cs", + "sha": "1ec7a301c4287c600e6859102c3f46c7c8ce890d", + "url": "https://api.github.com/repositories/43795655/contents/src/Nerdbank.Streams/SubstreamReader.cs?ref=5d1c8b25e55e88d5e1f40a879f79069ebcc914ce", + "git_url": "https://api.github.com/repositories/43795655/git/blobs/1ec7a301c4287c600e6859102c3f46c7c8ce890d", + "html_url": "https://github.com/dotnet/Nerdbank.Streams/blob/5d1c8b25e55e88d5e1f40a879f79069ebcc914ce/src/Nerdbank.Streams/SubstreamReader.cs", + "repository": { + "id": 43795655, + "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==", + "name": "Nerdbank.Streams", + "full_name": "dotnet/Nerdbank.Streams", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Nerdbank.Streams", + "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Nerdbank.Streams", + "forks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/forks", + "keys_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/events", + "assignees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/merges", + "archive_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/deployments" + }, + "score": 1 + }, + { + "name": "ConsoleExtensions.cs", + "path": "src/command-line-api/src/System.CommandLine/ConsoleExtensions.cs", + "sha": "2705a8e287f704694e69d45d6938d720a321c6d5", + "url": "https://api.github.com/repositories/550902717/contents/src/command-line-api/src/System.CommandLine/ConsoleExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2705a8e287f704694e69d45d6938d720a321c6d5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/command-line-api/src/System.CommandLine/ConsoleExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RestoreTask.cs", + "path": "src/nuget-client/src/NuGet.Core/NuGet.Build.Tasks/RestoreTask.cs", + "sha": "1e3760e811b01a1aa4c4df7b45cecc1540019d9f", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Core/NuGet.Build.Tasks/RestoreTask.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1e3760e811b01a1aa4c4df7b45cecc1540019d9f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Core/NuGet.Build.Tasks/RestoreTask.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "EmbeddedSourceNoCode.cs", + "path": "src/PdbTestResources/Resources/EmbeddedSourceNoCode.cs", + "sha": "16f00c4f18f68675d4a4ae528c6fe99f28d1fe66", + "url": "https://api.github.com/repositories/80169646/contents/src/PdbTestResources/Resources/EmbeddedSourceNoCode.cs?ref=279e59e8e601624f084ed772a2bff2ef5c316b57", + "git_url": "https://api.github.com/repositories/80169646/git/blobs/16f00c4f18f68675d4a4ae528c6fe99f28d1fe66", + "html_url": "https://github.com/dotnet/symreader-converter/blob/279e59e8e601624f084ed772a2bff2ef5c316b57/src/PdbTestResources/Resources/EmbeddedSourceNoCode.cs", + "repository": { + "id": 80169646, + "node_id": "MDEwOlJlcG9zaXRvcnk4MDE2OTY0Ng==", + "name": "symreader-converter", + "full_name": "dotnet/symreader-converter", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader-converter", + "description": "Converts between Windows PDB and Portable PDB formats.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader-converter", + "forks_url": "https://api.github.com/repos/dotnet/symreader-converter/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader-converter/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader-converter/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader-converter/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader-converter/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader-converter/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader-converter/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader-converter/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader-converter/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader-converter/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader-converter/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader-converter/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader-converter/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader-converter/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader-converter/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader-converter/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader-converter/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader-converter/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader-converter/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader-converter/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader-converter/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader-converter/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader-converter/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader-converter/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader-converter/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader-converter/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader-converter/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader-converter/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader-converter/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader-converter/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader-converter/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader-converter/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader-converter/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader-converter/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader-converter/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader-converter/deployments" + }, + "score": 1 + }, + { + "name": "CodeQuality_Approved.cs", + "path": "src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/MS/Internal/Automation/CodeQuality_Approved.cs", + "sha": "2b280027ba41c1942e1c6788086d2ebb90c894e5", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/MS/Internal/Automation/CodeQuality_Approved.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2b280027ba41c1942e1c6788086d2ebb90c894e5", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClient/MS/Internal/Automation/CodeQuality_Approved.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "RoslynNavigateToItem.cs", + "path": "src/Features/Core/Portable/NavigateTo/RoslynNavigateToItem.cs", + "sha": "25215ea1b109321c975384bf4098a2a4d4f14bd7", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/NavigateTo/RoslynNavigateToItem.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/25215ea1b109321c975384bf4098a2a4d4f14bd7", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/NavigateTo/RoslynNavigateToItem.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "RibbonSplitButtonAutomationPeer.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonSplitButtonAutomationPeer.cs", + "sha": "29d354af211a57019e4d68e4e3e5873f6ee24a45", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonSplitButtonAutomationPeer.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/29d354af211a57019e4d68e4e3e5873f6ee24a45", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonSplitButtonAutomationPeer.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "AzureBlobModelHolderFactory.cs", + "path": "src/PredictionService/AzureBlobModelHolderFactory.cs", + "sha": "2a58833a4fe2c33ac46b28454049778edb3b1fa1", + "url": "https://api.github.com/repositories/271885874/contents/src/PredictionService/AzureBlobModelHolderFactory.cs?ref=fb3f0b788204a39793ccaf75a2aa55ec835e907e", + "git_url": "https://api.github.com/repositories/271885874/git/blobs/2a58833a4fe2c33ac46b28454049778edb3b1fa1", + "html_url": "https://github.com/dotnet/issue-labeler/blob/fb3f0b788204a39793ccaf75a2aa55ec835e907e/src/PredictionService/AzureBlobModelHolderFactory.cs", + "repository": { + "id": 271885874, + "node_id": "MDEwOlJlcG9zaXRvcnkyNzE4ODU4NzQ=", + "name": "issue-labeler", + "full_name": "dotnet/issue-labeler", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/issue-labeler", + "description": "An issue labeler bot for use in dotnet repositories.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/issue-labeler", + "forks_url": "https://api.github.com/repos/dotnet/issue-labeler/forks", + "keys_url": "https://api.github.com/repos/dotnet/issue-labeler/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/issue-labeler/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/issue-labeler/teams", + "hooks_url": "https://api.github.com/repos/dotnet/issue-labeler/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/issue-labeler/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/issue-labeler/events", + "assignees_url": "https://api.github.com/repos/dotnet/issue-labeler/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/issue-labeler/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/issue-labeler/tags", + "blobs_url": "https://api.github.com/repos/dotnet/issue-labeler/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/issue-labeler/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/issue-labeler/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/issue-labeler/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/issue-labeler/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/issue-labeler/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/issue-labeler/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/issue-labeler/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/issue-labeler/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/issue-labeler/subscription", + "commits_url": "https://api.github.com/repos/dotnet/issue-labeler/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/issue-labeler/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/issue-labeler/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/issue-labeler/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/issue-labeler/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/issue-labeler/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/issue-labeler/merges", + "archive_url": "https://api.github.com/repos/dotnet/issue-labeler/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/issue-labeler/downloads", + "issues_url": "https://api.github.com/repos/dotnet/issue-labeler/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/issue-labeler/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/issue-labeler/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/issue-labeler/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/issue-labeler/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/issue-labeler/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/issue-labeler/deployments" + }, + "score": 1 + }, + { + "name": "WindowsListViewScroll.cs", + "path": "src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/WindowsListViewScroll.cs", + "sha": "2086085df29ea8c6e4a466306c65445859cfc055", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/WindowsListViewScroll.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2086085df29ea8c6e4a466306c65445859cfc055", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/WindowsListViewScroll.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "ProjectExtensions.cs", + "path": "src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs", + "sha": "25c13eac47afa243beb733628bb3598e3b9e194d", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/25c13eac47afa243beb733628bb3598e3b9e194d", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "RibbonTextBox.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonTextBox.cs", + "sha": "284c109ca920ef384459119ec07e8c384657970d", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonTextBox.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/284c109ca920ef384459119ec07e8c384657970d", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonTextBox.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "FrameworkInfo.cs", + "path": "src/dotnet-svcutil/lib/src/Shared/FrameworkInfo.cs", + "sha": "2a9a4d50635622f20384f6f05610d156665443bc", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/Shared/FrameworkInfo.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2a9a4d50635622f20384f6f05610d156665443bc", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/Shared/FrameworkInfo.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "PrivacyNoticeBindingElement.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/PrivacyNoticeBindingElement.cs", + "sha": "19668e733a899d9cba2ce858b73d2ec4b6b7e8b5", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/PrivacyNoticeBindingElement.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/19668e733a899d9cba2ce858b73d2ec4b6b7e8b5", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/PrivacyNoticeBindingElement.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "RequestDescriptor.cs", + "path": "src/Microsoft.DotNet.Interactive.CSharpProject/RequestDescriptor.cs", + "sha": "298df62c5a6ce1d2f6346efb00214262e251e485", + "url": "https://api.github.com/repositories/235469871/contents/src/Microsoft.DotNet.Interactive.CSharpProject/RequestDescriptor.cs?ref=69a961635590e271bac141899380de1ac2089613", + "git_url": "https://api.github.com/repositories/235469871/git/blobs/298df62c5a6ce1d2f6346efb00214262e251e485", + "html_url": "https://github.com/dotnet/interactive/blob/69a961635590e271bac141899380de1ac2089613/src/Microsoft.DotNet.Interactive.CSharpProject/RequestDescriptor.cs", + "repository": { + "id": 235469871, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzU0Njk4NzE=", + "name": "interactive", + "full_name": "dotnet/interactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/interactive", + "description": ".NET Interactive combines the power of .NET with many other languages to create notebooks, REPLs, and embedded coding experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/interactive", + "forks_url": "https://api.github.com/repos/dotnet/interactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/interactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/interactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/interactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/interactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/interactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/interactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/interactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/interactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/interactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/interactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/interactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/interactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/interactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/interactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/interactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/interactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/interactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/interactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/interactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/interactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/interactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/interactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/interactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/interactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/interactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/interactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/interactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/interactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/interactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/interactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/interactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/interactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/interactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/interactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/interactive/deployments" + }, + "score": 1 + }, + { + "name": "ConfigUpdaterStep.cs", + "path": "src/extensions/default/Microsoft.DotNet.UpgradeAssistant.Steps.Configuration/ConfigUpdaterStep.cs", + "sha": "1fa320ed96be2f06b01abb602db74005da5d99c2", + "url": "https://api.github.com/repositories/332061101/contents/src/extensions/default/Microsoft.DotNet.UpgradeAssistant.Steps.Configuration/ConfigUpdaterStep.cs?ref=be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45", + "git_url": "https://api.github.com/repositories/332061101/git/blobs/1fa320ed96be2f06b01abb602db74005da5d99c2", + "html_url": "https://github.com/dotnet/upgrade-assistant/blob/be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45/src/extensions/default/Microsoft.DotNet.UpgradeAssistant.Steps.Configuration/ConfigUpdaterStep.cs", + "repository": { + "id": 332061101, + "node_id": "MDEwOlJlcG9zaXRvcnkzMzIwNjExMDE=", + "name": "upgrade-assistant", + "full_name": "dotnet/upgrade-assistant", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/upgrade-assistant", + "description": "A tool to assist developers in upgrading .NET Framework applications to .NET 6 and beyond", + "fork": false, + "url": "https://api.github.com/repos/dotnet/upgrade-assistant", + "forks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/forks", + "keys_url": "https://api.github.com/repos/dotnet/upgrade-assistant/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/upgrade-assistant/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/upgrade-assistant/teams", + "hooks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/events", + "assignees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/upgrade-assistant/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/tags", + "blobs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/upgrade-assistant/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/upgrade-assistant/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscription", + "commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/upgrade-assistant/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/upgrade-assistant/merges", + "archive_url": "https://api.github.com/repos/dotnet/upgrade-assistant/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/upgrade-assistant/downloads", + "issues_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/upgrade-assistant/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/upgrade-assistant/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/upgrade-assistant/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/upgrade-assistant/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/upgrade-assistant/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/deployments" + }, + "score": 1 + }, + { + "name": "EventDescriptor.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/Diagnostics/EventDescriptor.cs", + "sha": "299fac2172cc106dee748ef559b894d867609b1a", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/Diagnostics/EventDescriptor.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/299fac2172cc106dee748ef559b894d867609b1a", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/Diagnostics/EventDescriptor.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "UapConstants.cs", + "path": "src/vstest/src/Microsoft.TestPlatform.ObjectModel/UapConstants.cs", + "sha": "2c9b2e21b2970868e891536865d4391053f9d708", + "url": "https://api.github.com/repositories/550902717/contents/src/vstest/src/Microsoft.TestPlatform.ObjectModel/UapConstants.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2c9b2e21b2970868e891536865d4391053f9d708", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/vstest/src/Microsoft.TestPlatform.ObjectModel/UapConstants.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ConsoleProjectContext.cs", + "path": "src/nuget-client/src/NuGet.Core/NuGet.PackageManagement/ConsoleProjectContext.cs", + "sha": "1b668b0daa739fabfbe3ffb449a6d83d876f4c49", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Core/NuGet.PackageManagement/ConsoleProjectContext.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1b668b0daa739fabfbe3ffb449a6d83d876f4c49", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Core/NuGet.PackageManagement/ConsoleProjectContext.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "StateMachineInfo.cs", + "path": "src/Features/Core/Portable/EditAndContinue/StateMachineInfo.cs", + "sha": "1f83c1293405f7ae4f3dfd406e7a76c6b6c65ba8", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/EditAndContinue/StateMachineInfo.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1f83c1293405f7ae4f3dfd406e7a76c6b6c65ba8", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/EditAndContinue/StateMachineInfo.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SignatureHelpState.cs", + "path": "src/Features/Core/Portable/SignatureHelp/SignatureHelpState.cs", + "sha": "1833b15e50f6cce2468327573d069b93f27cb8af", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/SignatureHelp/SignatureHelpState.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1833b15e50f6cce2468327573d069b93f27cb8af", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/SignatureHelp/SignatureHelpState.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ReceiveSecurityHeader.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/ReceiveSecurityHeader.cs", + "sha": "262b80db4d29c7be64cdce9294a2fe0d52b769bc", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/ReceiveSecurityHeader.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/262b80db4d29c7be64cdce9294a2fe0d52b769bc", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/ReceiveSecurityHeader.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "TextDecorationLocationValidation.cs", + "path": "src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationLocationValidation.cs", + "sha": "2b5285a46cc54010ed94863fde5d9c12847c6bec", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationLocationValidation.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2b5285a46cc54010ed94863fde5d9c12847c6bec", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationLocationValidation.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "EmptyLogMessage.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Messages/EmptyLogMessage.cs", + "sha": "246c174f41ee0224c6bcfe6ce3f9759621c67e1f", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Messages/EmptyLogMessage.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/246c174f41ee0224c6bcfe6ce3f9759621c67e1f", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Wizard/Logging/Messages/EmptyLogMessage.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "CSharpResxGenerator.cs", + "path": "src/Microsoft.CodeAnalysis.ResxSourceGenerator/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/CSharpResxGenerator.cs", + "sha": "1b5bedfefc1a52c6798dcd1e1edc36db5229c390", + "url": "https://api.github.com/repositories/36946704/contents/src/Microsoft.CodeAnalysis.ResxSourceGenerator/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/CSharpResxGenerator.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/1b5bedfefc1a52c6798dcd1e1edc36db5229c390", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Microsoft.CodeAnalysis.ResxSourceGenerator/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/CSharpResxGenerator.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "XmlLocation.cs", + "path": "src/Compilers/Core/Portable/Diagnostic/XmlLocation.cs", + "sha": "191404c239695f3a5bc29155b667dda10a241291", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/Diagnostic/XmlLocation.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/191404c239695f3a5bc29155b667dda10a241291", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/Diagnostic/XmlLocation.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "VisualStudioVersion.cs", + "path": "src/dotnet-roslyn-tools/CreateReleaseTags/VisualStudioVersion.cs", + "sha": "2be3a7492b4342c9e9632c43ca5e07355ed40f0a", + "url": "https://api.github.com/repositories/65219019/contents/src/dotnet-roslyn-tools/CreateReleaseTags/VisualStudioVersion.cs?ref=c0a8ae99f9d9804a147f463f279ff7e33cd70527", + "git_url": "https://api.github.com/repositories/65219019/git/blobs/2be3a7492b4342c9e9632c43ca5e07355ed40f0a", + "html_url": "https://github.com/dotnet/roslyn-tools/blob/c0a8ae99f9d9804a147f463f279ff7e33cd70527/src/dotnet-roslyn-tools/CreateReleaseTags/VisualStudioVersion.cs", + "repository": { + "id": 65219019, + "node_id": "MDEwOlJlcG9zaXRvcnk2NTIxOTAxOQ==", + "name": "roslyn-tools", + "full_name": "dotnet/roslyn-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-tools", + "description": "Tools used in Roslyn based repos", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-tools", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-tools/deployments" + }, + "score": 1 + }, + { + "name": "ProxyFragment.cs", + "path": "src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/ProxyFragment.cs", + "sha": "1ccc4bbf7cea911b45c9525b2698a74055d6e8e1", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/ProxyFragment.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1ccc4bbf7cea911b45c9525b2698a74055d6e8e1", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/UIAutomation/UIAutomationClientSideProviders/MS/Internal/AutomationProxies/ProxyFragment.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "RazorSyntaxNodeList.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/SyntaxVisualizer/RazorSyntaxNodeList.cs", + "sha": "2ca396b07522878ecc167f88e6c5f985dc34b91b", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/SyntaxVisualizer/RazorSyntaxNodeList.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2ca396b07522878ecc167f88e6c5f985dc34b91b", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/SyntaxVisualizer/RazorSyntaxNodeList.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "ReinvokeResponse.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/ReinvokeResponse.cs", + "sha": "1dc8ef85b3931292abf3893ce7a0471d8099c5c0", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/ReinvokeResponse.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/1dc8ef85b3931292abf3893ce7a0471d8099c5c0", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/ReinvokeResponse.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "Utils.cs", + "path": "src/Microsoft.Data.SqlClient/add-ons/AzureKeyVaultProvider/Utils.cs", + "sha": "2909422c1a5bdcdf1a35d079211791140ba6d806", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/add-ons/AzureKeyVaultProvider/Utils.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/2909422c1a5bdcdf1a35d079211791140ba6d806", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/add-ons/AzureKeyVaultProvider/Utils.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "Inputs.cs", + "path": "src/3. Meeting Your Match/Inputs.cs", + "sha": "2964c292aadf2a7f689c1d5673ab8b849f5e62bd", + "url": "https://api.github.com/repositories/173785725/contents/src/3.%20Meeting%20Your%20Match/Inputs.cs?ref=4a8f76a3605b28406670db0684f14d1f521f291d", + "git_url": "https://api.github.com/repositories/173785725/git/blobs/2964c292aadf2a7f689c1d5673ab8b849f5e62bd", + "html_url": "https://github.com/dotnet/mbmlbook/blob/4a8f76a3605b28406670db0684f14d1f521f291d/src/3.%20Meeting%20Your%20Match/Inputs.cs", + "repository": { + "id": 173785725, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzM3ODU3MjU=", + "name": "mbmlbook", + "full_name": "dotnet/mbmlbook", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/mbmlbook", + "description": "Sample code for the Model-Based Machine Learning book.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/mbmlbook", + "forks_url": "https://api.github.com/repos/dotnet/mbmlbook/forks", + "keys_url": "https://api.github.com/repos/dotnet/mbmlbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/mbmlbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/mbmlbook/teams", + "hooks_url": "https://api.github.com/repos/dotnet/mbmlbook/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/mbmlbook/events", + "assignees_url": "https://api.github.com/repos/dotnet/mbmlbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/mbmlbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/mbmlbook/tags", + "blobs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/mbmlbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/mbmlbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/mbmlbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/mbmlbook/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/mbmlbook/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/mbmlbook/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/mbmlbook/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/mbmlbook/subscription", + "commits_url": "https://api.github.com/repos/dotnet/mbmlbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/mbmlbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/mbmlbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/mbmlbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/mbmlbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/mbmlbook/merges", + "archive_url": "https://api.github.com/repos/dotnet/mbmlbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/mbmlbook/downloads", + "issues_url": "https://api.github.com/repos/dotnet/mbmlbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/mbmlbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/mbmlbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/mbmlbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/mbmlbook/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/mbmlbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/mbmlbook/deployments" + }, + "score": 1 + }, + { + "name": "OwnerAnalyzer.cs", + "path": "src/nuget-client/src/NuGet.Clients/NuGet.Indexing/OwnerAnalyzer.cs", + "sha": "2ca73888414428a8ff179cb88eccc4391a90547c", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Clients/NuGet.Indexing/OwnerAnalyzer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2ca73888414428a8ff179cb88eccc4391a90547c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Clients/NuGet.Indexing/OwnerAnalyzer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "PackTask.cs", + "path": "src/nuget-client/src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTask.cs", + "sha": "20ce17bda13727ecaa3380c73305c7e57bc9c470", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTask.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/20ce17bda13727ecaa3380c73305c7e57bc9c470", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTask.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IVsProjectAdapter.cs", + "path": "src/nuget-client/src/NuGet.Clients/NuGet.VisualStudio.Common/IVsProjectAdapter.cs", + "sha": "1debd40c1c49e41fbe0ac84b0bb74aeaef7e2214", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Clients/NuGet.VisualStudio.Common/IVsProjectAdapter.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1debd40c1c49e41fbe0ac84b0bb74aeaef7e2214", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Clients/NuGet.VisualStudio.Common/IVsProjectAdapter.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ConcatenationAllocationAnalyzer.cs", + "path": "src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs", + "sha": "24b7cbd1f784c5ba14e518c859cd1105d7cf0f0c", + "url": "https://api.github.com/repositories/36946704/contents/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/24b7cbd1f784c5ba14e518c859cd1105d7cf0f0c", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/PerformanceSensitiveAnalyzers/CSharp/Analyzers/ConcatenationAllocationAnalyzer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ICollectionDebugView`1.cs", + "path": "src/Dependencies/Collections/Internal/ICollectionDebugView`1.cs", + "sha": "28bd3d44a5e76a30f85addda62debe72dc50a885", + "url": "https://api.github.com/repositories/29078997/contents/src/Dependencies/Collections/Internal/ICollectionDebugView%601.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/28bd3d44a5e76a30f85addda62debe72dc50a885", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Dependencies/Collections/Internal/ICollectionDebugView%601.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "WpfTestCaseRunner.cs", + "path": "src/EditorFeatures/TestUtilities/Threading/WpfTestCaseRunner.cs", + "sha": "1ddee3a995688a6adb200466dff5412c74aa23ad", + "url": "https://api.github.com/repositories/29078997/contents/src/EditorFeatures/TestUtilities/Threading/WpfTestCaseRunner.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/1ddee3a995688a6adb200466dff5412c74aa23ad", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/EditorFeatures/TestUtilities/Threading/WpfTestCaseRunner.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "TestReporterFactory.cs", + "path": "src/Microsoft.DotNet.XHarness.iOS.Shared/TestReporterFactory.cs", + "sha": "2738a24ece8f38b75136d4e0db6eeed0d179cf5a", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.iOS.Shared/TestReporterFactory.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/2738a24ece8f38b75136d4e0db6eeed0d179cf5a", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.iOS.Shared/TestReporterFactory.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "AsyncResult.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/AsyncResult.cs", + "sha": "23051a6d711de3fb8c9a25bfa488aa0ad60ba9d8", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/AsyncResult.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/23051a6d711de3fb8c9a25bfa488aa0ad60ba9d8", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/AsyncResult.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "IdentifiersShouldNotMatchKeywordsTests.cs", + "path": "src/NetAnalyzers/UnitTests/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywordsTests.cs", + "sha": "1b8725ca23e65cb2347e5d720deb4d8169b7f1b3", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/UnitTests/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywordsTests.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/1b8725ca23e65cb2347e5d720deb4d8169b7f1b3", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/UnitTests/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywordsTests.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ProjectTypeCapabilities.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/Packaging/ProjectTypeCapabilities.cs", + "sha": "1ffdccfaa390cdf879518b52f9a42d5acfe517cf", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/Packaging/ProjectTypeCapabilities.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/1ffdccfaa390cdf879518b52f9a42d5acfe517cf", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/Packaging/ProjectTypeCapabilities.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "AvoidConstArrays.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidConstArrays.cs", + "sha": "2772cf5ea824401540da2335ce9f492ff9fe429e", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidConstArrays.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/2772cf5ea824401540da2335ce9f492ff9fe429e", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidConstArrays.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "DirectoryWrapper.cs", + "path": "src/Microsoft.DotNet.XUnitConsoleRunner/src/common/AssemblyResolution/Microsoft.Extensions.DependencyModel/DirectoryWrapper.cs", + "sha": "25cc2501e71083228da0f6cce6a1fb3a5fb11c65", + "url": "https://api.github.com/repositories/121444325/contents/src/Microsoft.DotNet.XUnitConsoleRunner/src/common/AssemblyResolution/Microsoft.Extensions.DependencyModel/DirectoryWrapper.cs?ref=e4bd767159fde419b50dd54c6d83e1ef970a68d0", + "git_url": "https://api.github.com/repositories/121444325/git/blobs/25cc2501e71083228da0f6cce6a1fb3a5fb11c65", + "html_url": "https://github.com/dotnet/arcade/blob/e4bd767159fde419b50dd54c6d83e1ef970a68d0/src/Microsoft.DotNet.XUnitConsoleRunner/src/common/AssemblyResolution/Microsoft.Extensions.DependencyModel/DirectoryWrapper.cs", + "repository": { + "id": 121444325, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDQzMjU=", + "name": "arcade", + "full_name": "dotnet/arcade", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/arcade", + "description": "Tools that provide common build infrastructure for multiple .NET Foundation projects.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/arcade", + "forks_url": "https://api.github.com/repos/dotnet/arcade/forks", + "keys_url": "https://api.github.com/repos/dotnet/arcade/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/arcade/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/arcade/teams", + "hooks_url": "https://api.github.com/repos/dotnet/arcade/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/arcade/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/arcade/events", + "assignees_url": "https://api.github.com/repos/dotnet/arcade/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/arcade/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/arcade/tags", + "blobs_url": "https://api.github.com/repos/dotnet/arcade/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/arcade/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/arcade/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/arcade/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/arcade/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/arcade/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/arcade/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/arcade/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/arcade/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/arcade/subscription", + "commits_url": "https://api.github.com/repos/dotnet/arcade/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/arcade/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/arcade/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/arcade/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/arcade/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/arcade/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/arcade/merges", + "archive_url": "https://api.github.com/repos/dotnet/arcade/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/arcade/downloads", + "issues_url": "https://api.github.com/repos/dotnet/arcade/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/arcade/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/arcade/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/arcade/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/arcade/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/arcade/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/arcade/deployments" + }, + "score": 1 + }, + { + "name": "Resources.cs", + "path": "snippets/csharp/System.Windows.Automation/TextPattern/AnimationStyleAttribute/Properties/Resources.cs", + "sha": "2699a45464df1578296d297701c5f25d491a1887", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/System.Windows.Automation/TextPattern/AnimationStyleAttribute/Properties/Resources.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/2699a45464df1578296d297701c5f25d491a1887", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/System.Windows.Automation/TextPattern/AnimationStyleAttribute/Properties/Resources.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "RibbonContextualTabGroupDataAutomationPeer.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonContextualTabGroupDataAutomationPeer.cs", + "sha": "20f81d56f9b403b69ac670d1414dd9d33d388a0f", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonContextualTabGroupDataAutomationPeer.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/20f81d56f9b403b69ac670d1414dd9d33d388a0f", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonContextualTabGroupDataAutomationPeer.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "BackgroundParserResultsReadyEventArgs.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BackgroundParserResultsReadyEventArgs.cs", + "sha": "2354dec1c9e99ae45c09ea230b6b1e61914c1968", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BackgroundParserResultsReadyEventArgs.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2354dec1c9e99ae45c09ea230b6b1e61914c1968", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BackgroundParserResultsReadyEventArgs.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "StringHelpers.cs", + "path": "src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/StringHelpers.cs", + "sha": "236bd5dbc9709aeefae434bac3037ebe8fdcc7a1", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/StringHelpers.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/236bd5dbc9709aeefae434bac3037ebe8fdcc7a1", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/StringHelpers.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "PreferTypedStringBuilderAppendOverloads.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs", + "sha": "1f2a6bfe7ee38cb2d932ef34b13b2b316e64b873", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/1f2a6bfe7ee38cb2d932ef34b13b2b316e64b873", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/PreferTypedStringBuilderAppendOverloads.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "SortExtensions.cs", + "path": "src/nuget-client/src/NuGet.Clients/NuGet.Indexing/SortExtensions.cs", + "sha": "29a12492e7b0072258806095f6f9e30e36a5dbaf", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Clients/NuGet.Indexing/SortExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/29a12492e7b0072258806095f6f9e30e36a5dbaf", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Clients/NuGet.Indexing/SortExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProtocolConstants.cs", + "path": "src/nuget-client/src/NuGet.Core/NuGet.Protocol/ProtocolConstants.cs", + "sha": "171e1bc728955e4472ce47e81b42ba965e6cefc9", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Core/NuGet.Protocol/ProtocolConstants.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/171e1bc728955e4472ce47e81b42ba965e6cefc9", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Core/NuGet.Protocol/ProtocolConstants.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IssuanceTokenProviderBase.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/IssuanceTokenProviderBase.cs", + "sha": "1f45664858ea687bbbe92b18c6b847206aaa3d32", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/IssuanceTokenProviderBase.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1f45664858ea687bbbe92b18c6b847206aaa3d32", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/IssuanceTokenProviderBase.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "HResult.cs", + "path": "src/Microsoft.DiaSymReader.Converter/Utilities/HResult.cs", + "sha": "1f00e747e6e2ed54bf4221aea59e9465c38ef5bb", + "url": "https://api.github.com/repositories/80169646/contents/src/Microsoft.DiaSymReader.Converter/Utilities/HResult.cs?ref=279e59e8e601624f084ed772a2bff2ef5c316b57", + "git_url": "https://api.github.com/repositories/80169646/git/blobs/1f00e747e6e2ed54bf4221aea59e9465c38ef5bb", + "html_url": "https://github.com/dotnet/symreader-converter/blob/279e59e8e601624f084ed772a2bff2ef5c316b57/src/Microsoft.DiaSymReader.Converter/Utilities/HResult.cs", + "repository": { + "id": 80169646, + "node_id": "MDEwOlJlcG9zaXRvcnk4MDE2OTY0Ng==", + "name": "symreader-converter", + "full_name": "dotnet/symreader-converter", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader-converter", + "description": "Converts between Windows PDB and Portable PDB formats.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader-converter", + "forks_url": "https://api.github.com/repos/dotnet/symreader-converter/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader-converter/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader-converter/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader-converter/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader-converter/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader-converter/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader-converter/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader-converter/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader-converter/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader-converter/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader-converter/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader-converter/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader-converter/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader-converter/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader-converter/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader-converter/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader-converter/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader-converter/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader-converter/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader-converter/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader-converter/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader-converter/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader-converter/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader-converter/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader-converter/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader-converter/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader-converter/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader-converter/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader-converter/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader-converter/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader-converter/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader-converter/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader-converter/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader-converter/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader-converter/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader-converter/deployments" + }, + "score": 1 + }, + { + "name": "InteractiveHostPlatform.cs", + "path": "src/Interactive/Host/Interactive/Core/InteractiveHostPlatform.cs", + "sha": "291d052e6dffb61e4d795245d9d03c73f1cfa3f5", + "url": "https://api.github.com/repositories/29078997/contents/src/Interactive/Host/Interactive/Core/InteractiveHostPlatform.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/291d052e6dffb61e4d795245d9d03c73f1cfa3f5", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Interactive/Host/Interactive/Core/InteractiveHostPlatform.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "AdditionalText.cs", + "path": "src/Compilers/Core/Portable/DiagnosticAnalyzer/AdditionalText.cs", + "sha": "2917faddc307e78eee40529ff1f2f837ad3bc42b", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/Core/Portable/DiagnosticAnalyzer/AdditionalText.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/2917faddc307e78eee40529ff1f2f837ad3bc42b", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/Core/Portable/DiagnosticAnalyzer/AdditionalText.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "TupleElementNamesInfo.cs", + "path": "src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs", + "sha": "28a972f008b36e26adc1cb108eed63f2b3db0d30", + "url": "https://api.github.com/repositories/29078997/contents/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/28a972f008b36e26adc1cb108eed63f2b3db0d30", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "TabularDataResourceFormatter.cs", + "path": "src/Microsoft.DotNet.Interactive.Formatting/TabularData/TabularDataResourceFormatter.cs", + "sha": "25b8bbd08bc50391c593fbec8e362abc667bd7ee", + "url": "https://api.github.com/repositories/235469871/contents/src/Microsoft.DotNet.Interactive.Formatting/TabularData/TabularDataResourceFormatter.cs?ref=69a961635590e271bac141899380de1ac2089613", + "git_url": "https://api.github.com/repositories/235469871/git/blobs/25b8bbd08bc50391c593fbec8e362abc667bd7ee", + "html_url": "https://github.com/dotnet/interactive/blob/69a961635590e271bac141899380de1ac2089613/src/Microsoft.DotNet.Interactive.Formatting/TabularData/TabularDataResourceFormatter.cs", + "repository": { + "id": 235469871, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzU0Njk4NzE=", + "name": "interactive", + "full_name": "dotnet/interactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/interactive", + "description": ".NET Interactive combines the power of .NET with many other languages to create notebooks, REPLs, and embedded coding experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/interactive", + "forks_url": "https://api.github.com/repos/dotnet/interactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/interactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/interactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/interactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/interactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/interactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/interactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/interactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/interactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/interactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/interactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/interactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/interactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/interactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/interactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/interactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/interactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/interactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/interactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/interactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/interactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/interactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/interactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/interactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/interactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/interactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/interactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/interactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/interactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/interactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/interactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/interactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/interactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/interactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/interactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/interactive/deployments" + }, + "score": 1 + }, + { + "name": "SecurityContextSecurityToken.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/Tokens/SecurityContextSecurityToken.cs", + "sha": "1a18ce4a8068c310696c0c78b374583f724a407d", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/Tokens/SecurityContextSecurityToken.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1a18ce4a8068c310696c0c78b374583f724a407d", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/Tokens/SecurityContextSecurityToken.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "Window1.xaml.cs", + "path": "snippets/csharp/System.Windows/FrameworkContentElement/ContextMenuClosing/Window1.xaml.cs", + "sha": "29afc5fbb9535b08adcbc553871affc9466fdfad", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/System.Windows/FrameworkContentElement/ContextMenuClosing/Window1.xaml.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/29afc5fbb9535b08adcbc553871affc9466fdfad", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/System.Windows/FrameworkContentElement/ContextMenuClosing/Window1.xaml.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "X509CertificateValidator.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Selectors/X509CertificateValidator.cs", + "sha": "1ad28a3b3726ecbb911769d9a47a800b2050537f", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Selectors/X509CertificateValidator.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/1ad28a3b3726ecbb911769d9a47a800b2050537f", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Selectors/X509CertificateValidator.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "ProjectProperties.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/ProjectProperties.cs", + "sha": "299a28bf82e06330d32e68904d590e1bbcdfbed3", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/ProjectProperties.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/299a28bf82e06330d32e68904d590e1bbcdfbed3", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Rules/ProjectProperties.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "InertiaRotationBehavior2D.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Input.Manipulations/System/Windows/Input/Manipulations/InertiaRotationBehavior2D.cs", + "sha": "2cd42963e5f987596a0898c66a486c939897939d", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Input.Manipulations/System/Windows/Input/Manipulations/InertiaRotationBehavior2D.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2cd42963e5f987596a0898c66a486c939897939d", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Input.Manipulations/System/Windows/Input/Manipulations/InertiaRotationBehavior2D.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "DocumentProcessedListener.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DocumentProcessedListener.cs", + "sha": "18e8cf397ee34dd9e9337fe919670c9b43152a62", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DocumentProcessedListener.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/18e8cf397ee34dd9e9337fe919670c9b43152a62", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DocumentProcessedListener.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "SchemaCollectionCompiler.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaCollectionCompiler.cs", + "sha": "2d26e8fd919fc01c014a7cc74d851713ec5ce0d8", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaCollectionCompiler.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2d26e8fd919fc01c014a7cc74d851713ec5ce0d8", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaCollectionCompiler.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "TaskHelpers.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/TaskHelpers.cs", + "sha": "28d7c0e89ccd097d35f2fd67ea49203adddf94a8", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/TaskHelpers.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/28d7c0e89ccd097d35f2fd67ea49203adddf94a8", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/Internals/System/Runtime/TaskHelpers.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "RibbonMenuItem.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonMenuItem.cs", + "sha": "2323d4468caa4e71412dee685e05fffe2d3556c5", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonMenuItem.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2323d4468caa4e71412dee685e05fffe2d3556c5", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Controls/Ribbon/RibbonMenuItem.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "RunCommandParser.cs", + "path": "src/Cli/dotnet/commands/dotnet-run/RunCommandParser.cs", + "sha": "19fc4171ff65e9a554e3881fd324eeba055eac09", + "url": "https://api.github.com/repositories/63984307/contents/src/Cli/dotnet/commands/dotnet-run/RunCommandParser.cs?ref=6a0dd48eb0c28b1228056e6d6e12c782f854006a", + "git_url": "https://api.github.com/repositories/63984307/git/blobs/19fc4171ff65e9a554e3881fd324eeba055eac09", + "html_url": "https://github.com/dotnet/sdk/blob/6a0dd48eb0c28b1228056e6d6e12c782f854006a/src/Cli/dotnet/commands/dotnet-run/RunCommandParser.cs", + "repository": { + "id": 63984307, + "node_id": "MDEwOlJlcG9zaXRvcnk2Mzk4NDMwNw==", + "name": "sdk", + "full_name": "dotnet/sdk", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sdk", + "description": "Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sdk", + "forks_url": "https://api.github.com/repos/dotnet/sdk/forks", + "keys_url": "https://api.github.com/repos/dotnet/sdk/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sdk/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sdk/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sdk/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sdk/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sdk/events", + "assignees_url": "https://api.github.com/repos/dotnet/sdk/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sdk/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sdk/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sdk/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sdk/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sdk/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sdk/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sdk/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sdk/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sdk/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sdk/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sdk/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sdk/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sdk/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sdk/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sdk/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sdk/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sdk/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sdk/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sdk/merges", + "archive_url": "https://api.github.com/repos/dotnet/sdk/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sdk/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sdk/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sdk/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sdk/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sdk/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sdk/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sdk/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sdk/deployments" + }, + "score": 1 + }, + { + "name": "XPS_SIZE.cs", + "path": "src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/RCW/XPS_SIZE.cs", + "sha": "1ecdecf59be764820b108fd08c18e7e731898a29", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/RCW/XPS_SIZE.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/1ecdecf59be764820b108fd08c18e7e731898a29", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/ReachFramework/Serialization/RCW/XPS_SIZE.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "NuGet.ProjectModel.cs", + "path": "src/referencePackages/src/nuget.projectmodel/6.2.2/lib/net5.0/NuGet.ProjectModel.cs", + "sha": "238c0cc1dd5b2fc900c4894afa3e63a79a1f36d6", + "url": "https://api.github.com/repositories/176748372/contents/src/referencePackages/src/nuget.projectmodel/6.2.2/lib/net5.0/NuGet.ProjectModel.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/238c0cc1dd5b2fc900c4894afa3e63a79a1f36d6", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/referencePackages/src/nuget.projectmodel/6.2.2/lib/net5.0/NuGet.ProjectModel.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "RibbonTabDataAutomationPeer.cs", + "path": "src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonTabDataAutomationPeer.cs", + "sha": "272808358e15d3146d930c8470a88a16f9c2500c", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonTabDataAutomationPeer.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/272808358e15d3146d930c8470a88a16f9c2500c", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/System.Windows.Controls.Ribbon/Microsoft/Windows/Automation/Peers/RibbonTabDataAutomationPeer.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "MSBuildProjectSystem.cs", + "path": "src/nuget-client/src/NuGet.Clients/NuGet.CommandLine/Common/MSBuildProjectSystem.cs", + "sha": "1f5b9443608fb42c5bbc5d24c8400b8c605fcbed", + "url": "https://api.github.com/repositories/550902717/contents/src/nuget-client/src/NuGet.Clients/NuGet.CommandLine/Common/MSBuildProjectSystem.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1f5b9443608fb42c5bbc5d24c8400b8c605fcbed", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/nuget-client/src/NuGet.Clients/NuGet.CommandLine/Common/MSBuildProjectSystem.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "InsecureObjectGraphResult.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/InsecureObjectGraphResult.cs", + "sha": "188a2a1124b86180e3c3b71036ec71c118a48f2b", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/InsecureObjectGraphResult.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/188a2a1124b86180e3c3b71036ec71c118a48f2b", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/Helpers/InsecureObjectGraphResult.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "QuaternionKeyFrameCollection.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionKeyFrameCollection.cs", + "sha": "2071ac3219cc17cb587c323ba3bda120f2da0a9b", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionKeyFrameCollection.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/2071ac3219cc17cb587c323ba3bda120f2da0a9b", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionKeyFrameCollection.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "ExtendedClrTypeCode.cs", + "path": "src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/ExtendedClrTypeCode.cs", + "sha": "28818a16f17373781c35cdb2c3a2e187608f1eb5", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/ExtendedClrTypeCode.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/28818a16f17373781c35cdb2c3a2e187608f1eb5", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/ExtendedClrTypeCode.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "TypeSyntax.cs", + "path": "src/Compilers/CSharp/Portable/Syntax/InternalSyntax/TypeSyntax.cs", + "sha": "2a059ab19cb0f4c65e3c0cfebb2d106b2999113c", + "url": "https://api.github.com/repositories/29078997/contents/src/Compilers/CSharp/Portable/Syntax/InternalSyntax/TypeSyntax.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/2a059ab19cb0f4c65e3c0cfebb2d106b2999113c", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Compilers/CSharp/Portable/Syntax/InternalSyntax/TypeSyntax.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "Result.cs", + "path": "src/Features/Core/Portable/EmbeddedLanguages/StackFrame/Result.cs", + "sha": "253c454ce64593389eb75472e3e65b3772c39a43", + "url": "https://api.github.com/repositories/29078997/contents/src/Features/Core/Portable/EmbeddedLanguages/StackFrame/Result.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/253c454ce64593389eb75472e3e65b3772c39a43", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Features/Core/Portable/EmbeddedLanguages/StackFrame/Result.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs", + "sha": "2a5c62c4888048f5de49348fb3d17f214321be05", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/2a5c62c4888048f5de49348fb3d17f214321be05", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ISymUnmanagedScope2.cs", + "path": "src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope2.cs", + "sha": "2a5f2289ab02dc4f56bc73b8f21b87f7d7fb9f16", + "url": "https://api.github.com/repositories/45562551/contents/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope2.cs?ref=615d7ba83f00c049689e1c22af352867aba2023d", + "git_url": "https://api.github.com/repositories/45562551/git/blobs/2a5f2289ab02dc4f56bc73b8f21b87f7d7fb9f16", + "html_url": "https://github.com/dotnet/symreader/blob/615d7ba83f00c049689e1c22af352867aba2023d/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope2.cs", + "repository": { + "id": 45562551, + "node_id": "MDEwOlJlcG9zaXRvcnk0NTU2MjU1MQ==", + "name": "symreader", + "full_name": "dotnet/symreader", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader", + "description": "Managed definitions for COM interfaces exposed by DiaSymReader APIs", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader", + "forks_url": "https://api.github.com/repos/dotnet/symreader/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader/deployments" + }, + "score": 1 + }, + { + "name": "WinformsResultProvider.cs", + "path": "src/extensions/windows/Microsoft.DotNet.UpgradeAssistant.Extensions.Windows/WinformsResultProvider.cs", + "sha": "2be86d7656fd934c5758c0167bb309034a75fcd4", + "url": "https://api.github.com/repositories/332061101/contents/src/extensions/windows/Microsoft.DotNet.UpgradeAssistant.Extensions.Windows/WinformsResultProvider.cs?ref=be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45", + "git_url": "https://api.github.com/repositories/332061101/git/blobs/2be86d7656fd934c5758c0167bb309034a75fcd4", + "html_url": "https://github.com/dotnet/upgrade-assistant/blob/be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45/src/extensions/windows/Microsoft.DotNet.UpgradeAssistant.Extensions.Windows/WinformsResultProvider.cs", + "repository": { + "id": 332061101, + "node_id": "MDEwOlJlcG9zaXRvcnkzMzIwNjExMDE=", + "name": "upgrade-assistant", + "full_name": "dotnet/upgrade-assistant", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/upgrade-assistant", + "description": "A tool to assist developers in upgrading .NET Framework applications to .NET 6 and beyond", + "fork": false, + "url": "https://api.github.com/repos/dotnet/upgrade-assistant", + "forks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/forks", + "keys_url": "https://api.github.com/repos/dotnet/upgrade-assistant/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/upgrade-assistant/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/upgrade-assistant/teams", + "hooks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/events", + "assignees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/upgrade-assistant/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/tags", + "blobs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/upgrade-assistant/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/upgrade-assistant/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscription", + "commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/upgrade-assistant/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/upgrade-assistant/merges", + "archive_url": "https://api.github.com/repos/dotnet/upgrade-assistant/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/upgrade-assistant/downloads", + "issues_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/upgrade-assistant/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/upgrade-assistant/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/upgrade-assistant/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/upgrade-assistant/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/upgrade-assistant/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/deployments" + }, + "score": 1 + }, + { + "name": "Quiz.cs", + "path": "src/2. Assessing Peoples Skills/DataObjects/Quiz.cs", + "sha": "2d83556b49017dc426d0c6f7334b2d6afe869c98", + "url": "https://api.github.com/repositories/173785725/contents/src/2.%20Assessing%20Peoples%20Skills/DataObjects/Quiz.cs?ref=4a8f76a3605b28406670db0684f14d1f521f291d", + "git_url": "https://api.github.com/repositories/173785725/git/blobs/2d83556b49017dc426d0c6f7334b2d6afe869c98", + "html_url": "https://github.com/dotnet/mbmlbook/blob/4a8f76a3605b28406670db0684f14d1f521f291d/src/2.%20Assessing%20Peoples%20Skills/DataObjects/Quiz.cs", + "repository": { + "id": 173785725, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzM3ODU3MjU=", + "name": "mbmlbook", + "full_name": "dotnet/mbmlbook", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/mbmlbook", + "description": "Sample code for the Model-Based Machine Learning book.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/mbmlbook", + "forks_url": "https://api.github.com/repos/dotnet/mbmlbook/forks", + "keys_url": "https://api.github.com/repos/dotnet/mbmlbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/mbmlbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/mbmlbook/teams", + "hooks_url": "https://api.github.com/repos/dotnet/mbmlbook/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/mbmlbook/events", + "assignees_url": "https://api.github.com/repos/dotnet/mbmlbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/mbmlbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/mbmlbook/tags", + "blobs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/mbmlbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/mbmlbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/mbmlbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/mbmlbook/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/mbmlbook/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/mbmlbook/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/mbmlbook/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/mbmlbook/subscription", + "commits_url": "https://api.github.com/repos/dotnet/mbmlbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/mbmlbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/mbmlbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/mbmlbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/mbmlbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/mbmlbook/merges", + "archive_url": "https://api.github.com/repos/dotnet/mbmlbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/mbmlbook/downloads", + "issues_url": "https://api.github.com/repos/dotnet/mbmlbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/mbmlbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/mbmlbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/mbmlbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/mbmlbook/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/mbmlbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/mbmlbook/deployments" + }, + "score": 1 + }, + { + "name": "GlobalUsings.cs", + "path": "src/DotNet.GitHub/GlobalUsings.cs", + "sha": "16c96c9defab638cef0b62d44b9865594407cc0d", + "url": "https://api.github.com/repositories/329435923/contents/src/DotNet.GitHub/GlobalUsings.cs?ref=5b5aefb129e91d0f79120e53a425831e5f33e560", + "git_url": "https://api.github.com/repositories/329435923/git/blobs/16c96c9defab638cef0b62d44b9865594407cc0d", + "html_url": "https://github.com/dotnet/versionsweeper/blob/5b5aefb129e91d0f79120e53a425831e5f33e560/src/DotNet.GitHub/GlobalUsings.cs", + "repository": { + "id": 329435923, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjk0MzU5MjM=", + "name": "versionsweeper", + "full_name": "dotnet/versionsweeper", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/versionsweeper", + "description": "🎯 LTS (or current) versions - GitHub Action that will run as a scheduled CRON job. Ideally, once every few months or as often as necessary to align with .NET version updates.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/versionsweeper", + "forks_url": "https://api.github.com/repos/dotnet/versionsweeper/forks", + "keys_url": "https://api.github.com/repos/dotnet/versionsweeper/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/versionsweeper/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/versionsweeper/teams", + "hooks_url": "https://api.github.com/repos/dotnet/versionsweeper/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/versionsweeper/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/versionsweeper/events", + "assignees_url": "https://api.github.com/repos/dotnet/versionsweeper/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/versionsweeper/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/versionsweeper/tags", + "blobs_url": "https://api.github.com/repos/dotnet/versionsweeper/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/versionsweeper/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/versionsweeper/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/versionsweeper/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/versionsweeper/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/versionsweeper/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/versionsweeper/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/versionsweeper/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/versionsweeper/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/versionsweeper/subscription", + "commits_url": "https://api.github.com/repos/dotnet/versionsweeper/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/versionsweeper/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/versionsweeper/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/versionsweeper/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/versionsweeper/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/versionsweeper/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/versionsweeper/merges", + "archive_url": "https://api.github.com/repos/dotnet/versionsweeper/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/versionsweeper/downloads", + "issues_url": "https://api.github.com/repos/dotnet/versionsweeper/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/versionsweeper/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/versionsweeper/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/versionsweeper/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/versionsweeper/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/versionsweeper/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/versionsweeper/deployments" + }, + "score": 1 + }, + { + "name": "Project.cs", + "path": "src/msbuild/src/Samples/XmlFileLogger/ObjectModel/Project.cs", + "sha": "19081d2c14bcdbe6f00af65c68a0631f6fc7e200", + "url": "https://api.github.com/repositories/550902717/contents/src/msbuild/src/Samples/XmlFileLogger/ObjectModel/Project.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/19081d2c14bcdbe6f00af65c68a0631f6fc7e200", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/msbuild/src/Samples/XmlFileLogger/ObjectModel/Project.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectExtensions.cs", + "path": "src/roslyn/src/Features/Core/Portable/Shared/Extensions/ProjectExtensions.cs", + "sha": "1df24cf4ee104affea3f03fbce25ed6c3722443b", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/Shared/Extensions/ProjectExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1df24cf4ee104affea3f03fbce25ed6c3722443b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/Shared/Extensions/ProjectExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ClearCommand.cs", + "path": "src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/ClearCommand.cs", + "sha": "2b977e3f6313043abacbdc408ffe34bae01e94aa", + "url": "https://api.github.com/repositories/550902717/contents/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/ClearCommand.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2b977e3f6313043abacbdc408ffe34bae01e94aa", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/aspnetcore/src/Tools/dotnet-user-jwts/src/Commands/ClearCommand.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "src/linker/Linker/AssemblyInfo.cs", + "sha": "17d4913b9ec6d587077ae1d4aa921317a0f62cee", + "url": "https://api.github.com/repositories/72579311/contents/src/linker/Linker/AssemblyInfo.cs?ref=ba65e934dcb8cfbc81a494e890927f9a5d31deac", + "git_url": "https://api.github.com/repositories/72579311/git/blobs/17d4913b9ec6d587077ae1d4aa921317a0f62cee", + "html_url": "https://github.com/dotnet/linker/blob/ba65e934dcb8cfbc81a494e890927f9a5d31deac/src/linker/Linker/AssemblyInfo.cs", + "repository": { + "id": 72579311, + "node_id": "MDEwOlJlcG9zaXRvcnk3MjU3OTMxMQ==", + "name": "linker", + "full_name": "dotnet/linker", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/linker", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/linker", + "forks_url": "https://api.github.com/repos/dotnet/linker/forks", + "keys_url": "https://api.github.com/repos/dotnet/linker/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/linker/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/linker/teams", + "hooks_url": "https://api.github.com/repos/dotnet/linker/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/linker/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/linker/events", + "assignees_url": "https://api.github.com/repos/dotnet/linker/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/linker/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/linker/tags", + "blobs_url": "https://api.github.com/repos/dotnet/linker/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/linker/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/linker/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/linker/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/linker/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/linker/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/linker/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/linker/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/linker/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/linker/subscription", + "commits_url": "https://api.github.com/repos/dotnet/linker/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/linker/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/linker/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/linker/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/linker/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/linker/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/linker/merges", + "archive_url": "https://api.github.com/repos/dotnet/linker/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/linker/downloads", + "issues_url": "https://api.github.com/repos/dotnet/linker/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/linker/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/linker/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/linker/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/linker/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/linker/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/linker/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "src/runtime/src/tools/illink/src/linker/Linker/AssemblyInfo.cs", + "sha": "17d4913b9ec6d587077ae1d4aa921317a0f62cee", + "url": "https://api.github.com/repositories/550902717/contents/src/runtime/src/tools/illink/src/linker/Linker/AssemblyInfo.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/17d4913b9ec6d587077ae1d4aa921317a0f62cee", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/runtime/src/tools/illink/src/linker/Linker/AssemblyInfo.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "EntireTerminalRegion.cs", + "path": "src/command-line-api/src/System.CommandLine.Rendering/EntireTerminalRegion.cs", + "sha": "205cc235a5118d8e1f29be6e01f939ac144936e7", + "url": "https://api.github.com/repositories/550902717/contents/src/command-line-api/src/System.CommandLine.Rendering/EntireTerminalRegion.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/205cc235a5118d8e1f29be6e01f939ac144936e7", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/command-line-api/src/System.CommandLine.Rendering/EntireTerminalRegion.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CreateManifestFile.cs", + "path": "src/sdk/src/WebSdk/Publish/Tasks/Tasks/MsDeploy/CreateManifestFile.cs", + "sha": "27f9a1e414b2415793dbb410ea2fc593807e0121", + "url": "https://api.github.com/repositories/550902717/contents/src/sdk/src/WebSdk/Publish/Tasks/Tasks/MsDeploy/CreateManifestFile.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/27f9a1e414b2415793dbb410ea2fc593807e0121", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/sdk/src/WebSdk/Publish/Tasks/Tasks/MsDeploy/CreateManifestFile.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/7-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/7-codeSearch.json new file mode 100644 index 00000000000..ea7d4e77625 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/7-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=8" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "DefaultProjectPathProviderFactory.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultProjectPathProviderFactory.cs", + "sha": "20a81dec6c47ee9fa770edf37858c1ad16f146c0", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultProjectPathProviderFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/20a81dec6c47ee9fa770edf37858c1ad16f146c0", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultProjectPathProviderFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ArrayExtensions.cs", + "path": "src/razor/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ArrayExtensions.cs", + "sha": "2663e636bd7a1182644d15d488e7e775108c3884", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ArrayExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2663e636bd7a1182644d15d488e7e775108c3884", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ArrayExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CatalogFileEntry.cs", + "path": "eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CatalogFileEntry.cs", + "sha": "268d50fc5a71ee0a69c3451938bab8c87a1f3a13", + "url": "https://api.github.com/repositories/550902717/contents/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CatalogFileEntry.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/268d50fc5a71ee0a69c3451938bab8c87a1f3a13", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CatalogFileEntry.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpAvoidUsingCrefTagsWithAPrefix.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/Documentation/CSharpAvoidUsingCrefTagsWithAPrefix.cs", + "sha": "187504be64c93e26bf896a4592c1c4c40832f070", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/Documentation/CSharpAvoidUsingCrefTagsWithAPrefix.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/187504be64c93e26bf896a4592c1c4c40832f070", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/CSharp/Microsoft.CodeQuality.Analyzers/Documentation/CSharpAvoidUsingCrefTagsWithAPrefix.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectNode.cs", + "path": "src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/ProjectNode.cs", + "sha": "26e93f1c12574e75bdd16601928be4e26f172f46", + "url": "https://api.github.com/repositories/550902717/contents/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/ProjectNode.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/26e93f1c12574e75bdd16601928be4e26f172f46", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/fsharp/vsintegration/src/FSharp.ProjectSystem.Base/ProjectNode.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IRegistrationExtension.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRegistrationExtension.cs", + "sha": "1811b7c11ad51611fb0e490e52c335356ffb675e", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRegistrationExtension.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1811b7c11ad51611fb0e490e52c335356ffb675e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRegistrationExtension.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AboutDialogInfoAttribute.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs", + "sha": "2921601314c9b26cbfaebef44fa144260d985e8b", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2921601314c9b26cbfaebef44fa144260d985e8b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IRazorFileChangeListener.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRazorFileChangeListener.cs", + "sha": "2a9d4ea87878a61f737929f555dc0ba471892968", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRazorFileChangeListener.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2a9d4ea87878a61f737929f555dc0ba471892968", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IRazorFileChangeListener.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ParameterValidationAnalysisResult.cs", + "path": "src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/ParameterValidationAnalysis/ParameterValidationAnalysisResult.cs", + "sha": "2d63cff69f3664de45e24a0f093de8e29f80095a", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/ParameterValidationAnalysis/ParameterValidationAnalysisResult.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2d63cff69f3664de45e24a0f093de8e29f80095a", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/ParameterValidationAnalysis/ParameterValidationAnalysisResult.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IConfigurationSyncService.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IConfigurationSyncService.cs", + "sha": "26afc5b96775c7939f87bc69164b42b58373e724", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IConfigurationSyncService.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/26afc5b96775c7939f87bc69164b42b58373e724", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IConfigurationSyncService.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DefaultDynamicDocumentContainer.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultDynamicDocumentContainer.cs", + "sha": "1f4f8d977458f6c34839130600505137fd06dace", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultDynamicDocumentContainer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1f4f8d977458f6c34839130600505137fd06dace", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultDynamicDocumentContainer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CopyAnalysisContext.cs", + "path": "src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/CopyAnalysis/CopyAnalysisContext.cs", + "sha": "25ebcb3369d03e882d43a986d0ddd406261c3312", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/CopyAnalysis/CopyAnalysisContext.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/25ebcb3369d03e882d43a986d0ddd406261c3312", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/CopyAnalysis/CopyAnalysisContext.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RazorLogHubTraceProvider.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/Logging/RazorLogHubTraceProvider.cs", + "sha": "1eed50e2aa699dfee649d5c0d4365e1e5ec5541b", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/Logging/RazorLogHubTraceProvider.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1eed50e2aa699dfee649d5c0d4365e1e5ec5541b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/Logging/RazorLogHubTraceProvider.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpFormatter.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/CSharpFormatter.cs", + "sha": "1e527d636816e600c0bfa054f5c05887c5f55c10", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/CSharpFormatter.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1e527d636816e600c0bfa054f5c05887c5f55c10", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/CSharpFormatter.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IFormattingPass.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/IFormattingPass.cs", + "sha": "1c88df4ae3290b499313282b2483604ff9460520", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/IFormattingPass.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1c88df4ae3290b499313282b2483604ff9460520", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Formatting/IFormattingPass.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SymbolIsBannedInAnalyzersTests.cs", + "path": "src/roslyn-analyzers/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/SymbolIsBannedInAnalyzersTests.cs", + "sha": "29ec5f76f3f088806eb15ce1f0c2b66bac710c9c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/SymbolIsBannedInAnalyzersTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/29ec5f76f3f088806eb15ce1f0c2b66bac710c9c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/SymbolIsBannedInAnalyzersTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DoNotNameEnumValuesReserved.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs", + "sha": "2bdb0e29b45d9af91a7272dc293956e6e3045032", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2bdb0e29b45d9af91a7272dc293956e6e3045032", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/DoNotNameEnumValuesReserved.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "FolderWorkspace_VisualBasicProjectLoader.cs", + "path": "src/format/src/Workspaces/FolderWorkspace_VisualBasicProjectLoader.cs", + "sha": "1f50e45af63481ca6baf4036aba62df22ac11b2b", + "url": "https://api.github.com/repositories/550902717/contents/src/format/src/Workspaces/FolderWorkspace_VisualBasicProjectLoader.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1f50e45af63481ca6baf4036aba62df22ac11b2b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/format/src/Workspaces/FolderWorkspace_VisualBasicProjectLoader.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RegistrationExtensionResult.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RegistrationExtensionResult.cs", + "sha": "1e615256af768193b88c34334913a1f1ae11e4f5", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RegistrationExtensionResult.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1e615256af768193b88c34334913a1f1ae11e4f5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RegistrationExtensionResult.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IObjectWritable.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Serialization/IObjectWritable.cs", + "sha": "2bd45e56d1d8f2ebf518a673cf445ef264528c77", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Serialization/IObjectWritable.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2bd45e56d1d8f2ebf518a673cf445ef264528c77", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Serialization/IObjectWritable.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IdentifiersShouldHaveCorrectPrefix.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs", + "sha": "22fe2f10950067a7a14cdad00c2c3b1567c2ce1e", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/22fe2f10950067a7a14cdad00c2c3b1567c2ce1e", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldHaveCorrectPrefix.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Program.cs", + "path": "src/templating/dotnet-template-samples/content/15-computed-symbol/MyProject.Con/Program.cs", + "sha": "295224e56678b28813fb5f4cbcca933af888a85f", + "url": "https://api.github.com/repositories/550902717/contents/src/templating/dotnet-template-samples/content/15-computed-symbol/MyProject.Con/Program.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/295224e56678b28813fb5f4cbcca933af888a85f", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/templating/dotnet-template-samples/content/15-computed-symbol/MyProject.Con/Program.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IMonitorProjectConfigurationFilePathHandler.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IMonitorProjectConfigurationFilePathHandler.cs", + "sha": "2cef6a5cfe1d30aed28843afa3bb2aea2a0d4d65", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IMonitorProjectConfigurationFilePathHandler.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2cef6a5cfe1d30aed28843afa3bb2aea2a0d4d65", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IMonitorProjectConfigurationFilePathHandler.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "VisualStudioDocumentTrackerFactory.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/VisualStudioDocumentTrackerFactory.cs", + "sha": "1e3a2b63a6f8fbe431b41440cf5b77671c9134ec", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/VisualStudioDocumentTrackerFactory.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1e3a2b63a6f8fbe431b41440cf5b77671c9134ec", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/VisualStudioDocumentTrackerFactory.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SourceTextSourceLineCollection.cs", + "path": "src/razor/src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/SourceTextSourceLineCollection.cs", + "sha": "1a3381f72866e8b42483ddcd0092fed0d9fe6639", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/SourceTextSourceLineCollection.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1a3381f72866e8b42483ddcd0092fed0d9fe6639", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/SourceTextSourceLineCollection.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DefaultVisualStudioDocumentTracker.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs", + "sha": "199916bec912faab3ecd3918389f1a4a9fe42721", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/199916bec912faab3ecd3918389f1a4a9fe42721", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/DefaultVisualStudioDocumentTracker.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RoslynNavigateToItem.cs", + "path": "src/roslyn/src/Features/Core/Portable/NavigateTo/RoslynNavigateToItem.cs", + "sha": "25215ea1b109321c975384bf4098a2a4d4f14bd7", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/NavigateTo/RoslynNavigateToItem.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/25215ea1b109321c975384bf4098a2a4d4f14bd7", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/NavigateTo/RoslynNavigateToItem.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ProjectExtensions.cs", + "path": "src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs", + "sha": "25c13eac47afa243beb733628bb3598e3b9e194d", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/25c13eac47afa243beb733628bb3598e3b9e194d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "StateMachineInfo.cs", + "path": "src/roslyn/src/Features/Core/Portable/EditAndContinue/StateMachineInfo.cs", + "sha": "1f83c1293405f7ae4f3dfd406e7a76c6b6c65ba8", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/EditAndContinue/StateMachineInfo.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1f83c1293405f7ae4f3dfd406e7a76c6b6c65ba8", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/EditAndContinue/StateMachineInfo.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "SignatureHelpState.cs", + "path": "src/roslyn/src/Features/Core/Portable/SignatureHelp/SignatureHelpState.cs", + "sha": "1833b15e50f6cce2468327573d069b93f27cb8af", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/SignatureHelp/SignatureHelpState.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1833b15e50f6cce2468327573d069b93f27cb8af", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/SignatureHelp/SignatureHelpState.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CSharpResxGenerator.cs", + "path": "src/roslyn-analyzers/src/Microsoft.CodeAnalysis.ResxSourceGenerator/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/CSharpResxGenerator.cs", + "sha": "1b5bedfefc1a52c6798dcd1e1edc36db5229c390", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/Microsoft.CodeAnalysis.ResxSourceGenerator/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/CSharpResxGenerator.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1b5bedfefc1a52c6798dcd1e1edc36db5229c390", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/Microsoft.CodeAnalysis.ResxSourceGenerator/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/CSharpResxGenerator.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "XmlLocation.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/Diagnostic/XmlLocation.cs", + "sha": "191404c239695f3a5bc29155b667dda10a241291", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/Diagnostic/XmlLocation.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/191404c239695f3a5bc29155b667dda10a241291", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/Diagnostic/XmlLocation.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "RazorSyntaxNodeList.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/SyntaxVisualizer/RazorSyntaxNodeList.cs", + "sha": "2ca396b07522878ecc167f88e6c5f985dc34b91b", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/SyntaxVisualizer/RazorSyntaxNodeList.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2ca396b07522878ecc167f88e6c5f985dc34b91b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/SyntaxVisualizer/RazorSyntaxNodeList.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ReinvokeResponse.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/ReinvokeResponse.cs", + "sha": "1dc8ef85b3931292abf3893ce7a0471d8099c5c0", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/ReinvokeResponse.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1dc8ef85b3931292abf3893ce7a0471d8099c5c0", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/ReinvokeResponse.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ICollectionDebugView`1.cs", + "path": "src/roslyn/src/Dependencies/Collections/Internal/ICollectionDebugView`1.cs", + "sha": "28bd3d44a5e76a30f85addda62debe72dc50a885", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Dependencies/Collections/Internal/ICollectionDebugView%601.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/28bd3d44a5e76a30f85addda62debe72dc50a885", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Dependencies/Collections/Internal/ICollectionDebugView%601.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ICollectionDebugView`1.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ICollectionDebugView`1.cs", + "sha": "28bd3d44a5e76a30f85addda62debe72dc50a885", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ICollectionDebugView%601.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/28bd3d44a5e76a30f85addda62debe72dc50a885", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ICollectionDebugView%601.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ICollectionDebugView`1.cs", + "path": "src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ICollectionDebugView`1.cs", + "sha": "28bd3d44a5e76a30f85addda62debe72dc50a885", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ICollectionDebugView%601.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/28bd3d44a5e76a30f85addda62debe72dc50a885", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netstandard2.0/Internal/ICollectionDebugView%601.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ICollectionDebugView`1.cs", + "path": "src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ICollectionDebugView`1.cs", + "sha": "28bd3d44a5e76a30f85addda62debe72dc50a885", + "url": "https://api.github.com/repositories/176748372/contents/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ICollectionDebugView%601.cs?ref=c7e229b7e8cd71c8479e236ae1efff3ad1d740f9", + "git_url": "https://api.github.com/repositories/176748372/git/blobs/28bd3d44a5e76a30f85addda62debe72dc50a885", + "html_url": "https://github.com/dotnet/source-build-reference-packages/blob/c7e229b7e8cd71c8479e236ae1efff3ad1d740f9/src/textOnlyPackages/src/microsoft.codeanalysis.collections/4.2.0-1.22102.8/contentFiles/cs/netcoreapp3.1/Internal/ICollectionDebugView%601.cs", + "repository": { + "id": 176748372, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzY3NDgzNzI=", + "name": "source-build-reference-packages", + "full_name": "dotnet/source-build-reference-packages", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/source-build-reference-packages", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/source-build-reference-packages", + "forks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/forks", + "keys_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/teams", + "hooks_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/events", + "assignees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/tags", + "blobs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/subscription", + "commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/merges", + "archive_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/downloads", + "issues_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/source-build-reference-packages/deployments" + }, + "score": 1 + }, + { + "name": "WpfTestCaseRunner.cs", + "path": "src/roslyn/src/EditorFeatures/TestUtilities/Threading/WpfTestCaseRunner.cs", + "sha": "1ddee3a995688a6adb200466dff5412c74aa23ad", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/EditorFeatures/TestUtilities/Threading/WpfTestCaseRunner.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1ddee3a995688a6adb200466dff5412c74aa23ad", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/EditorFeatures/TestUtilities/Threading/WpfTestCaseRunner.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IdentifiersShouldNotMatchKeywordsTests.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywordsTests.cs", + "sha": "1b8725ca23e65cb2347e5d720deb4d8169b7f1b3", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywordsTests.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/1b8725ca23e65cb2347e5d720deb4d8169b7f1b3", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/UnitTests/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotMatchKeywordsTests.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DirectoryWrapper.cs", + "path": "src/arcade/src/Microsoft.DotNet.XUnitConsoleRunner/src/common/AssemblyResolution/Microsoft.Extensions.DependencyModel/DirectoryWrapper.cs", + "sha": "25cc2501e71083228da0f6cce6a1fb3a5fb11c65", + "url": "https://api.github.com/repositories/550902717/contents/src/arcade/src/Microsoft.DotNet.XUnitConsoleRunner/src/common/AssemblyResolution/Microsoft.Extensions.DependencyModel/DirectoryWrapper.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/25cc2501e71083228da0f6cce6a1fb3a5fb11c65", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/arcade/src/Microsoft.DotNet.XUnitConsoleRunner/src/common/AssemblyResolution/Microsoft.Extensions.DependencyModel/DirectoryWrapper.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "BackgroundParserResultsReadyEventArgs.cs", + "path": "src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BackgroundParserResultsReadyEventArgs.cs", + "sha": "2354dec1c9e99ae45c09ea230b6b1e61914c1968", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BackgroundParserResultsReadyEventArgs.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2354dec1c9e99ae45c09ea230b6b1e61914c1968", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/BackgroundParserResultsReadyEventArgs.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "InteractiveHostPlatform.cs", + "path": "src/roslyn/src/Interactive/Host/Interactive/Core/InteractiveHostPlatform.cs", + "sha": "291d052e6dffb61e4d795245d9d03c73f1cfa3f5", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Interactive/Host/Interactive/Core/InteractiveHostPlatform.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/291d052e6dffb61e4d795245d9d03c73f1cfa3f5", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Interactive/Host/Interactive/Core/InteractiveHostPlatform.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "AdditionalText.cs", + "path": "src/roslyn/src/Compilers/Core/Portable/DiagnosticAnalyzer/AdditionalText.cs", + "sha": "2917faddc307e78eee40529ff1f2f837ad3bc42b", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/Core/Portable/DiagnosticAnalyzer/AdditionalText.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2917faddc307e78eee40529ff1f2f837ad3bc42b", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/Core/Portable/DiagnosticAnalyzer/AdditionalText.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TupleElementNamesInfo.cs", + "path": "src/roslyn/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs", + "sha": "28a972f008b36e26adc1cb108eed63f2b3db0d30", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/28a972f008b36e26adc1cb108eed63f2b3db0d30", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "DocumentProcessedListener.cs", + "path": "src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DocumentProcessedListener.cs", + "sha": "18e8cf397ee34dd9e9337fe919670c9b43152a62", + "url": "https://api.github.com/repositories/550902717/contents/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DocumentProcessedListener.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/18e8cf397ee34dd9e9337fe919670c9b43152a62", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/razor/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer.Common/DocumentProcessedListener.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "NuGet.ProjectModel.cs", + "path": "src/source-build-reference-packages/src/referencePackages/src/nuget.projectmodel/6.2.2/lib/net5.0/NuGet.ProjectModel.cs", + "sha": "238c0cc1dd5b2fc900c4894afa3e63a79a1f36d6", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/referencePackages/src/nuget.projectmodel/6.2.2/lib/net5.0/NuGet.ProjectModel.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/238c0cc1dd5b2fc900c4894afa3e63a79a1f36d6", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/referencePackages/src/nuget.projectmodel/6.2.2/lib/net5.0/NuGet.ProjectModel.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "TypeSyntax.cs", + "path": "src/roslyn/src/Compilers/CSharp/Portable/Syntax/InternalSyntax/TypeSyntax.cs", + "sha": "2a059ab19cb0f4c65e3c0cfebb2d106b2999113c", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Compilers/CSharp/Portable/Syntax/InternalSyntax/TypeSyntax.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2a059ab19cb0f4c65e3c0cfebb2d106b2999113c", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Compilers/CSharp/Portable/Syntax/InternalSyntax/TypeSyntax.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Result.cs", + "path": "src/roslyn/src/Features/Core/Portable/EmbeddedLanguages/StackFrame/Result.cs", + "sha": "253c454ce64593389eb75472e3e65b3772c39a43", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn/src/Features/Core/Portable/EmbeddedLanguages/StackFrame/Result.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/253c454ce64593389eb75472e3e65b3772c39a43", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn/src/Features/Core/Portable/EmbeddedLanguages/StackFrame/Result.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs", + "path": "src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs", + "sha": "2a5c62c4888048f5de49348fb3d17f214321be05", + "url": "https://api.github.com/repositories/550902717/contents/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2a5c62c4888048f5de49348fb3d17f214321be05", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/roslyn-analyzers/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/ApiDesignGuidelines/IdentifiersShouldNotHaveIncorrectSuffix.Fixer.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "ISymUnmanagedScope2.cs", + "path": "src/symreader/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope2.cs", + "sha": "2a5f2289ab02dc4f56bc73b8f21b87f7d7fb9f16", + "url": "https://api.github.com/repositories/550902717/contents/src/symreader/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope2.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2a5f2289ab02dc4f56bc73b8f21b87f7d7fb9f16", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/symreader/src/Microsoft.DiaSymReader/Reader/ISymUnmanagedScope2.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "CommandLineProject.cs", + "path": "src/Workspaces/Core/Portable/Workspace/CommandLineProject.cs", + "sha": "374af767a20d83a7e8d7163ecc52045ed6a6d10a", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/Core/Portable/Workspace/CommandLineProject.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/374af767a20d83a7e8d7163ecc52045ed6a6d10a", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/Core/Portable/Workspace/CommandLineProject.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "ByAlphabeticalOrder.cs", + "path": "csharp/unit-testing/MSTest.Project/ByAlphabeticalOrder.cs", + "sha": "3ef892add7691e9d2f8162cf84b5fa377751416b", + "url": "https://api.github.com/repositories/119571446/contents/csharp/unit-testing/MSTest.Project/ByAlphabeticalOrder.cs?ref=9ea0841931b49f43371dd59b8b3297d91aca97e0", + "git_url": "https://api.github.com/repositories/119571446/git/blobs/3ef892add7691e9d2f8162cf84b5fa377751416b", + "html_url": "https://github.com/dotnet/samples/blob/9ea0841931b49f43371dd59b8b3297d91aca97e0/csharp/unit-testing/MSTest.Project/ByAlphabeticalOrder.cs", + "repository": { + "id": 119571446, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTk1NzE0NDY=", + "name": "samples", + "full_name": "dotnet/samples", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/samples", + "description": "Sample code referenced by the .NET documentation", + "fork": false, + "url": "https://api.github.com/repos/dotnet/samples", + "forks_url": "https://api.github.com/repos/dotnet/samples/forks", + "keys_url": "https://api.github.com/repos/dotnet/samples/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/samples/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/samples/teams", + "hooks_url": "https://api.github.com/repos/dotnet/samples/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/samples/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/samples/events", + "assignees_url": "https://api.github.com/repos/dotnet/samples/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/samples/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/samples/tags", + "blobs_url": "https://api.github.com/repos/dotnet/samples/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/samples/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/samples/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/samples/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/samples/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/samples/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/samples/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/samples/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/samples/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/samples/subscription", + "commits_url": "https://api.github.com/repos/dotnet/samples/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/samples/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/samples/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/samples/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/samples/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/samples/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/samples/merges", + "archive_url": "https://api.github.com/repos/dotnet/samples/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/samples/downloads", + "issues_url": "https://api.github.com/repos/dotnet/samples/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/samples/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/samples/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/samples/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/samples/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/samples/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/samples/deployments" + }, + "score": 1 + }, + { + "name": "DiagnosticProject.cs", + "path": "src/Analyzers/Microsoft.AspNetCore.Analyzer.Testing/src/DiagnosticProject.cs", + "sha": "381e38557ccc785a1b61a534fddad63d5792d21a", + "url": "https://api.github.com/repositories/17620347/contents/src/Analyzers/Microsoft.AspNetCore.Analyzer.Testing/src/DiagnosticProject.cs?ref=53aad9807f89c57c48b164adcecdb9010f09f8cf", + "git_url": "https://api.github.com/repositories/17620347/git/blobs/381e38557ccc785a1b61a534fddad63d5792d21a", + "html_url": "https://github.com/dotnet/aspnetcore/blob/53aad9807f89c57c48b164adcecdb9010f09f8cf/src/Analyzers/Microsoft.AspNetCore.Analyzer.Testing/src/DiagnosticProject.cs", + "repository": { + "id": 17620347, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzYyMDM0Nw==", + "name": "aspnetcore", + "full_name": "dotnet/aspnetcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/aspnetcore", + "description": "ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/aspnetcore", + "forks_url": "https://api.github.com/repos/dotnet/aspnetcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/aspnetcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/aspnetcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/aspnetcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/aspnetcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/aspnetcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/aspnetcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/aspnetcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/aspnetcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/aspnetcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/aspnetcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/aspnetcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/aspnetcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/aspnetcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/aspnetcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/aspnetcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/aspnetcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/aspnetcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/aspnetcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/aspnetcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/aspnetcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/aspnetcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/aspnetcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/aspnetcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/aspnetcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/aspnetcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/aspnetcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/aspnetcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/aspnetcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/aspnetcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/aspnetcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/aspnetcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/aspnetcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/aspnetcore/deployments" + }, + "score": 1 + }, + { + "name": "ProjectOutputElement.cs", + "path": "src/Build/Construction/ProjectOutputElement.cs", + "sha": "43814d3f9a08e0b509750653da0d1ef78c4a35ce", + "url": "https://api.github.com/repositories/32051890/contents/src/Build/Construction/ProjectOutputElement.cs?ref=946c584115367635c37ac7ecaadb2f36542f88b0", + "git_url": "https://api.github.com/repositories/32051890/git/blobs/43814d3f9a08e0b509750653da0d1ef78c4a35ce", + "html_url": "https://github.com/dotnet/msbuild/blob/946c584115367635c37ac7ecaadb2f36542f88b0/src/Build/Construction/ProjectOutputElement.cs", + "repository": { + "id": 32051890, + "node_id": "MDEwOlJlcG9zaXRvcnkzMjA1MTg5MA==", + "name": "msbuild", + "full_name": "dotnet/msbuild", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/msbuild", + "description": "The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/msbuild", + "forks_url": "https://api.github.com/repos/dotnet/msbuild/forks", + "keys_url": "https://api.github.com/repos/dotnet/msbuild/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/msbuild/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/msbuild/teams", + "hooks_url": "https://api.github.com/repos/dotnet/msbuild/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/msbuild/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/msbuild/events", + "assignees_url": "https://api.github.com/repos/dotnet/msbuild/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/msbuild/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/msbuild/tags", + "blobs_url": "https://api.github.com/repos/dotnet/msbuild/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/msbuild/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/msbuild/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/msbuild/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/msbuild/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/msbuild/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/msbuild/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/msbuild/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/msbuild/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/msbuild/subscription", + "commits_url": "https://api.github.com/repos/dotnet/msbuild/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/msbuild/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/msbuild/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/msbuild/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/msbuild/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/msbuild/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/msbuild/merges", + "archive_url": "https://api.github.com/repos/dotnet/msbuild/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/msbuild/downloads", + "issues_url": "https://api.github.com/repos/dotnet/msbuild/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/msbuild/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/msbuild/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/msbuild/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/msbuild/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/msbuild/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/msbuild/deployments" + }, + "score": 1 + }, + { + "name": "Microsoft.CodeAnalysis.Workspaces.cs", + "path": "src/source-build-reference-packages/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "sha": "2e3704253e1da684f44793b96daa37f808d0057d", + "url": "https://api.github.com/repositories/550902717/contents/src/source-build-reference-packages/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs?ref=a2edd6233c744e0b7f5ff9ae0c4910b873594ed6", + "git_url": "https://api.github.com/repositories/550902717/git/blobs/2e3704253e1da684f44793b96daa37f808d0057d", + "html_url": "https://github.com/dotnet/dotnet/blob/a2edd6233c744e0b7f5ff9ae0c4910b873594ed6/src/source-build-reference-packages/src/referencePackages/src/microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.cs", + "repository": { + "id": 550902717, + "node_id": "R_kgDOINYbvQ", + "name": "dotnet", + "full_name": "dotnet/dotnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet", + "description": "Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK from source", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet", + "forks_url": "https://api.github.com/repos/dotnet/dotnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet/deployments" + }, + "score": 1 + }, + { + "name": "Differ.cs", + "path": "src/extensions/try-convert/MSBuild.Conversion.Project/Differ.cs", + "sha": "37a732b24707c198564c923330efd49a087e190e", + "url": "https://api.github.com/repositories/332061101/contents/src/extensions/try-convert/MSBuild.Conversion.Project/Differ.cs?ref=be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45", + "git_url": "https://api.github.com/repositories/332061101/git/blobs/37a732b24707c198564c923330efd49a087e190e", + "html_url": "https://github.com/dotnet/upgrade-assistant/blob/be0ea11e8234f2a0bde2d170b0fdd455fa4f9a45/src/extensions/try-convert/MSBuild.Conversion.Project/Differ.cs", + "repository": { + "id": 332061101, + "node_id": "MDEwOlJlcG9zaXRvcnkzMzIwNjExMDE=", + "name": "upgrade-assistant", + "full_name": "dotnet/upgrade-assistant", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/upgrade-assistant", + "description": "A tool to assist developers in upgrading .NET Framework applications to .NET 6 and beyond", + "fork": false, + "url": "https://api.github.com/repos/dotnet/upgrade-assistant", + "forks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/forks", + "keys_url": "https://api.github.com/repos/dotnet/upgrade-assistant/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/upgrade-assistant/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/upgrade-assistant/teams", + "hooks_url": "https://api.github.com/repos/dotnet/upgrade-assistant/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/upgrade-assistant/events", + "assignees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/upgrade-assistant/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/tags", + "blobs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/upgrade-assistant/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/upgrade-assistant/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/upgrade-assistant/subscription", + "commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/upgrade-assistant/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/upgrade-assistant/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/upgrade-assistant/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/upgrade-assistant/merges", + "archive_url": "https://api.github.com/repos/dotnet/upgrade-assistant/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/upgrade-assistant/downloads", + "issues_url": "https://api.github.com/repos/dotnet/upgrade-assistant/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/upgrade-assistant/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/upgrade-assistant/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/upgrade-assistant/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/upgrade-assistant/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/upgrade-assistant/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/upgrade-assistant/deployments" + }, + "score": 1 + }, + { + "name": "VectorWhiten.cs", + "path": "docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Projection/VectorWhiten.cs", + "sha": "3f5e63a5f94416df23556770620b59b989c7103c", + "url": "https://api.github.com/repositories/132021166/contents/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Projection/VectorWhiten.cs?ref=4c799ab1c881de54328fdafbfcfc5352bd727e89", + "git_url": "https://api.github.com/repositories/132021166/git/blobs/3f5e63a5f94416df23556770620b59b989c7103c", + "html_url": "https://github.com/dotnet/machinelearning/blob/4c799ab1c881de54328fdafbfcfc5352bd727e89/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Projection/VectorWhiten.cs", + "repository": { + "id": 132021166, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzIwMjExNjY=", + "name": "machinelearning", + "full_name": "dotnet/machinelearning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/machinelearning", + "description": "ML.NET is an open source and cross-platform machine learning framework for .NET.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/machinelearning", + "forks_url": "https://api.github.com/repos/dotnet/machinelearning/forks", + "keys_url": "https://api.github.com/repos/dotnet/machinelearning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/machinelearning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/machinelearning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/machinelearning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/machinelearning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/machinelearning/events", + "assignees_url": "https://api.github.com/repos/dotnet/machinelearning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/machinelearning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/machinelearning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/machinelearning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/machinelearning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/machinelearning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/machinelearning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/machinelearning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/machinelearning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/machinelearning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/machinelearning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/machinelearning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/machinelearning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/machinelearning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/machinelearning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/machinelearning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/machinelearning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/machinelearning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/machinelearning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/machinelearning/merges", + "archive_url": "https://api.github.com/repos/dotnet/machinelearning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/machinelearning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/machinelearning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/machinelearning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/machinelearning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/machinelearning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/machinelearning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/machinelearning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/machinelearning/deployments" + }, + "score": 1 + }, + { + "name": "ProjectStyle.cs", + "path": "src/MSBuild.Abstractions/ProjectStyle.cs", + "sha": "2edd79a9886488a7b4eb739eb7231cedec7cd680", + "url": "https://api.github.com/repositories/209180058/contents/src/MSBuild.Abstractions/ProjectStyle.cs?ref=e77da83926191bf6dad0ee0d22d0a216b4cb39f7", + "git_url": "https://api.github.com/repositories/209180058/git/blobs/2edd79a9886488a7b4eb739eb7231cedec7cd680", + "html_url": "https://github.com/dotnet/try-convert/blob/e77da83926191bf6dad0ee0d22d0a216b4cb39f7/src/MSBuild.Abstractions/ProjectStyle.cs", + "repository": { + "id": 209180058, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDkxODAwNTg=", + "name": "try-convert", + "full_name": "dotnet/try-convert", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/try-convert", + "description": "Helping .NET developers port their projects to .NET Core!", + "fork": false, + "url": "https://api.github.com/repos/dotnet/try-convert", + "forks_url": "https://api.github.com/repos/dotnet/try-convert/forks", + "keys_url": "https://api.github.com/repos/dotnet/try-convert/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/try-convert/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/try-convert/teams", + "hooks_url": "https://api.github.com/repos/dotnet/try-convert/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/try-convert/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/try-convert/events", + "assignees_url": "https://api.github.com/repos/dotnet/try-convert/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/try-convert/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/try-convert/tags", + "blobs_url": "https://api.github.com/repos/dotnet/try-convert/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/try-convert/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/try-convert/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/try-convert/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/try-convert/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/try-convert/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/try-convert/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/try-convert/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/try-convert/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/try-convert/subscription", + "commits_url": "https://api.github.com/repos/dotnet/try-convert/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/try-convert/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/try-convert/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/try-convert/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/try-convert/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/try-convert/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/try-convert/merges", + "archive_url": "https://api.github.com/repos/dotnet/try-convert/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/try-convert/downloads", + "issues_url": "https://api.github.com/repos/dotnet/try-convert/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/try-convert/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/try-convert/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/try-convert/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/try-convert/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/try-convert/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/try-convert/deployments" + }, + "score": 1 + }, + { + "name": "ProjectFile.cs", + "path": "src/Microsoft.DotNet.Interactive.CSharpProject/ProjectFile.cs", + "sha": "36d6a6e72456b606ae1d2cfc9658feaaa662cee9", + "url": "https://api.github.com/repositories/235469871/contents/src/Microsoft.DotNet.Interactive.CSharpProject/ProjectFile.cs?ref=69a961635590e271bac141899380de1ac2089613", + "git_url": "https://api.github.com/repositories/235469871/git/blobs/36d6a6e72456b606ae1d2cfc9658feaaa662cee9", + "html_url": "https://github.com/dotnet/interactive/blob/69a961635590e271bac141899380de1ac2089613/src/Microsoft.DotNet.Interactive.CSharpProject/ProjectFile.cs", + "repository": { + "id": 235469871, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzU0Njk4NzE=", + "name": "interactive", + "full_name": "dotnet/interactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/interactive", + "description": ".NET Interactive combines the power of .NET with many other languages to create notebooks, REPLs, and embedded coding experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/interactive", + "forks_url": "https://api.github.com/repos/dotnet/interactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/interactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/interactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/interactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/interactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/interactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/interactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/interactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/interactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/interactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/interactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/interactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/interactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/interactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/interactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/interactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/interactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/interactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/interactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/interactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/interactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/interactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/interactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/interactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/interactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/interactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/interactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/interactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/interactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/interactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/interactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/interactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/interactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/interactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/interactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/interactive/deployments" + }, + "score": 1 + }, + { + "name": "ReferenceContainerNode.cs", + "path": "vsintegration/src/FSharp.ProjectSystem.Base/ReferenceContainerNode.cs", + "sha": "3850d0c4e0bfd4ccf7c2be87a061e987334b59d4", + "url": "https://api.github.com/repositories/29048891/contents/vsintegration/src/FSharp.ProjectSystem.Base/ReferenceContainerNode.cs?ref=256c7b240e063217a51b90d8886d0b789ceb066e", + "git_url": "https://api.github.com/repositories/29048891/git/blobs/3850d0c4e0bfd4ccf7c2be87a061e987334b59d4", + "html_url": "https://github.com/dotnet/fsharp/blob/256c7b240e063217a51b90d8886d0b789ceb066e/vsintegration/src/FSharp.ProjectSystem.Base/ReferenceContainerNode.cs", + "repository": { + "id": 29048891, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA0ODg5MQ==", + "name": "fsharp", + "full_name": "dotnet/fsharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/fsharp", + "description": "The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/fsharp", + "forks_url": "https://api.github.com/repos/dotnet/fsharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/fsharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/fsharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/fsharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/fsharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/fsharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/fsharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/fsharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/fsharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/fsharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/fsharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/fsharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/fsharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/fsharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/fsharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/fsharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/fsharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/fsharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/fsharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/fsharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/fsharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/fsharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/fsharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/fsharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/fsharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/fsharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/fsharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/fsharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/fsharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/fsharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/fsharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/fsharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/fsharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/fsharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/fsharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/fsharp/deployments" + }, + "score": 1 + }, + { + "name": "TransformProjectsIntoContainers.cs", + "path": "src/Microsoft.Tye.Hosting/TransformProjectsIntoContainers.cs", + "sha": "31c1ac9f9217a7ce1f82d51fddd1891cf18e6ec4", + "url": "https://api.github.com/repositories/243854166/contents/src/Microsoft.Tye.Hosting/TransformProjectsIntoContainers.cs?ref=75465614e67b5f1e500d1f8b1cb70af22c0c683e", + "git_url": "https://api.github.com/repositories/243854166/git/blobs/31c1ac9f9217a7ce1f82d51fddd1891cf18e6ec4", + "html_url": "https://github.com/dotnet/tye/blob/75465614e67b5f1e500d1f8b1cb70af22c0c683e/src/Microsoft.Tye.Hosting/TransformProjectsIntoContainers.cs", + "repository": { + "id": 243854166, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDM4NTQxNjY=", + "name": "tye", + "full_name": "dotnet/tye", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/tye", + "description": "Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with minimal configuration.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/tye", + "forks_url": "https://api.github.com/repos/dotnet/tye/forks", + "keys_url": "https://api.github.com/repos/dotnet/tye/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/tye/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/tye/teams", + "hooks_url": "https://api.github.com/repos/dotnet/tye/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/tye/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/tye/events", + "assignees_url": "https://api.github.com/repos/dotnet/tye/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/tye/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/tye/tags", + "blobs_url": "https://api.github.com/repos/dotnet/tye/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/tye/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/tye/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/tye/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/tye/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/tye/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/tye/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/tye/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/tye/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/tye/subscription", + "commits_url": "https://api.github.com/repos/dotnet/tye/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/tye/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/tye/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/tye/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/tye/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/tye/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/tye/merges", + "archive_url": "https://api.github.com/repos/dotnet/tye/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/tye/downloads", + "issues_url": "https://api.github.com/repos/dotnet/tye/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/tye/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/tye/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/tye/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/tye/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/tye/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/tye/deployments" + }, + "score": 1 + }, + { + "name": "MigrationsCommand.cs", + "path": "src/ef6/Commands/MigrationsCommand.cs", + "sha": "425529ef506ba8acf789f43ba6a6b5bc644b442a", + "url": "https://api.github.com/repositories/39985381/contents/src/ef6/Commands/MigrationsCommand.cs?ref=033d72b6fdebd0b1442aab59d777f3d925e7d95c", + "git_url": "https://api.github.com/repositories/39985381/git/blobs/425529ef506ba8acf789f43ba6a6b5bc644b442a", + "html_url": "https://github.com/dotnet/ef6/blob/033d72b6fdebd0b1442aab59d777f3d925e7d95c/src/ef6/Commands/MigrationsCommand.cs", + "repository": { + "id": 39985381, + "node_id": "MDEwOlJlcG9zaXRvcnkzOTk4NTM4MQ==", + "name": "ef6", + "full_name": "dotnet/ef6", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6", + "description": "This is the codebase for Entity Framework 6 (previously maintained at https://entityframework.codeplex.com). Entity Framework Core is maintained at https://github.com/dotnet/efcore.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6", + "forks_url": "https://api.github.com/repos/dotnet/ef6/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6/deployments" + }, + "score": 1 + }, + { + "name": "MqttTopicFilter.cs", + "path": "Source/MQTTnet/Packets/MqttTopicFilter.cs", + "sha": "41876e71deb4a85cd7d3c9efb2bd7a4bfea8056a", + "url": "https://api.github.com/repositories/85242321/contents/Source/MQTTnet/Packets/MqttTopicFilter.cs?ref=9295626503231e50310aba104ed94e216ba4e95a", + "git_url": "https://api.github.com/repositories/85242321/git/blobs/41876e71deb4a85cd7d3c9efb2bd7a4bfea8056a", + "html_url": "https://github.com/dotnet/MQTTnet/blob/9295626503231e50310aba104ed94e216ba4e95a/Source/MQTTnet/Packets/MqttTopicFilter.cs", + "repository": { + "id": 85242321, + "node_id": "MDEwOlJlcG9zaXRvcnk4NTI0MjMyMQ==", + "name": "MQTTnet", + "full_name": "dotnet/MQTTnet", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/MQTTnet", + "description": "MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/MQTTnet", + "forks_url": "https://api.github.com/repos/dotnet/MQTTnet/forks", + "keys_url": "https://api.github.com/repos/dotnet/MQTTnet/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/MQTTnet/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/MQTTnet/teams", + "hooks_url": "https://api.github.com/repos/dotnet/MQTTnet/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/MQTTnet/events", + "assignees_url": "https://api.github.com/repos/dotnet/MQTTnet/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/MQTTnet/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/MQTTnet/tags", + "blobs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/MQTTnet/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/MQTTnet/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/MQTTnet/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/MQTTnet/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/MQTTnet/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/MQTTnet/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/MQTTnet/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/MQTTnet/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/MQTTnet/subscription", + "commits_url": "https://api.github.com/repos/dotnet/MQTTnet/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/MQTTnet/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/MQTTnet/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/MQTTnet/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/MQTTnet/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/MQTTnet/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/MQTTnet/merges", + "archive_url": "https://api.github.com/repos/dotnet/MQTTnet/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/MQTTnet/downloads", + "issues_url": "https://api.github.com/repos/dotnet/MQTTnet/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/MQTTnet/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/MQTTnet/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/MQTTnet/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/MQTTnet/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/MQTTnet/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/MQTTnet/deployments" + }, + "score": 1 + }, + { + "name": "PlaywrightFixture.cs", + "path": "src/Microsoft.TryDotNet.IntegrationTests/PlaywrightFixture.cs", + "sha": "412448fda4a224f9f0153df7e3d56523345c83b2", + "url": "https://api.github.com/repositories/104407534/contents/src/Microsoft.TryDotNet.IntegrationTests/PlaywrightFixture.cs?ref=4a671ffd36d04373f1069aad8dd24a730889b035", + "git_url": "https://api.github.com/repositories/104407534/git/blobs/412448fda4a224f9f0153df7e3d56523345c83b2", + "html_url": "https://github.com/dotnet/try/blob/4a671ffd36d04373f1069aad8dd24a730889b035/src/Microsoft.TryDotNet.IntegrationTests/PlaywrightFixture.cs", + "repository": { + "id": 104407534, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ0MDc1MzQ=", + "name": "try", + "full_name": "dotnet/try", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/try", + "description": "Try .NET provides developers and content authors with tools to create interactive experiences.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/try", + "forks_url": "https://api.github.com/repos/dotnet/try/forks", + "keys_url": "https://api.github.com/repos/dotnet/try/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/try/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/try/teams", + "hooks_url": "https://api.github.com/repos/dotnet/try/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/try/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/try/events", + "assignees_url": "https://api.github.com/repos/dotnet/try/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/try/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/try/tags", + "blobs_url": "https://api.github.com/repos/dotnet/try/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/try/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/try/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/try/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/try/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/try/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/try/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/try/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/try/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/try/subscription", + "commits_url": "https://api.github.com/repos/dotnet/try/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/try/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/try/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/try/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/try/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/try/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/try/merges", + "archive_url": "https://api.github.com/repos/dotnet/try/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/try/downloads", + "issues_url": "https://api.github.com/repos/dotnet/try/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/try/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/try/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/try/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/try/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/try/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/try/deployments" + }, + "score": 1 + }, + { + "name": "BCrypt+SafeHashHandle.cs", + "path": "src/BCrypt/BCrypt+SafeHashHandle.cs", + "sha": "3e0f3f024f224aec66333fa2a27bf79c5e0fba58", + "url": "https://api.github.com/repositories/44758360/contents/src/BCrypt/BCrypt%2BSafeHashHandle.cs?ref=93de9b78bcd8ed84d02901b0556c348fa66257ed", + "git_url": "https://api.github.com/repositories/44758360/git/blobs/3e0f3f024f224aec66333fa2a27bf79c5e0fba58", + "html_url": "https://github.com/dotnet/pinvoke/blob/93de9b78bcd8ed84d02901b0556c348fa66257ed/src/BCrypt/BCrypt%2BSafeHashHandle.cs", + "repository": { + "id": 44758360, + "node_id": "MDEwOlJlcG9zaXRvcnk0NDc1ODM2MA==", + "name": "pinvoke", + "full_name": "dotnet/pinvoke", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/pinvoke", + "description": "A library containing all P/Invoke code so you don't have to import it every time. Maintained and updated to support the latest Windows OS.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/pinvoke", + "forks_url": "https://api.github.com/repos/dotnet/pinvoke/forks", + "keys_url": "https://api.github.com/repos/dotnet/pinvoke/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/pinvoke/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/pinvoke/teams", + "hooks_url": "https://api.github.com/repos/dotnet/pinvoke/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/pinvoke/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/pinvoke/events", + "assignees_url": "https://api.github.com/repos/dotnet/pinvoke/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/pinvoke/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/pinvoke/tags", + "blobs_url": "https://api.github.com/repos/dotnet/pinvoke/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/pinvoke/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/pinvoke/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/pinvoke/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/pinvoke/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/pinvoke/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/pinvoke/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/pinvoke/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/pinvoke/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/pinvoke/subscription", + "commits_url": "https://api.github.com/repos/dotnet/pinvoke/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/pinvoke/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/pinvoke/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/pinvoke/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/pinvoke/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/pinvoke/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/pinvoke/merges", + "archive_url": "https://api.github.com/repos/dotnet/pinvoke/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/pinvoke/downloads", + "issues_url": "https://api.github.com/repos/dotnet/pinvoke/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/pinvoke/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/pinvoke/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/pinvoke/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/pinvoke/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/pinvoke/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/pinvoke/deployments" + }, + "score": 1 + }, + { + "name": "Interop.FR.cs", + "path": "src/System.Windows.Forms.Primitives/src/Interop/Comdlg32/Interop.FR.cs", + "sha": "31bce14dfd5f2d5ea38f9d61193c4cec6719dff0", + "url": "https://api.github.com/repositories/153711830/contents/src/System.Windows.Forms.Primitives/src/Interop/Comdlg32/Interop.FR.cs?ref=386d51b6a85689a0964d0596e8e0d03a471fc225", + "git_url": "https://api.github.com/repositories/153711830/git/blobs/31bce14dfd5f2d5ea38f9d61193c4cec6719dff0", + "html_url": "https://github.com/dotnet/winforms/blob/386d51b6a85689a0964d0596e8e0d03a471fc225/src/System.Windows.Forms.Primitives/src/Interop/Comdlg32/Interop.FR.cs", + "repository": { + "id": 153711830, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE4MzA=", + "name": "winforms", + "full_name": "dotnet/winforms", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/winforms", + "description": "Windows Forms is a .NET UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/winforms", + "forks_url": "https://api.github.com/repos/dotnet/winforms/forks", + "keys_url": "https://api.github.com/repos/dotnet/winforms/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/winforms/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/winforms/teams", + "hooks_url": "https://api.github.com/repos/dotnet/winforms/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/winforms/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/winforms/events", + "assignees_url": "https://api.github.com/repos/dotnet/winforms/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/winforms/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/winforms/tags", + "blobs_url": "https://api.github.com/repos/dotnet/winforms/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/winforms/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/winforms/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/winforms/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/winforms/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/winforms/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/winforms/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/winforms/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/winforms/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/winforms/subscription", + "commits_url": "https://api.github.com/repos/dotnet/winforms/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/winforms/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/winforms/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/winforms/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/winforms/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/winforms/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/winforms/merges", + "archive_url": "https://api.github.com/repos/dotnet/winforms/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/winforms/downloads", + "issues_url": "https://api.github.com/repos/dotnet/winforms/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/winforms/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/winforms/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/winforms/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/winforms/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/winforms/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/winforms/deployments" + }, + "score": 1 + }, + { + "name": "Modifiability.cs", + "path": "src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Modifiability.cs", + "sha": "39e56d6b6c41cc03f73eb802a683f8f3f5693324", + "url": "https://api.github.com/repositories/153711945/contents/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Modifiability.cs?ref=b99e4a9485dd60648257fde6effd3f093af99961", + "git_url": "https://api.github.com/repositories/153711945/git/blobs/39e56d6b6c41cc03f73eb802a683f8f3f5693324", + "html_url": "https://github.com/dotnet/wpf/blob/b99e4a9485dd60648257fde6effd3f093af99961/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Modifiability.cs", + "repository": { + "id": 153711945, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTM3MTE5NDU=", + "name": "wpf", + "full_name": "dotnet/wpf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wpf", + "description": "WPF is a .NET Core UI framework for building Windows desktop applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wpf", + "forks_url": "https://api.github.com/repos/dotnet/wpf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wpf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wpf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wpf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wpf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wpf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wpf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wpf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wpf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wpf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wpf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wpf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wpf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wpf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wpf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wpf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wpf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wpf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wpf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wpf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wpf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wpf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wpf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wpf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wpf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wpf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wpf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wpf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wpf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wpf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wpf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wpf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wpf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wpf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wpf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wpf/deployments" + }, + "score": 1 + }, + { + "name": "SpreadsheetDocumentExtensions.cs", + "path": "src/DocumentFormat.OpenXml/Packaging/SpreadsheetDocumentExtensions.cs", + "sha": "41588402afd4decf4cffeb118fadd82a411ac425", + "url": "https://api.github.com/repositories/20532052/contents/src/DocumentFormat.OpenXml/Packaging/SpreadsheetDocumentExtensions.cs?ref=e7a0331218de7f53582698bdfd1ddcc2124c1a40", + "git_url": "https://api.github.com/repositories/20532052/git/blobs/41588402afd4decf4cffeb118fadd82a411ac425", + "html_url": "https://github.com/dotnet/Open-XML-SDK/blob/e7a0331218de7f53582698bdfd1ddcc2124c1a40/src/DocumentFormat.OpenXml/Packaging/SpreadsheetDocumentExtensions.cs", + "repository": { + "id": 20532052, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDUzMjA1Mg==", + "name": "Open-XML-SDK", + "full_name": "dotnet/Open-XML-SDK", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Open-XML-SDK", + "description": "Open XML SDK by Microsoft", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Open-XML-SDK", + "forks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/forks", + "keys_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/events", + "assignees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/merges", + "archive_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Open-XML-SDK/deployments" + }, + "score": 1 + }, + { + "name": "UnconfiguredProjectTasksService.cs", + "path": "src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/UnconfiguredProjectTasksService.cs", + "sha": "32be6e86ed1ea5703bf7fbd3f71ac6cbdbad44fd", + "url": "https://api.github.com/repositories/56740275/contents/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/UnconfiguredProjectTasksService.cs?ref=bf4f33ec1843551eb775f73cff515a939aa2f629", + "git_url": "https://api.github.com/repositories/56740275/git/blobs/32be6e86ed1ea5703bf7fbd3f71ac6cbdbad44fd", + "html_url": "https://github.com/dotnet/project-system/blob/bf4f33ec1843551eb775f73cff515a939aa2f629/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/UnconfiguredProjectTasksService.cs", + "repository": { + "id": 56740275, + "node_id": "MDEwOlJlcG9zaXRvcnk1Njc0MDI3NQ==", + "name": "project-system", + "full_name": "dotnet/project-system", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/project-system", + "description": "The .NET Project System for Visual Studio", + "fork": false, + "url": "https://api.github.com/repos/dotnet/project-system", + "forks_url": "https://api.github.com/repos/dotnet/project-system/forks", + "keys_url": "https://api.github.com/repos/dotnet/project-system/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/project-system/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/project-system/teams", + "hooks_url": "https://api.github.com/repos/dotnet/project-system/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/project-system/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/project-system/events", + "assignees_url": "https://api.github.com/repos/dotnet/project-system/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/project-system/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/project-system/tags", + "blobs_url": "https://api.github.com/repos/dotnet/project-system/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/project-system/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/project-system/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/project-system/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/project-system/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/project-system/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/project-system/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/project-system/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/project-system/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/project-system/subscription", + "commits_url": "https://api.github.com/repos/dotnet/project-system/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/project-system/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/project-system/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/project-system/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/project-system/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/project-system/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/project-system/merges", + "archive_url": "https://api.github.com/repos/dotnet/project-system/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/project-system/downloads", + "issues_url": "https://api.github.com/repos/dotnet/project-system/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/project-system/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/project-system/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/project-system/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/project-system/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/project-system/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/project-system/deployments" + }, + "score": 1 + }, + { + "name": "AudioMetaData.cs", + "path": "src/TorchAudio/AudioMetaData.cs", + "sha": "43737a584f03ad472eee7db273bc1f9861c6ef9e", + "url": "https://api.github.com/repositories/152770407/contents/src/TorchAudio/AudioMetaData.cs?ref=8157954c65932b7cf5ff92a40ff54d65b923e972", + "git_url": "https://api.github.com/repositories/152770407/git/blobs/43737a584f03ad472eee7db273bc1f9861c6ef9e", + "html_url": "https://github.com/dotnet/TorchSharp/blob/8157954c65932b7cf5ff92a40ff54d65b923e972/src/TorchAudio/AudioMetaData.cs", + "repository": { + "id": 152770407, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTI3NzA0MDc=", + "name": "TorchSharp", + "full_name": "dotnet/TorchSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/TorchSharp", + "description": "A .NET library that provides access to the library that powers PyTorch.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/TorchSharp", + "forks_url": "https://api.github.com/repos/dotnet/TorchSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/TorchSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/TorchSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/TorchSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/TorchSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/TorchSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/TorchSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/TorchSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/TorchSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/TorchSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/TorchSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/TorchSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/TorchSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/TorchSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/TorchSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/TorchSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/TorchSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/TorchSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/TorchSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/TorchSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/TorchSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/TorchSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/TorchSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/TorchSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/TorchSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/TorchSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/TorchSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/TorchSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/TorchSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/TorchSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/TorchSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/TorchSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/TorchSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/TorchSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/TorchSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/TorchSharp/deployments" + }, + "score": 1 + }, + { + "name": "NumericExtensions.cs", + "path": "src/Shared/NumericExtensions/NumericExtensions.cs", + "sha": "3fff74b193c75211526319c8ec44e1510183a934", + "url": "https://api.github.com/repositories/30932325/contents/src/Shared/NumericExtensions/NumericExtensions.cs?ref=3d647bfb977e5e0b604a3985e337d11219c3db48", + "git_url": "https://api.github.com/repositories/30932325/git/blobs/3fff74b193c75211526319c8ec44e1510183a934", + "html_url": "https://github.com/dotnet/extensions/blob/3d647bfb977e5e0b604a3985e337d11219c3db48/src/Shared/NumericExtensions/NumericExtensions.cs", + "repository": { + "id": 30932325, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDkzMjMyNQ==", + "name": "extensions", + "full_name": "dotnet/extensions", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/extensions", + "description": "This repository contains a suite of libraries that provide facilities commonly needed when creating production-ready applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/extensions", + "forks_url": "https://api.github.com/repos/dotnet/extensions/forks", + "keys_url": "https://api.github.com/repos/dotnet/extensions/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/extensions/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/extensions/teams", + "hooks_url": "https://api.github.com/repos/dotnet/extensions/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/extensions/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/extensions/events", + "assignees_url": "https://api.github.com/repos/dotnet/extensions/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/extensions/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/extensions/tags", + "blobs_url": "https://api.github.com/repos/dotnet/extensions/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/extensions/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/extensions/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/extensions/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/extensions/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/extensions/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/extensions/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/extensions/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/extensions/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/extensions/subscription", + "commits_url": "https://api.github.com/repos/dotnet/extensions/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/extensions/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/extensions/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/extensions/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/extensions/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/extensions/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/extensions/merges", + "archive_url": "https://api.github.com/repos/dotnet/extensions/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/extensions/downloads", + "issues_url": "https://api.github.com/repos/dotnet/extensions/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/extensions/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/extensions/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/extensions/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/extensions/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/extensions/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/extensions/deployments" + }, + "score": 1 + }, + { + "name": "Abs.cs", + "path": "src/benchmarks/micro/runtime/Math/Functions/Single/Abs.cs", + "sha": "31acf55eb9867fa5d43f9813c07a4e3f3ef94774", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Math/Functions/Single/Abs.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/31acf55eb9867fa5d43f9813c07a4e3f3ef94774", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Math/Functions/Single/Abs.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "IModule.cs", + "path": "src/Compiler/TransformFramework/CodeModel/Interfaces/IModule.cs", + "sha": "3e2e3ba4960599553dfe660e3a288d7a70f3ab3f", + "url": "https://api.github.com/repositories/148852400/contents/src/Compiler/TransformFramework/CodeModel/Interfaces/IModule.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/3e2e3ba4960599553dfe660e3a288d7a70f3ab3f", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Compiler/TransformFramework/CodeModel/Interfaces/IModule.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "ClinicalTrialModel.cs", + "path": "src/Examples/ClinicalTrial/ClinicalTrialModel.cs", + "sha": "42da8c5b5f946ffa33c8d73f473fbac9bece2994", + "url": "https://api.github.com/repositories/148852400/contents/src/Examples/ClinicalTrial/ClinicalTrialModel.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/42da8c5b5f946ffa33c8d73f473fbac9bece2994", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Examples/ClinicalTrial/ClinicalTrialModel.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "Window.cs", + "path": "Rx.NET/Source/src/System.Reactive/Linq/Observable/Window.cs", + "sha": "42eda26bffed834777d39b65ed8fc5b95b7d336e", + "url": "https://api.github.com/repositories/12576526/contents/Rx.NET/Source/src/System.Reactive/Linq/Observable/Window.cs?ref=95d9ea9d2786f6ec49a051c5cff47dc42591e54f", + "git_url": "https://api.github.com/repositories/12576526/git/blobs/42eda26bffed834777d39b65ed8fc5b95b7d336e", + "html_url": "https://github.com/dotnet/reactive/blob/95d9ea9d2786f6ec49a051c5cff47dc42591e54f/Rx.NET/Source/src/System.Reactive/Linq/Observable/Window.cs", + "repository": { + "id": 12576526, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjU3NjUyNg==", + "name": "reactive", + "full_name": "dotnet/reactive", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/reactive", + "description": "The Reactive Extensions for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/reactive", + "forks_url": "https://api.github.com/repos/dotnet/reactive/forks", + "keys_url": "https://api.github.com/repos/dotnet/reactive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/reactive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/reactive/teams", + "hooks_url": "https://api.github.com/repos/dotnet/reactive/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/reactive/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/reactive/events", + "assignees_url": "https://api.github.com/repos/dotnet/reactive/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/reactive/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/reactive/tags", + "blobs_url": "https://api.github.com/repos/dotnet/reactive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/reactive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/reactive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/reactive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/reactive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/reactive/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/reactive/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/reactive/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/reactive/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/reactive/subscription", + "commits_url": "https://api.github.com/repos/dotnet/reactive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/reactive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/reactive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/reactive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/reactive/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/reactive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/reactive/merges", + "archive_url": "https://api.github.com/repos/dotnet/reactive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/reactive/downloads", + "issues_url": "https://api.github.com/repos/dotnet/reactive/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/reactive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/reactive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/reactive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/reactive/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/reactive/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/reactive/deployments" + }, + "score": 1 + }, + { + "name": "AnnotatedUsage.cs", + "path": "src/Microsoft.DotNet.SourceBuild/tasks/src/UsageReport/AnnotatedUsage.cs", + "sha": "383cde9cbf93aa0978c58eecf7079d26b0e9e82c", + "url": "https://api.github.com/repositories/121444325/contents/src/Microsoft.DotNet.SourceBuild/tasks/src/UsageReport/AnnotatedUsage.cs?ref=e4bd767159fde419b50dd54c6d83e1ef970a68d0", + "git_url": "https://api.github.com/repositories/121444325/git/blobs/383cde9cbf93aa0978c58eecf7079d26b0e9e82c", + "html_url": "https://github.com/dotnet/arcade/blob/e4bd767159fde419b50dd54c6d83e1ef970a68d0/src/Microsoft.DotNet.SourceBuild/tasks/src/UsageReport/AnnotatedUsage.cs", + "repository": { + "id": 121444325, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDQzMjU=", + "name": "arcade", + "full_name": "dotnet/arcade", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/arcade", + "description": "Tools that provide common build infrastructure for multiple .NET Foundation projects.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/arcade", + "forks_url": "https://api.github.com/repos/dotnet/arcade/forks", + "keys_url": "https://api.github.com/repos/dotnet/arcade/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/arcade/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/arcade/teams", + "hooks_url": "https://api.github.com/repos/dotnet/arcade/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/arcade/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/arcade/events", + "assignees_url": "https://api.github.com/repos/dotnet/arcade/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/arcade/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/arcade/tags", + "blobs_url": "https://api.github.com/repos/dotnet/arcade/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/arcade/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/arcade/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/arcade/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/arcade/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/arcade/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/arcade/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/arcade/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/arcade/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/arcade/subscription", + "commits_url": "https://api.github.com/repos/dotnet/arcade/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/arcade/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/arcade/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/arcade/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/arcade/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/arcade/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/arcade/merges", + "archive_url": "https://api.github.com/repos/dotnet/arcade/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/arcade/downloads", + "issues_url": "https://api.github.com/repos/dotnet/arcade/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/arcade/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/arcade/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/arcade/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/arcade/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/arcade/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/arcade/deployments" + }, + "score": 1 + }, + { + "name": "AnalyzerConfigOptionsProviderExtensions.cs", + "path": "src/Utilities/Compiler/Options/AnalyzerConfigOptionsProviderExtensions.cs", + "sha": "374419ba14ffac7d7822a177a09cc88c4a44741c", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/Compiler/Options/AnalyzerConfigOptionsProviderExtensions.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/374419ba14ffac7d7822a177a09cc88c4a44741c", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/Compiler/Options/AnalyzerConfigOptionsProviderExtensions.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "IBindingMulticastCapabilities.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/IBindingMulticastCapabilities.cs", + "sha": "2e4746be366034404cdcdf826ec6a84c8f6d4664", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/IBindingMulticastCapabilities.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2e4746be366034404cdcdf826ec6a84c8f6d4664", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/IBindingMulticastCapabilities.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "IGenericArgumentProvider.cs", + "path": "src/Compiler/TransformFramework/CodeModel/Interfaces/IGenericArgumentProvider.cs", + "sha": "389f18f099c7417ffc45f789105523ce1839ad2e", + "url": "https://api.github.com/repositories/148852400/contents/src/Compiler/TransformFramework/CodeModel/Interfaces/IGenericArgumentProvider.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/389f18f099c7417ffc45f789105523ce1839ad2e", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Compiler/TransformFramework/CodeModel/Interfaces/IGenericArgumentProvider.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "CodeAnalysisDiagnosticsResources.cs", + "path": "src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs", + "sha": "39bf447d74c1c176e8984b179c86cf8a07ba709f", + "url": "https://api.github.com/repositories/36946704/contents/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/39bf447d74c1c176e8984b179c86cf8a07ba709f", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Microsoft.CodeAnalysis.Analyzers/Core/CodeAnalysisDiagnosticsResources.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "If.cs", + "path": "src/benchmarks/micro/runtime/Statements/If.cs", + "sha": "3db6b90522461fa418fd1ffb2bb1f1659703a3e6", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Statements/If.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/3db6b90522461fa418fd1ffb2bb1f1659703a3e6", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Statements/If.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "ITraceSourceStringProvider.cs", + "path": "src/System.ServiceModel.Primitives/src/Internals/System/Runtime/Diagnostics/ITraceSourceStringProvider.cs", + "sha": "301984085891d9b82d61c9520362365bfdc3ad25", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/Internals/System/Runtime/Diagnostics/ITraceSourceStringProvider.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/301984085891d9b82d61c9520362365bfdc3ad25", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/Internals/System/Runtime/Diagnostics/ITraceSourceStringProvider.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "SecureConversationVersion.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecureConversationVersion.cs", + "sha": "37e2c516464f12257f77ef7f8c2102eb11bb20f3", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecureConversationVersion.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/37e2c516464f12257f77ef7f8c2102eb11bb20f3", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecureConversationVersion.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "TimeSpanConverter.cs", + "path": "src/Microsoft.Crank.AzureDevOpsWorker/TimeSpanConverter.cs", + "sha": "31412b832cf6df651c6206b44c36115cf8732f37", + "url": "https://api.github.com/repositories/257738951/contents/src/Microsoft.Crank.AzureDevOpsWorker/TimeSpanConverter.cs?ref=20fd95ee1a91b7030058745e620b757d795c6d7a", + "git_url": "https://api.github.com/repositories/257738951/git/blobs/31412b832cf6df651c6206b44c36115cf8732f37", + "html_url": "https://github.com/dotnet/crank/blob/20fd95ee1a91b7030058745e620b757d795c6d7a/src/Microsoft.Crank.AzureDevOpsWorker/TimeSpanConverter.cs", + "repository": { + "id": 257738951, + "node_id": "MDEwOlJlcG9zaXRvcnkyNTc3Mzg5NTE=", + "name": "crank", + "full_name": "dotnet/crank", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/crank", + "description": "Benchmarking infrastructure for applications", + "fork": false, + "url": "https://api.github.com/repos/dotnet/crank", + "forks_url": "https://api.github.com/repos/dotnet/crank/forks", + "keys_url": "https://api.github.com/repos/dotnet/crank/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/crank/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/crank/teams", + "hooks_url": "https://api.github.com/repos/dotnet/crank/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/crank/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/crank/events", + "assignees_url": "https://api.github.com/repos/dotnet/crank/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/crank/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/crank/tags", + "blobs_url": "https://api.github.com/repos/dotnet/crank/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/crank/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/crank/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/crank/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/crank/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/crank/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/crank/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/crank/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/crank/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/crank/subscription", + "commits_url": "https://api.github.com/repos/dotnet/crank/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/crank/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/crank/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/crank/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/crank/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/crank/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/crank/merges", + "archive_url": "https://api.github.com/repos/dotnet/crank/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/crank/downloads", + "issues_url": "https://api.github.com/repos/dotnet/crank/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/crank/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/crank/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/crank/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/crank/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/crank/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/crank/deployments" + }, + "score": 1 + }, + { + "name": "PreferenceEvent.cs", + "path": "src/Microsoft.HttpRepl/Telemetry/Events/PreferenceEvent.cs", + "sha": "2dc2c26e04884a69062cdd887c533551f2daa293", + "url": "https://api.github.com/repositories/191466073/contents/src/Microsoft.HttpRepl/Telemetry/Events/PreferenceEvent.cs?ref=1b0b7982bba2ef34778586f460a9db938cffe4ea", + "git_url": "https://api.github.com/repositories/191466073/git/blobs/2dc2c26e04884a69062cdd887c533551f2daa293", + "html_url": "https://github.com/dotnet/HttpRepl/blob/1b0b7982bba2ef34778586f460a9db938cffe4ea/src/Microsoft.HttpRepl/Telemetry/Events/PreferenceEvent.cs", + "repository": { + "id": 191466073, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTE0NjYwNzM=", + "name": "HttpRepl", + "full_name": "dotnet/HttpRepl", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/HttpRepl", + "description": "The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that's supported everywhere .NET Core is supported and is used for making HTTP requests to test ASP.NET Core web APIs and view their results.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/HttpRepl", + "forks_url": "https://api.github.com/repos/dotnet/HttpRepl/forks", + "keys_url": "https://api.github.com/repos/dotnet/HttpRepl/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/HttpRepl/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/HttpRepl/teams", + "hooks_url": "https://api.github.com/repos/dotnet/HttpRepl/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/HttpRepl/events", + "assignees_url": "https://api.github.com/repos/dotnet/HttpRepl/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/HttpRepl/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/HttpRepl/tags", + "blobs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/HttpRepl/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/HttpRepl/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/HttpRepl/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/HttpRepl/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/HttpRepl/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/HttpRepl/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/HttpRepl/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/HttpRepl/subscription", + "commits_url": "https://api.github.com/repos/dotnet/HttpRepl/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/HttpRepl/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/HttpRepl/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/HttpRepl/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/HttpRepl/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/HttpRepl/merges", + "archive_url": "https://api.github.com/repos/dotnet/HttpRepl/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/HttpRepl/downloads", + "issues_url": "https://api.github.com/repos/dotnet/HttpRepl/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/HttpRepl/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/HttpRepl/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/HttpRepl/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/HttpRepl/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/HttpRepl/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/HttpRepl/deployments" + }, + "score": 1 + }, + { + "name": "SetLocaleForDataTypes.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs", + "sha": "39ec05bef168fde4b6683e34105a8d99d8dc4462", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/39ec05bef168fde4b6683e34105a8d99d8dc4462", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/SetLocaleForDataTypes.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "Color.cs", + "path": "src/benchmarks/micro/runtime/SIMD/RayTracer/Color.cs", + "sha": "3a531a020b94da944682fbc1e2057a04016488c6", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/SIMD/RayTracer/Color.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/3a531a020b94da944682fbc1e2057a04016488c6", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/SIMD/RayTracer/Color.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "CscBench.cs", + "path": "src/benchmarks/micro/runtime/Roslyn/CscBench.cs", + "sha": "2f948c3873d6c585f1f00db8e39642c047e6d87a", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Roslyn/CscBench.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/2f948c3873d6c585f1f00db8e39642c047e6d87a", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Roslyn/CscBench.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "regex-redux-1.cs", + "path": "src/benchmarks/micro/runtime/BenchmarksGame/regex-redux-1.cs", + "sha": "33172ee8066e2e5162a3db3c0d76f5208f0e1b31", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/BenchmarksGame/regex-redux-1.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/33172ee8066e2e5162a3db3c0d76f5208f0e1b31", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/BenchmarksGame/regex-redux-1.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "MethodReturnValue.cs", + "path": "src/ILLink.RoslynAnalyzer/TrimAnalysis/MethodReturnValue.cs", + "sha": "2f5a67f0b8f8c3925896fb71c84a30f146513a71", + "url": "https://api.github.com/repositories/72579311/contents/src/ILLink.RoslynAnalyzer/TrimAnalysis/MethodReturnValue.cs?ref=ba65e934dcb8cfbc81a494e890927f9a5d31deac", + "git_url": "https://api.github.com/repositories/72579311/git/blobs/2f5a67f0b8f8c3925896fb71c84a30f146513a71", + "html_url": "https://github.com/dotnet/linker/blob/ba65e934dcb8cfbc81a494e890927f9a5d31deac/src/ILLink.RoslynAnalyzer/TrimAnalysis/MethodReturnValue.cs", + "repository": { + "id": 72579311, + "node_id": "MDEwOlJlcG9zaXRvcnk3MjU3OTMxMQ==", + "name": "linker", + "full_name": "dotnet/linker", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/linker", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/linker", + "forks_url": "https://api.github.com/repos/dotnet/linker/forks", + "keys_url": "https://api.github.com/repos/dotnet/linker/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/linker/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/linker/teams", + "hooks_url": "https://api.github.com/repos/dotnet/linker/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/linker/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/linker/events", + "assignees_url": "https://api.github.com/repos/dotnet/linker/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/linker/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/linker/tags", + "blobs_url": "https://api.github.com/repos/dotnet/linker/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/linker/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/linker/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/linker/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/linker/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/linker/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/linker/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/linker/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/linker/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/linker/subscription", + "commits_url": "https://api.github.com/repos/dotnet/linker/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/linker/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/linker/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/linker/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/linker/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/linker/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/linker/merges", + "archive_url": "https://api.github.com/repos/dotnet/linker/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/linker/downloads", + "issues_url": "https://api.github.com/repos/dotnet/linker/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/linker/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/linker/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/linker/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/linker/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/linker/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/linker/deployments" + }, + "score": 1 + }, + { + "name": "Word2Vec.cs", + "path": "src/csharp/Microsoft.Spark/ML/Feature/Word2Vec.cs", + "sha": "2e7260f881788fbaa949981b9fcca57d9ea99dc3", + "url": "https://api.github.com/repositories/182849051/contents/src/csharp/Microsoft.Spark/ML/Feature/Word2Vec.cs?ref=b63c08b87a060e5100392bcc0069b53d3a607fcf", + "git_url": "https://api.github.com/repositories/182849051/git/blobs/2e7260f881788fbaa949981b9fcca57d9ea99dc3", + "html_url": "https://github.com/dotnet/spark/blob/b63c08b87a060e5100392bcc0069b53d3a607fcf/src/csharp/Microsoft.Spark/ML/Feature/Word2Vec.cs", + "repository": { + "id": 182849051, + "node_id": "MDEwOlJlcG9zaXRvcnkxODI4NDkwNTE=", + "name": "spark", + "full_name": "dotnet/spark", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/spark", + "description": ".NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/spark", + "forks_url": "https://api.github.com/repos/dotnet/spark/forks", + "keys_url": "https://api.github.com/repos/dotnet/spark/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/spark/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/spark/teams", + "hooks_url": "https://api.github.com/repos/dotnet/spark/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/spark/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/spark/events", + "assignees_url": "https://api.github.com/repos/dotnet/spark/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/spark/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/spark/tags", + "blobs_url": "https://api.github.com/repos/dotnet/spark/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/spark/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/spark/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/spark/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/spark/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/spark/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/spark/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/spark/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/spark/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/spark/subscription", + "commits_url": "https://api.github.com/repos/dotnet/spark/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/spark/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/spark/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/spark/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/spark/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/spark/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/spark/merges", + "archive_url": "https://api.github.com/repos/dotnet/spark/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/spark/downloads", + "issues_url": "https://api.github.com/repos/dotnet/spark/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/spark/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/spark/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/spark/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/spark/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/spark/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/spark/deployments" + }, + "score": 1 + }, + { + "name": "SpecifyCultureInfo.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs", + "sha": "3bd0994f4cd10d98e926eef3753c3d3387f44cd9", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/3bd0994f4cd10d98e926eef3753c3d3387f44cd9", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/SpecifyCultureInfo.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "XmlRootAttribute.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Serialization/XmlRootAttribute.cs", + "sha": "2e6116fbf245bc56791d9fca8117866ec12d4c66", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Serialization/XmlRootAttribute.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2e6116fbf245bc56791d9fca8117866ec12d4c66", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/Serialization/XmlRootAttribute.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "NameTable.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/NameTable.cs", + "sha": "3182eed2b01bc9232ea7262da5bfc4dc27c2da32", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/NameTable.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3182eed2b01bc9232ea7262da5bfc4dc27c2da32", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/NameTable.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "ProjectingManifestResourceInfo.cs", + "path": "src/libraries/System.Reflection.Context/src/System/Reflection/Context/Projection/ProjectingManifestResourceInfo.cs", + "sha": "4001f0774ff5741095dfd73205c58e9924fec5f2", + "url": "https://api.github.com/repositories/210716005/contents/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Projection/ProjectingManifestResourceInfo.cs?ref=79c2669e8551ba0f42f04e4bea9e1e692dca6d17", + "git_url": "https://api.github.com/repositories/210716005/git/blobs/4001f0774ff5741095dfd73205c58e9924fec5f2", + "html_url": "https://github.com/dotnet/runtime/blob/79c2669e8551ba0f42f04e4bea9e1e692dca6d17/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Projection/ProjectingManifestResourceInfo.cs", + "repository": { + "id": 210716005, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTA3MTYwMDU=", + "name": "runtime", + "full_name": "dotnet/runtime", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/runtime", + "description": ".NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/runtime", + "forks_url": "https://api.github.com/repos/dotnet/runtime/forks", + "keys_url": "https://api.github.com/repos/dotnet/runtime/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/runtime/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/runtime/teams", + "hooks_url": "https://api.github.com/repos/dotnet/runtime/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/runtime/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/runtime/events", + "assignees_url": "https://api.github.com/repos/dotnet/runtime/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/runtime/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/runtime/tags", + "blobs_url": "https://api.github.com/repos/dotnet/runtime/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/runtime/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/runtime/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/runtime/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/runtime/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/runtime/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/runtime/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/runtime/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/runtime/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/runtime/subscription", + "commits_url": "https://api.github.com/repos/dotnet/runtime/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/runtime/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/runtime/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/runtime/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/runtime/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/runtime/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/runtime/merges", + "archive_url": "https://api.github.com/repos/dotnet/runtime/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/runtime/downloads", + "issues_url": "https://api.github.com/repos/dotnet/runtime/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/runtime/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/runtime/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/runtime/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/runtime/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/runtime/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/runtime/deployments" + }, + "score": 1 + }, + { + "name": "DoNotUseDataTableReadXml.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs", + "sha": "3259d71e2a117361b5d525e811df894091b732e1", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/3259d71e2a117361b5d525e811df894091b732e1", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/DoNotUseDataTableReadXml.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "SchemaEntity.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaEntity.cs", + "sha": "41db588a3f765f7277e8c3007f9571319bb06249", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaEntity.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/41db588a3f765f7277e8c3007f9571319bb06249", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaEntity.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "Sort.cs", + "path": "src/benchmarks/micro/libraries/System.Collections/Sort.cs", + "sha": "367a8180b3120d0d99904df0cc9a2cf113dbf807", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/libraries/System.Collections/Sort.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/367a8180b3120d0d99904df0cc9a2cf113dbf807", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/libraries/System.Collections/Sort.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "IChannelInitializer.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Dispatcher/IChannelInitializer.cs", + "sha": "40d674d57560a66de30079c81dea36b99ae83b64", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Dispatcher/IChannelInitializer.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/40d674d57560a66de30079c81dea36b99ae83b64", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Dispatcher/IChannelInitializer.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/8-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/8-codeSearch.json new file mode 100644 index 00000000000..cd896b9dce8 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/8-codeSearch.json @@ -0,0 +1,7615 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=9" + }, + "response": { + "status": 200, + "body": { + "total_count": 1124, + "incomplete_results": false, + "items": [ + { + "name": "StreamUpgradeProvider.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/StreamUpgradeProvider.cs", + "sha": "3829e8243307535dc10937b620a980d6b8eac0e3", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/StreamUpgradeProvider.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3829e8243307535dc10937b620a980d6b8eac0e3", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/StreamUpgradeProvider.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "MessageEncoderFactory.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/MessageEncoderFactory.cs", + "sha": "31f1db7d13f88ed9cba8fd8e86d026ee617106d6", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/MessageEncoderFactory.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/31f1db7d13f88ed9cba8fd8e86d026ee617106d6", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/MessageEncoderFactory.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "LLVMOrcOpaqueIndirectStubsManager.cs", + "path": "sources/LLVMSharp.Interop/Manual/LLVMOrcOpaqueIndirectStubsManager.cs", + "sha": "33a145c0762b5ee0f053ec6976fb7dfb6e75438e", + "url": "https://api.github.com/repositories/30781424/contents/sources/LLVMSharp.Interop/Manual/LLVMOrcOpaqueIndirectStubsManager.cs?ref=ea05882d8a677a1b76b7d9ef8eca64f43309c9ac", + "git_url": "https://api.github.com/repositories/30781424/git/blobs/33a145c0762b5ee0f053ec6976fb7dfb6e75438e", + "html_url": "https://github.com/dotnet/LLVMSharp/blob/ea05882d8a677a1b76b7d9ef8eca64f43309c9ac/sources/LLVMSharp.Interop/Manual/LLVMOrcOpaqueIndirectStubsManager.cs", + "repository": { + "id": 30781424, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDc4MTQyNA==", + "name": "LLVMSharp", + "full_name": "dotnet/LLVMSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/LLVMSharp", + "description": "LLVM bindings for .NET Standard written in C# using ClangSharp", + "fork": false, + "url": "https://api.github.com/repos/dotnet/LLVMSharp", + "forks_url": "https://api.github.com/repos/dotnet/LLVMSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/LLVMSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/LLVMSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/LLVMSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/LLVMSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/LLVMSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/LLVMSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/LLVMSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/LLVMSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/LLVMSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/LLVMSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/LLVMSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/LLVMSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/LLVMSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/LLVMSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/LLVMSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/LLVMSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/LLVMSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/LLVMSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/LLVMSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/LLVMSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/LLVMSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/LLVMSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/LLVMSharp/deployments" + }, + "score": 1 + }, + { + "name": "idea.cs", + "path": "src/benchmarks/micro/runtime/Bytemark/idea.cs", + "sha": "370ad83a29ad2d8467dbc35526c76053f1491303", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Bytemark/idea.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/370ad83a29ad2d8467dbc35526c76053f1491303", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Bytemark/idea.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "FaultCode.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/FaultCode.cs", + "sha": "37397cf66b04f859ecc2de0eec3d92f128965266", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/FaultCode.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/37397cf66b04f859ecc2de0eec3d92f128965266", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/FaultCode.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "MigrationsBundleCommand.cs", + "path": "src/ef/Commands/MigrationsBundleCommand.cs", + "sha": "3e0e8a81bbe42ed34a2ea0cdf959e1ca1f90a711", + "url": "https://api.github.com/repositories/16157746/contents/src/ef/Commands/MigrationsBundleCommand.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/3e0e8a81bbe42ed34a2ea0cdf959e1ca1f90a711", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/ef/Commands/MigrationsBundleCommand.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "LabelSuggestion.cs", + "path": "src/PredictionEngine/LabelSuggestion.cs", + "sha": "394660a9fdc8f97d3dcfb0ce9c313b3e78ac76d8", + "url": "https://api.github.com/repositories/271885874/contents/src/PredictionEngine/LabelSuggestion.cs?ref=fb3f0b788204a39793ccaf75a2aa55ec835e907e", + "git_url": "https://api.github.com/repositories/271885874/git/blobs/394660a9fdc8f97d3dcfb0ce9c313b3e78ac76d8", + "html_url": "https://github.com/dotnet/issue-labeler/blob/fb3f0b788204a39793ccaf75a2aa55ec835e907e/src/PredictionEngine/LabelSuggestion.cs", + "repository": { + "id": 271885874, + "node_id": "MDEwOlJlcG9zaXRvcnkyNzE4ODU4NzQ=", + "name": "issue-labeler", + "full_name": "dotnet/issue-labeler", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/issue-labeler", + "description": "An issue labeler bot for use in dotnet repositories.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/issue-labeler", + "forks_url": "https://api.github.com/repos/dotnet/issue-labeler/forks", + "keys_url": "https://api.github.com/repos/dotnet/issue-labeler/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/issue-labeler/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/issue-labeler/teams", + "hooks_url": "https://api.github.com/repos/dotnet/issue-labeler/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/issue-labeler/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/issue-labeler/events", + "assignees_url": "https://api.github.com/repos/dotnet/issue-labeler/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/issue-labeler/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/issue-labeler/tags", + "blobs_url": "https://api.github.com/repos/dotnet/issue-labeler/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/issue-labeler/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/issue-labeler/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/issue-labeler/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/issue-labeler/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/issue-labeler/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/issue-labeler/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/issue-labeler/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/issue-labeler/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/issue-labeler/subscription", + "commits_url": "https://api.github.com/repos/dotnet/issue-labeler/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/issue-labeler/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/issue-labeler/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/issue-labeler/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/issue-labeler/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/issue-labeler/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/issue-labeler/merges", + "archive_url": "https://api.github.com/repos/dotnet/issue-labeler/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/issue-labeler/downloads", + "issues_url": "https://api.github.com/repos/dotnet/issue-labeler/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/issue-labeler/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/issue-labeler/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/issue-labeler/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/issue-labeler/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/issue-labeler/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/issue-labeler/deployments" + }, + "score": 1 + }, + { + "name": "ProjectionPruner.cs", + "path": "src/EntityFramework/Core/Query/PlanCompiler/ProjectionPruner.cs", + "sha": "3d63fa7ea0f635eb907b833094db9519524eb622", + "url": "https://api.github.com/repositories/317711432/contents/src/EntityFramework/Core/Query/PlanCompiler/ProjectionPruner.cs?ref=65fb0c15394c26c1acbff55ed359b565433bef1b", + "git_url": "https://api.github.com/repositories/317711432/git/blobs/3d63fa7ea0f635eb907b833094db9519524eb622", + "html_url": "https://github.com/dotnet/ef6tools/blob/65fb0c15394c26c1acbff55ed359b565433bef1b/src/EntityFramework/Core/Query/PlanCompiler/ProjectionPruner.cs", + "repository": { + "id": 317711432, + "node_id": "MDEwOlJlcG9zaXRvcnkzMTc3MTE0MzI=", + "name": "ef6tools", + "full_name": "dotnet/ef6tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6tools", + "description": "This is the codebase for the Entity Framework 6 and LINQ-To-SQL designers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6tools", + "forks_url": "https://api.github.com/repos/dotnet/ef6tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6tools/deployments" + }, + "score": 1 + }, + { + "name": "IDispatchFaultFormatter.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Dispatcher/IDispatchFaultFormatter.cs", + "sha": "347208b2fc80f690b64ef77bec8e634c76f270b7", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Dispatcher/IDispatchFaultFormatter.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/347208b2fc80f690b64ef77bec8e634c76f270b7", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Dispatcher/IDispatchFaultFormatter.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "regex-redux-5.cs", + "path": "src/benchmarks/micro/runtime/BenchmarksGame/regex-redux-5.cs", + "sha": "349bf7ea2611e460f065a724ed5096c9f50ee5e1", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/BenchmarksGame/regex-redux-5.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/349bf7ea2611e460f065a724ed5096c9f50ee5e1", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/BenchmarksGame/regex-redux-5.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "DirectionalAction.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/DirectionalAction.cs", + "sha": "305a9a1580264948a476411d279df0c39896a11e", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/DirectionalAction.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/305a9a1580264948a476411d279df0c39896a11e", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/DirectionalAction.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "BroadcastVariableProcessor.cs", + "path": "src/csharp/Microsoft.Spark.Worker/Processor/BroadcastVariableProcessor.cs", + "sha": "353358e4425b506ae3d8f97bcab6069282fabda5", + "url": "https://api.github.com/repositories/182849051/contents/src/csharp/Microsoft.Spark.Worker/Processor/BroadcastVariableProcessor.cs?ref=b63c08b87a060e5100392bcc0069b53d3a607fcf", + "git_url": "https://api.github.com/repositories/182849051/git/blobs/353358e4425b506ae3d8f97bcab6069282fabda5", + "html_url": "https://github.com/dotnet/spark/blob/b63c08b87a060e5100392bcc0069b53d3a607fcf/src/csharp/Microsoft.Spark.Worker/Processor/BroadcastVariableProcessor.cs", + "repository": { + "id": 182849051, + "node_id": "MDEwOlJlcG9zaXRvcnkxODI4NDkwNTE=", + "name": "spark", + "full_name": "dotnet/spark", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/spark", + "description": ".NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/spark", + "forks_url": "https://api.github.com/repos/dotnet/spark/forks", + "keys_url": "https://api.github.com/repos/dotnet/spark/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/spark/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/spark/teams", + "hooks_url": "https://api.github.com/repos/dotnet/spark/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/spark/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/spark/events", + "assignees_url": "https://api.github.com/repos/dotnet/spark/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/spark/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/spark/tags", + "blobs_url": "https://api.github.com/repos/dotnet/spark/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/spark/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/spark/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/spark/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/spark/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/spark/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/spark/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/spark/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/spark/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/spark/subscription", + "commits_url": "https://api.github.com/repos/dotnet/spark/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/spark/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/spark/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/spark/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/spark/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/spark/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/spark/merges", + "archive_url": "https://api.github.com/repos/dotnet/spark/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/spark/downloads", + "issues_url": "https://api.github.com/repos/dotnet/spark/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/spark/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/spark/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/spark/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/spark/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/spark/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/spark/deployments" + }, + "score": 1 + }, + { + "name": "ModelAnalysisTransform.cs", + "path": "src/Compiler/Infer/Transforms/ModelAnalysisTransform.cs", + "sha": "3f39596f32c2aae564ae726518333b7b3596999d", + "url": "https://api.github.com/repositories/148852400/contents/src/Compiler/Infer/Transforms/ModelAnalysisTransform.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/3f39596f32c2aae564ae726518333b7b3596999d", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Compiler/Infer/Transforms/ModelAnalysisTransform.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "ProjectAuthenticationSettings.cs", + "path": "src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/ProjectAuthenticationSettings.cs", + "sha": "3e8090cd77c352a15eb6a8d92e1bc3a5ccd24e6c", + "url": "https://api.github.com/repositories/21291278/contents/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/ProjectAuthenticationSettings.cs?ref=5f611b80a863e665c688e1e2c95f29154c10ceff", + "git_url": "https://api.github.com/repositories/21291278/git/blobs/3e8090cd77c352a15eb6a8d92e1bc3a5ccd24e6c", + "html_url": "https://github.com/dotnet/Scaffolding/blob/5f611b80a863e665c688e1e2c95f29154c10ceff/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/CodeReaderWriter/ProjectAuthenticationSettings.cs", + "repository": { + "id": 21291278, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTI5MTI3OA==", + "name": "Scaffolding", + "full_name": "dotnet/Scaffolding", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Scaffolding", + "description": "Code generators to speed up development.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Scaffolding", + "forks_url": "https://api.github.com/repos/dotnet/Scaffolding/forks", + "keys_url": "https://api.github.com/repos/dotnet/Scaffolding/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Scaffolding/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Scaffolding/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Scaffolding/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Scaffolding/events", + "assignees_url": "https://api.github.com/repos/dotnet/Scaffolding/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Scaffolding/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Scaffolding/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Scaffolding/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Scaffolding/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Scaffolding/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Scaffolding/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Scaffolding/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Scaffolding/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Scaffolding/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Scaffolding/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Scaffolding/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Scaffolding/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Scaffolding/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Scaffolding/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Scaffolding/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Scaffolding/merges", + "archive_url": "https://api.github.com/repos/dotnet/Scaffolding/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Scaffolding/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Scaffolding/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Scaffolding/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Scaffolding/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Scaffolding/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Scaffolding/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Scaffolding/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Scaffolding/deployments" + }, + "score": 1 + }, + { + "name": "ProjectTypeNotSupportedException.cs", + "path": "src/EntityFramework.PowerShell/Migrations/ProjectTypeNotSupportedException.cs", + "sha": "39d18d1220b1b2c2816043fcccdd0bdeef137149", + "url": "https://api.github.com/repositories/317711432/contents/src/EntityFramework.PowerShell/Migrations/ProjectTypeNotSupportedException.cs?ref=65fb0c15394c26c1acbff55ed359b565433bef1b", + "git_url": "https://api.github.com/repositories/317711432/git/blobs/39d18d1220b1b2c2816043fcccdd0bdeef137149", + "html_url": "https://github.com/dotnet/ef6tools/blob/65fb0c15394c26c1acbff55ed359b565433bef1b/src/EntityFramework.PowerShell/Migrations/ProjectTypeNotSupportedException.cs", + "repository": { + "id": 317711432, + "node_id": "MDEwOlJlcG9zaXRvcnkzMTc3MTE0MzI=", + "name": "ef6tools", + "full_name": "dotnet/ef6tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/ef6tools", + "description": "This is the codebase for the Entity Framework 6 and LINQ-To-SQL designers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/ef6tools", + "forks_url": "https://api.github.com/repos/dotnet/ef6tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/ef6tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/ef6tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/ef6tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/ef6tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/ef6tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/ef6tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/ef6tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/ef6tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/ef6tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/ef6tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/ef6tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/ef6tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/ef6tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/ef6tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/ef6tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/ef6tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/ef6tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/ef6tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/ef6tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/ef6tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/ef6tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/ef6tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/ef6tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/ef6tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/ef6tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/ef6tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/ef6tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/ef6tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/ef6tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/ef6tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/ef6tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/ef6tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/ef6tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/ef6tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/ef6tools/deployments" + }, + "score": 1 + }, + { + "name": "DistributionCursorArray.cs", + "path": "src/Runtime/Distributions/DistributionCursorArray.cs", + "sha": "309ff1ee217a3e8d88b83f1d500f8186a69005e7", + "url": "https://api.github.com/repositories/148852400/contents/src/Runtime/Distributions/DistributionCursorArray.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/309ff1ee217a3e8d88b83f1d500f8186a69005e7", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Runtime/Distributions/DistributionCursorArray.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "TaintedDataSourceSink.cs", + "path": "src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/TaintedDataAnalysis/TaintedDataSourceSink.cs", + "sha": "337715770ce8491e0e8f684c2c3c6cdb87fbe95b", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/TaintedDataAnalysis/TaintedDataSourceSink.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/337715770ce8491e0e8f684c2c3c6cdb87fbe95b", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/TaintedDataAnalysis/TaintedDataSourceSink.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "ReplyToMe.cs", + "path": "src/4. Uncluttering Your Inbox/Features/ReplyToMe.cs", + "sha": "43f1975b787ad577d89682eff1410f959f7ce211", + "url": "https://api.github.com/repositories/173785725/contents/src/4.%20Uncluttering%20Your%20Inbox/Features/ReplyToMe.cs?ref=4a8f76a3605b28406670db0684f14d1f521f291d", + "git_url": "https://api.github.com/repositories/173785725/git/blobs/43f1975b787ad577d89682eff1410f959f7ce211", + "html_url": "https://github.com/dotnet/mbmlbook/blob/4a8f76a3605b28406670db0684f14d1f521f291d/src/4.%20Uncluttering%20Your%20Inbox/Features/ReplyToMe.cs", + "repository": { + "id": 173785725, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzM3ODU3MjU=", + "name": "mbmlbook", + "full_name": "dotnet/mbmlbook", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/mbmlbook", + "description": "Sample code for the Model-Based Machine Learning book.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/mbmlbook", + "forks_url": "https://api.github.com/repos/dotnet/mbmlbook/forks", + "keys_url": "https://api.github.com/repos/dotnet/mbmlbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/mbmlbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/mbmlbook/teams", + "hooks_url": "https://api.github.com/repos/dotnet/mbmlbook/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/mbmlbook/events", + "assignees_url": "https://api.github.com/repos/dotnet/mbmlbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/mbmlbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/mbmlbook/tags", + "blobs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/mbmlbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/mbmlbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/mbmlbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/mbmlbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/mbmlbook/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/mbmlbook/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/mbmlbook/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/mbmlbook/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/mbmlbook/subscription", + "commits_url": "https://api.github.com/repos/dotnet/mbmlbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/mbmlbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/mbmlbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/mbmlbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/mbmlbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/mbmlbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/mbmlbook/merges", + "archive_url": "https://api.github.com/repos/dotnet/mbmlbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/mbmlbook/downloads", + "issues_url": "https://api.github.com/repos/dotnet/mbmlbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/mbmlbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/mbmlbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/mbmlbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/mbmlbook/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/mbmlbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/mbmlbook/deployments" + }, + "score": 1 + }, + { + "name": "SetCorFlags.cs", + "path": "src/BuildTasks/SetCorFlags.cs", + "sha": "40ae9c9a97178b01bee1b088d010e06dcc8cb569", + "url": "https://api.github.com/repositories/65219019/contents/src/BuildTasks/SetCorFlags.cs?ref=c0a8ae99f9d9804a147f463f279ff7e33cd70527", + "git_url": "https://api.github.com/repositories/65219019/git/blobs/40ae9c9a97178b01bee1b088d010e06dcc8cb569", + "html_url": "https://github.com/dotnet/roslyn-tools/blob/c0a8ae99f9d9804a147f463f279ff7e33cd70527/src/BuildTasks/SetCorFlags.cs", + "repository": { + "id": 65219019, + "node_id": "MDEwOlJlcG9zaXRvcnk2NTIxOTAxOQ==", + "name": "roslyn-tools", + "full_name": "dotnet/roslyn-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-tools", + "description": "Tools used in Roslyn based repos", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-tools", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-tools/deployments" + }, + "score": 1 + }, + { + "name": "CountVectorizer.cs", + "path": "src/csharp/Microsoft.Spark/ML/Feature/CountVectorizer.cs", + "sha": "431961adbb906716f61218cc72c5cf3dee48caaa", + "url": "https://api.github.com/repositories/182849051/contents/src/csharp/Microsoft.Spark/ML/Feature/CountVectorizer.cs?ref=b63c08b87a060e5100392bcc0069b53d3a607fcf", + "git_url": "https://api.github.com/repositories/182849051/git/blobs/431961adbb906716f61218cc72c5cf3dee48caaa", + "html_url": "https://github.com/dotnet/spark/blob/b63c08b87a060e5100392bcc0069b53d3a607fcf/src/csharp/Microsoft.Spark/ML/Feature/CountVectorizer.cs", + "repository": { + "id": 182849051, + "node_id": "MDEwOlJlcG9zaXRvcnkxODI4NDkwNTE=", + "name": "spark", + "full_name": "dotnet/spark", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/spark", + "description": ".NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/spark", + "forks_url": "https://api.github.com/repos/dotnet/spark/forks", + "keys_url": "https://api.github.com/repos/dotnet/spark/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/spark/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/spark/teams", + "hooks_url": "https://api.github.com/repos/dotnet/spark/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/spark/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/spark/events", + "assignees_url": "https://api.github.com/repos/dotnet/spark/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/spark/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/spark/tags", + "blobs_url": "https://api.github.com/repos/dotnet/spark/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/spark/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/spark/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/spark/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/spark/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/spark/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/spark/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/spark/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/spark/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/spark/subscription", + "commits_url": "https://api.github.com/repos/dotnet/spark/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/spark/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/spark/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/spark/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/spark/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/spark/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/spark/merges", + "archive_url": "https://api.github.com/repos/dotnet/spark/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/spark/downloads", + "issues_url": "https://api.github.com/repos/dotnet/spark/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/spark/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/spark/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/spark/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/spark/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/spark/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/spark/deployments" + }, + "score": 1 + }, + { + "name": "EnumMemberAttribute.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/EnumMemberAttribute.cs", + "sha": "374b596cb4bb221f2ee8843a092a57c930dd7725", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/EnumMemberAttribute.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/374b596cb4bb221f2ee8843a092a57c930dd7725", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.Runtime.Serialization/System/Runtime/Serialization/EnumMemberAttribute.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "CodeMemberMethod.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeMemberMethod.cs", + "sha": "35f5744a31ee1624dd667be0c4f91f647cd7339c", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeMemberMethod.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/35f5744a31ee1624dd667be0c4f91f647cd7339c", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeMemberMethod.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "NormalizeStringsToUppercase.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs", + "sha": "362a2215c7e32f00a263073909b205a9ef06a7e8", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/362a2215c7e32f00a263073909b205a9ef06a7e8", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/NormalizeStringsToUppercase.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "CompilerInfo.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/Compiler/CompilerInfo.cs", + "sha": "34feb3a26a5425580d36826782a25ac28a9260a5", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/Compiler/CompilerInfo.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/34feb3a26a5425580d36826782a25ac28a9260a5", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/Compiler/CompilerInfo.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "MethodReference.cs", + "path": "src/Compiler/TransformFramework/CodeModel/MethodReference.cs", + "sha": "368ecc55e07795431026dc3f5b993a08a7df0bfa", + "url": "https://api.github.com/repositories/148852400/contents/src/Compiler/TransformFramework/CodeModel/MethodReference.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/368ecc55e07795431026dc3f5b993a08a7df0bfa", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Compiler/TransformFramework/CodeModel/MethodReference.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "FSharp.cs", + "path": "src/dotnet-roslyn-tools/Products/FSharp.cs", + "sha": "3e9872570ca6fd834b571c33573aeab9e75144b8", + "url": "https://api.github.com/repositories/65219019/contents/src/dotnet-roslyn-tools/Products/FSharp.cs?ref=c0a8ae99f9d9804a147f463f279ff7e33cd70527", + "git_url": "https://api.github.com/repositories/65219019/git/blobs/3e9872570ca6fd834b571c33573aeab9e75144b8", + "html_url": "https://github.com/dotnet/roslyn-tools/blob/c0a8ae99f9d9804a147f463f279ff7e33cd70527/src/dotnet-roslyn-tools/Products/FSharp.cs", + "repository": { + "id": 65219019, + "node_id": "MDEwOlJlcG9zaXRvcnk2NTIxOTAxOQ==", + "name": "roslyn-tools", + "full_name": "dotnet/roslyn-tools", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-tools", + "description": "Tools used in Roslyn based repos", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-tools", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-tools/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-tools/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-tools/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-tools/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-tools/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-tools/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-tools/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-tools/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-tools/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-tools/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-tools/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-tools/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-tools/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-tools/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-tools/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-tools/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-tools/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-tools/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-tools/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-tools/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-tools/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-tools/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-tools/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-tools/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-tools/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-tools/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-tools/deployments" + }, + "score": 1 + }, + { + "name": "assemblyinfo.cs", + "path": "snippets/xaml/VS_Snippets_Wpf/DeferredScrolling/xaml/properties/assemblyinfo.cs", + "sha": "3b0b4603af38c15cd03c0e6fc2fb649732064f7f", + "url": "https://api.github.com/repositories/111510915/contents/snippets/xaml/VS_Snippets_Wpf/DeferredScrolling/xaml/properties/assemblyinfo.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/3b0b4603af38c15cd03c0e6fc2fb649732064f7f", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/xaml/VS_Snippets_Wpf/DeferredScrolling/xaml/properties/assemblyinfo.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "TimeoutStream.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/TimeoutStream.cs", + "sha": "3a69667516da1dce0bc731b66737f20089854bf5", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/TimeoutStream.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3a69667516da1dce0bc731b66737f20089854bf5", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/TimeoutStream.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AvoidUnsealedAttributes.Fixer.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.Fixer.cs", + "sha": "38c0e739efd8e03de4d0e934a7a3ab09c65ade34", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/38c0e739efd8e03de4d0e934a7a3ab09c65ade34", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Runtime/AvoidUnsealedAttributes.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "LLVMOrcMaterializationUnitDestroyFunction.cs", + "path": "sources/LLVMSharp.Interop/Manual/LLVMOrcMaterializationUnitDestroyFunction.cs", + "sha": "34dc4b9adcba737114a7e40aafc503d6bb231871", + "url": "https://api.github.com/repositories/30781424/contents/sources/LLVMSharp.Interop/Manual/LLVMOrcMaterializationUnitDestroyFunction.cs?ref=ea05882d8a677a1b76b7d9ef8eca64f43309c9ac", + "git_url": "https://api.github.com/repositories/30781424/git/blobs/34dc4b9adcba737114a7e40aafc503d6bb231871", + "html_url": "https://github.com/dotnet/LLVMSharp/blob/ea05882d8a677a1b76b7d9ef8eca64f43309c9ac/sources/LLVMSharp.Interop/Manual/LLVMOrcMaterializationUnitDestroyFunction.cs", + "repository": { + "id": 30781424, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDc4MTQyNA==", + "name": "LLVMSharp", + "full_name": "dotnet/LLVMSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/LLVMSharp", + "description": "LLVM bindings for .NET Standard written in C# using ClangSharp", + "fork": false, + "url": "https://api.github.com/repos/dotnet/LLVMSharp", + "forks_url": "https://api.github.com/repos/dotnet/LLVMSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/LLVMSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/LLVMSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/LLVMSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/LLVMSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/LLVMSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/LLVMSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/LLVMSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/LLVMSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/LLVMSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/LLVMSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/LLVMSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/LLVMSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/LLVMSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/LLVMSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/LLVMSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/LLVMSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/LLVMSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/LLVMSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/LLVMSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/LLVMSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/LLVMSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/LLVMSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/LLVMSharp/deployments" + }, + "score": 1 + }, + { + "name": "TempFile.cs", + "path": "src/TestUtilities/TempFiles/TempFile.cs", + "sha": "3b921b6ca2a43191247e60c2720aa8928402a964", + "url": "https://api.github.com/repositories/130140573/contents/src/TestUtilities/TempFiles/TempFile.cs?ref=93698e3c7ca6ec3e5d4be9eff07166bb64975bbc", + "git_url": "https://api.github.com/repositories/130140573/git/blobs/3b921b6ca2a43191247e60c2720aa8928402a964", + "html_url": "https://github.com/dotnet/sourcelink/blob/93698e3c7ca6ec3e5d4be9eff07166bb64975bbc/src/TestUtilities/TempFiles/TempFile.cs", + "repository": { + "id": 130140573, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzAxNDA1NzM=", + "name": "sourcelink", + "full_name": "dotnet/sourcelink", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sourcelink", + "description": "Source Link enables a great source debugging experience for your users, by adding source control metadata to your built assets", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sourcelink", + "forks_url": "https://api.github.com/repos/dotnet/sourcelink/forks", + "keys_url": "https://api.github.com/repos/dotnet/sourcelink/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sourcelink/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sourcelink/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sourcelink/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sourcelink/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sourcelink/events", + "assignees_url": "https://api.github.com/repos/dotnet/sourcelink/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sourcelink/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sourcelink/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sourcelink/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sourcelink/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sourcelink/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sourcelink/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sourcelink/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sourcelink/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sourcelink/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sourcelink/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sourcelink/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sourcelink/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sourcelink/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sourcelink/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sourcelink/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sourcelink/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sourcelink/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sourcelink/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sourcelink/merges", + "archive_url": "https://api.github.com/repos/dotnet/sourcelink/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sourcelink/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sourcelink/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sourcelink/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sourcelink/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sourcelink/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sourcelink/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sourcelink/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sourcelink/deployments" + }, + "score": 1 + }, + { + "name": "UserParameterDistribution.cs", + "path": "src/Learners/Recommender/MatchboxRecommenderInternal/UserParameterDistribution.cs", + "sha": "405f7013a84dacbd6a23ece20e01caf0080977f4", + "url": "https://api.github.com/repositories/148852400/contents/src/Learners/Recommender/MatchboxRecommenderInternal/UserParameterDistribution.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/405f7013a84dacbd6a23ece20e01caf0080977f4", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Learners/Recommender/MatchboxRecommenderInternal/UserParameterDistribution.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "PipeWriterCompletionWatcher.cs", + "path": "src/Nerdbank.Streams/PipeWriterCompletionWatcher.cs", + "sha": "2e591de5e6bedb56c0d0d18f880e7cc5467e1055", + "url": "https://api.github.com/repositories/43795655/contents/src/Nerdbank.Streams/PipeWriterCompletionWatcher.cs?ref=5d1c8b25e55e88d5e1f40a879f79069ebcc914ce", + "git_url": "https://api.github.com/repositories/43795655/git/blobs/2e591de5e6bedb56c0d0d18f880e7cc5467e1055", + "html_url": "https://github.com/dotnet/Nerdbank.Streams/blob/5d1c8b25e55e88d5e1f40a879f79069ebcc914ce/src/Nerdbank.Streams/PipeWriterCompletionWatcher.cs", + "repository": { + "id": 43795655, + "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==", + "name": "Nerdbank.Streams", + "full_name": "dotnet/Nerdbank.Streams", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Nerdbank.Streams", + "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Nerdbank.Streams", + "forks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/forks", + "keys_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/events", + "assignees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/merges", + "archive_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Nerdbank.Streams/deployments" + }, + "score": 1 + }, + { + "name": "BundleTypePrintInfo.cs", + "path": "src/dotnet-core-uninstall/Shared/Configs/BundleTypePrintInfo.cs", + "sha": "401bd4af7fae01070a5bcb1e3258d33f146117a7", + "url": "https://api.github.com/repositories/189080814/contents/src/dotnet-core-uninstall/Shared/Configs/BundleTypePrintInfo.cs?ref=dbbc288e858c078ac7c5dc56a3e7579d79771391", + "git_url": "https://api.github.com/repositories/189080814/git/blobs/401bd4af7fae01070a5bcb1e3258d33f146117a7", + "html_url": "https://github.com/dotnet/cli-lab/blob/dbbc288e858c078ac7c5dc56a3e7579d79771391/src/dotnet-core-uninstall/Shared/Configs/BundleTypePrintInfo.cs", + "repository": { + "id": 189080814, + "node_id": "MDEwOlJlcG9zaXRvcnkxODkwODA4MTQ=", + "name": "cli-lab", + "full_name": "dotnet/cli-lab", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/cli-lab", + "description": "A guided tool will be provided to enable the controlled clean up of a system such that only the desired versions of the Runtime and SDKs remain.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/cli-lab", + "forks_url": "https://api.github.com/repos/dotnet/cli-lab/forks", + "keys_url": "https://api.github.com/repos/dotnet/cli-lab/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/cli-lab/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/cli-lab/teams", + "hooks_url": "https://api.github.com/repos/dotnet/cli-lab/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/cli-lab/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/cli-lab/events", + "assignees_url": "https://api.github.com/repos/dotnet/cli-lab/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/cli-lab/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/cli-lab/tags", + "blobs_url": "https://api.github.com/repos/dotnet/cli-lab/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/cli-lab/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/cli-lab/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/cli-lab/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/cli-lab/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/cli-lab/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/cli-lab/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/cli-lab/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/cli-lab/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/cli-lab/subscription", + "commits_url": "https://api.github.com/repos/dotnet/cli-lab/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/cli-lab/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/cli-lab/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/cli-lab/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/cli-lab/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/cli-lab/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/cli-lab/merges", + "archive_url": "https://api.github.com/repos/dotnet/cli-lab/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/cli-lab/downloads", + "issues_url": "https://api.github.com/repos/dotnet/cli-lab/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/cli-lab/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/cli-lab/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/cli-lab/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/cli-lab/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/cli-lab/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/cli-lab/deployments" + }, + "score": 1 + }, + { + "name": "TypeMapper.cs", + "path": "src/Core/Silk.NET.BuildTools/Common/TypeMapper.cs", + "sha": "37c4af1d2034ea2a10672c2177c9c3af9104b990", + "url": "https://api.github.com/repositories/191232240/contents/src/Core/Silk.NET.BuildTools/Common/TypeMapper.cs?ref=d5f1f295966c0790abc215ab6e900f810f464443", + "git_url": "https://api.github.com/repositories/191232240/git/blobs/37c4af1d2034ea2a10672c2177c9c3af9104b990", + "html_url": "https://github.com/dotnet/Silk.NET/blob/d5f1f295966c0790abc215ab6e900f810f464443/src/Core/Silk.NET.BuildTools/Common/TypeMapper.cs", + "repository": { + "id": 191232240, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTEyMzIyNDA=", + "name": "Silk.NET", + "full_name": "dotnet/Silk.NET", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Silk.NET", + "description": "The high-speed OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX bindings library your mother warned you about.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Silk.NET", + "forks_url": "https://api.github.com/repos/dotnet/Silk.NET/forks", + "keys_url": "https://api.github.com/repos/dotnet/Silk.NET/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Silk.NET/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Silk.NET/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Silk.NET/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Silk.NET/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Silk.NET/events", + "assignees_url": "https://api.github.com/repos/dotnet/Silk.NET/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Silk.NET/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Silk.NET/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Silk.NET/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Silk.NET/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Silk.NET/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Silk.NET/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Silk.NET/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Silk.NET/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Silk.NET/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Silk.NET/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Silk.NET/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Silk.NET/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Silk.NET/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Silk.NET/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Silk.NET/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Silk.NET/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Silk.NET/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Silk.NET/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Silk.NET/merges", + "archive_url": "https://api.github.com/repos/dotnet/Silk.NET/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Silk.NET/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Silk.NET/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Silk.NET/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Silk.NET/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Silk.NET/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Silk.NET/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Silk.NET/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Silk.NET/deployments" + }, + "score": 1 + }, + { + "name": "JvmObjectReference.cs", + "path": "src/csharp/Microsoft.Spark/Interop/Ipc/JvmObjectReference.cs", + "sha": "4058552d0ac4b39abe171cf77a4d66fcefef8709", + "url": "https://api.github.com/repositories/182849051/contents/src/csharp/Microsoft.Spark/Interop/Ipc/JvmObjectReference.cs?ref=b63c08b87a060e5100392bcc0069b53d3a607fcf", + "git_url": "https://api.github.com/repositories/182849051/git/blobs/4058552d0ac4b39abe171cf77a4d66fcefef8709", + "html_url": "https://github.com/dotnet/spark/blob/b63c08b87a060e5100392bcc0069b53d3a607fcf/src/csharp/Microsoft.Spark/Interop/Ipc/JvmObjectReference.cs", + "repository": { + "id": 182849051, + "node_id": "MDEwOlJlcG9zaXRvcnkxODI4NDkwNTE=", + "name": "spark", + "full_name": "dotnet/spark", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/spark", + "description": ".NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/spark", + "forks_url": "https://api.github.com/repos/dotnet/spark/forks", + "keys_url": "https://api.github.com/repos/dotnet/spark/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/spark/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/spark/teams", + "hooks_url": "https://api.github.com/repos/dotnet/spark/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/spark/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/spark/events", + "assignees_url": "https://api.github.com/repos/dotnet/spark/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/spark/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/spark/tags", + "blobs_url": "https://api.github.com/repos/dotnet/spark/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/spark/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/spark/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/spark/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/spark/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/spark/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/spark/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/spark/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/spark/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/spark/subscription", + "commits_url": "https://api.github.com/repos/dotnet/spark/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/spark/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/spark/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/spark/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/spark/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/spark/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/spark/merges", + "archive_url": "https://api.github.com/repos/dotnet/spark/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/spark/downloads", + "issues_url": "https://api.github.com/repos/dotnet/spark/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/spark/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/spark/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/spark/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/spark/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/spark/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/spark/deployments" + }, + "score": 1 + }, + { + "name": "SNIStreams.cs", + "path": "src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNIStreams.cs", + "sha": "389f25eeae4248c4eb0fb76e693b47354fe65d1d", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNIStreams.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/389f25eeae4248c4eb0fb76e693b47354fe65d1d", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNIStreams.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "snippets/csharp/System.Windows.Forms/AutoSizeMode/Overview/Properties/AssemblyInfo.cs", + "sha": "3fc66da860f664f4bbb0a7335a8ad306e635ebbe", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/System.Windows.Forms/AutoSizeMode/Overview/Properties/AssemblyInfo.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/3fc66da860f664f4bbb0a7335a8ad306e635ebbe", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/System.Windows.Forms/AutoSizeMode/Overview/Properties/AssemblyInfo.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "snippets/csharp/System.Windows/RoutedEventArgs/RoutedEvent/Properties/AssemblyInfo.cs", + "sha": "307da9def5322bdf8bc1271202b989a9e89d01fa", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/System.Windows/RoutedEventArgs/RoutedEvent/Properties/AssemblyInfo.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/307da9def5322bdf8bc1271202b989a9e89d01fa", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/System.Windows/RoutedEventArgs/RoutedEvent/Properties/AssemblyInfo.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "Puzzle.cs", + "path": "src/benchmarks/micro/runtime/Benchstones/BenchI/Puzzle.cs", + "sha": "3c847a1fd82a72f3cbd6fd8af11302d9cd4b8d28", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/micro/runtime/Benchstones/BenchI/Puzzle.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/3c847a1fd82a72f3cbd6fd8af11302d9cd4b8d28", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/micro/runtime/Benchstones/BenchI/Puzzle.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "UserLevelCacheWriter.cs", + "path": "src/Microsoft.HttpRepl.Telemetry/UserLevelCacheWriter.cs", + "sha": "3dffc3053445a57a9c4c1b1c1dd265177150c765", + "url": "https://api.github.com/repositories/191466073/contents/src/Microsoft.HttpRepl.Telemetry/UserLevelCacheWriter.cs?ref=1b0b7982bba2ef34778586f460a9db938cffe4ea", + "git_url": "https://api.github.com/repositories/191466073/git/blobs/3dffc3053445a57a9c4c1b1c1dd265177150c765", + "html_url": "https://github.com/dotnet/HttpRepl/blob/1b0b7982bba2ef34778586f460a9db938cffe4ea/src/Microsoft.HttpRepl.Telemetry/UserLevelCacheWriter.cs", + "repository": { + "id": 191466073, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTE0NjYwNzM=", + "name": "HttpRepl", + "full_name": "dotnet/HttpRepl", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/HttpRepl", + "description": "The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that's supported everywhere .NET Core is supported and is used for making HTTP requests to test ASP.NET Core web APIs and view their results.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/HttpRepl", + "forks_url": "https://api.github.com/repos/dotnet/HttpRepl/forks", + "keys_url": "https://api.github.com/repos/dotnet/HttpRepl/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/HttpRepl/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/HttpRepl/teams", + "hooks_url": "https://api.github.com/repos/dotnet/HttpRepl/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/HttpRepl/events", + "assignees_url": "https://api.github.com/repos/dotnet/HttpRepl/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/HttpRepl/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/HttpRepl/tags", + "blobs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/HttpRepl/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/HttpRepl/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/HttpRepl/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/HttpRepl/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/HttpRepl/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/HttpRepl/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/HttpRepl/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/HttpRepl/subscription", + "commits_url": "https://api.github.com/repos/dotnet/HttpRepl/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/HttpRepl/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/HttpRepl/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/HttpRepl/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/HttpRepl/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/HttpRepl/merges", + "archive_url": "https://api.github.com/repos/dotnet/HttpRepl/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/HttpRepl/downloads", + "issues_url": "https://api.github.com/repos/dotnet/HttpRepl/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/HttpRepl/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/HttpRepl/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/HttpRepl/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/HttpRepl/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/HttpRepl/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/HttpRepl/deployments" + }, + "score": 1 + }, + { + "name": "MatchboxRecommenderPredictionSettings.cs", + "path": "src/Learners/Recommender/MatchboxRecommenderPredictionSettings.cs", + "sha": "330c7d0f26842f5fd1d0462019d46ac0981c89b8", + "url": "https://api.github.com/repositories/148852400/contents/src/Learners/Recommender/MatchboxRecommenderPredictionSettings.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/330c7d0f26842f5fd1d0462019d46ac0981c89b8", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Learners/Recommender/MatchboxRecommenderPredictionSettings.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "samples/RemoteAuth/OIDC/OIDCAuth/Properties/AssemblyInfo.cs", + "sha": "3616a49ee27369ddded8b354943ba76792d3bc1c", + "url": "https://api.github.com/repositories/485544891/contents/samples/RemoteAuth/OIDC/OIDCAuth/Properties/AssemblyInfo.cs?ref=5db005e6f1ae132044048440fd3cb2f4ce115aeb", + "git_url": "https://api.github.com/repositories/485544891/git/blobs/3616a49ee27369ddded8b354943ba76792d3bc1c", + "html_url": "https://github.com/dotnet/systemweb-adapters/blob/5db005e6f1ae132044048440fd3cb2f4ce115aeb/samples/RemoteAuth/OIDC/OIDCAuth/Properties/AssemblyInfo.cs", + "repository": { + "id": 485544891, + "node_id": "R_kgDOHPDTuw", + "name": "systemweb-adapters", + "full_name": "dotnet/systemweb-adapters", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/systemweb-adapters", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/systemweb-adapters", + "forks_url": "https://api.github.com/repos/dotnet/systemweb-adapters/forks", + "keys_url": "https://api.github.com/repos/dotnet/systemweb-adapters/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/systemweb-adapters/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/systemweb-adapters/teams", + "hooks_url": "https://api.github.com/repos/dotnet/systemweb-adapters/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/systemweb-adapters/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/systemweb-adapters/events", + "assignees_url": "https://api.github.com/repos/dotnet/systemweb-adapters/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/systemweb-adapters/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/systemweb-adapters/tags", + "blobs_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/systemweb-adapters/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/systemweb-adapters/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/systemweb-adapters/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/systemweb-adapters/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/systemweb-adapters/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/systemweb-adapters/subscription", + "commits_url": "https://api.github.com/repos/dotnet/systemweb-adapters/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/systemweb-adapters/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/systemweb-adapters/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/systemweb-adapters/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/systemweb-adapters/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/systemweb-adapters/merges", + "archive_url": "https://api.github.com/repos/dotnet/systemweb-adapters/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/systemweb-adapters/downloads", + "issues_url": "https://api.github.com/repos/dotnet/systemweb-adapters/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/systemweb-adapters/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/systemweb-adapters/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/systemweb-adapters/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/systemweb-adapters/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/systemweb-adapters/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/systemweb-adapters/deployments" + }, + "score": 1 + }, + { + "name": "LegacyLoggingFixer.cs", + "path": "src/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/CallAnalysis/Fixers/LegacyLoggingFixer.cs", + "sha": "3de8a6afbfecc42ae3ea53530a630ef5083c611e", + "url": "https://api.github.com/repositories/30932325/contents/src/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/CallAnalysis/Fixers/LegacyLoggingFixer.cs?ref=3d647bfb977e5e0b604a3985e337d11219c3db48", + "git_url": "https://api.github.com/repositories/30932325/git/blobs/3de8a6afbfecc42ae3ea53530a630ef5083c611e", + "html_url": "https://github.com/dotnet/extensions/blob/3d647bfb977e5e0b604a3985e337d11219c3db48/src/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/CallAnalysis/Fixers/LegacyLoggingFixer.cs", + "repository": { + "id": 30932325, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDkzMjMyNQ==", + "name": "extensions", + "full_name": "dotnet/extensions", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/extensions", + "description": "This repository contains a suite of libraries that provide facilities commonly needed when creating production-ready applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/extensions", + "forks_url": "https://api.github.com/repos/dotnet/extensions/forks", + "keys_url": "https://api.github.com/repos/dotnet/extensions/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/extensions/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/extensions/teams", + "hooks_url": "https://api.github.com/repos/dotnet/extensions/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/extensions/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/extensions/events", + "assignees_url": "https://api.github.com/repos/dotnet/extensions/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/extensions/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/extensions/tags", + "blobs_url": "https://api.github.com/repos/dotnet/extensions/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/extensions/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/extensions/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/extensions/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/extensions/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/extensions/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/extensions/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/extensions/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/extensions/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/extensions/subscription", + "commits_url": "https://api.github.com/repos/dotnet/extensions/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/extensions/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/extensions/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/extensions/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/extensions/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/extensions/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/extensions/merges", + "archive_url": "https://api.github.com/repos/dotnet/extensions/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/extensions/downloads", + "issues_url": "https://api.github.com/repos/dotnet/extensions/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/extensions/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/extensions/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/extensions/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/extensions/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/extensions/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/extensions/deployments" + }, + "score": 1 + }, + { + "name": "OidcProviderOptions.cs", + "path": "src/Microsoft.MobileBlazorBindings.Authentication/Options/OidcProviderOptions.cs", + "sha": "417b40ca47bbe87b008c759015a19c3ff6d1b2df", + "url": "https://api.github.com/repositories/201976298/contents/src/Microsoft.MobileBlazorBindings.Authentication/Options/OidcProviderOptions.cs?ref=66b0d92d6b6f34ee15873e91565aa5a49a585a09", + "git_url": "https://api.github.com/repositories/201976298/git/blobs/417b40ca47bbe87b008c759015a19c3ff6d1b2df", + "html_url": "https://github.com/dotnet/MobileBlazorBindings/blob/66b0d92d6b6f34ee15873e91565aa5a49a585a09/src/Microsoft.MobileBlazorBindings.Authentication/Options/OidcProviderOptions.cs", + "repository": { + "id": 201976298, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDE5NzYyOTg=", + "name": "MobileBlazorBindings", + "full_name": "dotnet/MobileBlazorBindings", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/MobileBlazorBindings", + "description": "Experimental Mobile Blazor Bindings - Build native and hybrid mobile apps with Blazor", + "fork": false, + "url": "https://api.github.com/repos/dotnet/MobileBlazorBindings", + "forks_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/forks", + "keys_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/teams", + "hooks_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/events", + "assignees_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/tags", + "blobs_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/subscription", + "commits_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/merges", + "archive_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/downloads", + "issues_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/MobileBlazorBindings/deployments" + }, + "score": 1 + }, + { + "name": "HttpsTransportBindingElement.cs", + "path": "src/System.ServiceModel.Http/src/System/ServiceModel/Channels/HttpsTransportBindingElement.cs", + "sha": "41ecc7120df5fdef5411b22cf92c7db1ed85299e", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Http/src/System/ServiceModel/Channels/HttpsTransportBindingElement.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/41ecc7120df5fdef5411b22cf92c7db1ed85299e", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Http/src/System/ServiceModel/Channels/HttpsTransportBindingElement.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "ITransportTokenAssertionProvider.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/ITransportTokenAssertionProvider.cs", + "sha": "431b0c428bfdf2ac98ad0cd016f978bb6d7b8377", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/ITransportTokenAssertionProvider.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/431b0c428bfdf2ac98ad0cd016f978bb6d7b8377", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/ITransportTokenAssertionProvider.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "snippets/csharp/System.Windows.Forms/KeysConverter/Overview/Properties/AssemblyInfo.cs", + "sha": "315b19dc89e41710fc8ee5126866aa4574b473b7", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/System.Windows.Forms/KeysConverter/Overview/Properties/AssemblyInfo.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/315b19dc89e41710fc8ee5126866aa4574b473b7", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/System.Windows.Forms/KeysConverter/Overview/Properties/AssemblyInfo.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "LambdaAndLocalFunctionAnalysisInfo.cs", + "path": "src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LambdaAndLocalFunctionAnalysisInfo.cs", + "sha": "34b07f2a7e60d77dd6c23d6e2f08202dc38f8dfd", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LambdaAndLocalFunctionAnalysisInfo.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/34b07f2a7e60d77dd6c23d6e2f08202dc38f8dfd", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/FlowAnalysis/FlowAnalysis/Framework/DataFlow/LambdaAndLocalFunctionAnalysisInfo.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "DependencyInfo.cs", + "path": "src/linker/Linker/DependencyInfo.cs", + "sha": "3cfc113316519f1c0e8662375525c622f781d235", + "url": "https://api.github.com/repositories/72579311/contents/src/linker/Linker/DependencyInfo.cs?ref=ba65e934dcb8cfbc81a494e890927f9a5d31deac", + "git_url": "https://api.github.com/repositories/72579311/git/blobs/3cfc113316519f1c0e8662375525c622f781d235", + "html_url": "https://github.com/dotnet/linker/blob/ba65e934dcb8cfbc81a494e890927f9a5d31deac/src/linker/Linker/DependencyInfo.cs", + "repository": { + "id": 72579311, + "node_id": "MDEwOlJlcG9zaXRvcnk3MjU3OTMxMQ==", + "name": "linker", + "full_name": "dotnet/linker", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/linker", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/linker", + "forks_url": "https://api.github.com/repos/dotnet/linker/forks", + "keys_url": "https://api.github.com/repos/dotnet/linker/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/linker/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/linker/teams", + "hooks_url": "https://api.github.com/repos/dotnet/linker/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/linker/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/linker/events", + "assignees_url": "https://api.github.com/repos/dotnet/linker/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/linker/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/linker/tags", + "blobs_url": "https://api.github.com/repos/dotnet/linker/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/linker/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/linker/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/linker/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/linker/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/linker/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/linker/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/linker/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/linker/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/linker/subscription", + "commits_url": "https://api.github.com/repos/dotnet/linker/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/linker/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/linker/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/linker/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/linker/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/linker/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/linker/merges", + "archive_url": "https://api.github.com/repos/dotnet/linker/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/linker/downloads", + "issues_url": "https://api.github.com/repos/dotnet/linker/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/linker/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/linker/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/linker/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/linker/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/linker/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/linker/deployments" + }, + "score": 1 + }, + { + "name": "ProvisioningToolOptions.cs", + "path": "src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Tool/ProvisioningToolOptions.cs", + "sha": "3e8cd17048a034a8fd1ae9875aca47172fc3f740", + "url": "https://api.github.com/repositories/21291278/contents/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Tool/ProvisioningToolOptions.cs?ref=5f611b80a863e665c688e1e2c95f29154c10ceff", + "git_url": "https://api.github.com/repositories/21291278/git/blobs/3e8cd17048a034a8fd1ae9875aca47172fc3f740", + "html_url": "https://github.com/dotnet/Scaffolding/blob/5f611b80a863e665c688e1e2c95f29154c10ceff/src/MSIdentityScaffolding/Microsoft.DotNet.MSIdentity/Tool/ProvisioningToolOptions.cs", + "repository": { + "id": 21291278, + "node_id": "MDEwOlJlcG9zaXRvcnkyMTI5MTI3OA==", + "name": "Scaffolding", + "full_name": "dotnet/Scaffolding", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Scaffolding", + "description": "Code generators to speed up development.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Scaffolding", + "forks_url": "https://api.github.com/repos/dotnet/Scaffolding/forks", + "keys_url": "https://api.github.com/repos/dotnet/Scaffolding/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Scaffolding/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Scaffolding/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Scaffolding/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Scaffolding/events", + "assignees_url": "https://api.github.com/repos/dotnet/Scaffolding/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Scaffolding/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Scaffolding/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Scaffolding/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Scaffolding/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Scaffolding/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Scaffolding/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Scaffolding/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Scaffolding/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Scaffolding/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Scaffolding/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Scaffolding/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Scaffolding/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Scaffolding/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Scaffolding/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Scaffolding/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Scaffolding/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Scaffolding/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Scaffolding/merges", + "archive_url": "https://api.github.com/repos/dotnet/Scaffolding/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Scaffolding/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Scaffolding/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Scaffolding/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Scaffolding/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Scaffolding/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Scaffolding/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Scaffolding/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Scaffolding/deployments" + }, + "score": 1 + }, + { + "name": "OutputChannel.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/OutputChannel.cs", + "sha": "37f9d5847e1a3fb5168ca3ca92d7ef7929ff78c8", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/OutputChannel.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/37f9d5847e1a3fb5168ca3ca92d7ef7929ff78c8", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/ServiceModel/Channels/OutputChannel.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "Samples/KerberosMiddlewareSample/Properties/AssemblyInfo.cs", + "sha": "417a6b1bc6400465b92bee42634217fbe44db092", + "url": "https://api.github.com/repositories/85489138/contents/Samples/KerberosMiddlewareSample/Properties/AssemblyInfo.cs?ref=aa5bbea0c867f56fd55ddb5c4b07dd7ef7f563fd", + "git_url": "https://api.github.com/repositories/85489138/git/blobs/417a6b1bc6400465b92bee42634217fbe44db092", + "html_url": "https://github.com/dotnet/Kerberos.NET/blob/aa5bbea0c867f56fd55ddb5c4b07dd7ef7f563fd/Samples/KerberosMiddlewareSample/Properties/AssemblyInfo.cs", + "repository": { + "id": 85489138, + "node_id": "MDEwOlJlcG9zaXRvcnk4NTQ4OTEzOA==", + "name": "Kerberos.NET", + "full_name": "dotnet/Kerberos.NET", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Kerberos.NET", + "description": "A Kerberos implementation built entirely in managed code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Kerberos.NET", + "forks_url": "https://api.github.com/repos/dotnet/Kerberos.NET/forks", + "keys_url": "https://api.github.com/repos/dotnet/Kerberos.NET/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Kerberos.NET/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Kerberos.NET/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Kerberos.NET/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Kerberos.NET/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Kerberos.NET/events", + "assignees_url": "https://api.github.com/repos/dotnet/Kerberos.NET/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Kerberos.NET/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Kerberos.NET/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Kerberos.NET/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Kerberos.NET/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Kerberos.NET/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Kerberos.NET/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Kerberos.NET/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Kerberos.NET/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Kerberos.NET/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Kerberos.NET/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Kerberos.NET/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Kerberos.NET/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Kerberos.NET/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Kerberos.NET/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Kerberos.NET/merges", + "archive_url": "https://api.github.com/repos/dotnet/Kerberos.NET/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Kerberos.NET/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Kerberos.NET/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Kerberos.NET/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Kerberos.NET/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Kerberos.NET/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Kerberos.NET/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Kerberos.NET/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Kerberos.NET/deployments" + }, + "score": 1 + }, + { + "name": "CallBaseClassMethodsOnISerializableTypes.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs", + "sha": "367905a42056deb640b121bbfe5bba6a82bbbde6", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/367905a42056deb640b121bbfe5bba6a82bbbde6", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/CallBaseClassMethodsOnISerializableTypes.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "IAbstractAnalysisValue.cs", + "path": "src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/GlobalFlowStateAnalysis/IAbstractAnalysisValue.cs", + "sha": "334b4f214b806242bcf810a8d814e76402aabc9f", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/GlobalFlowStateAnalysis/IAbstractAnalysisValue.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/334b4f214b806242bcf810a8d814e76402aabc9f", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/GlobalFlowStateAnalysis/IAbstractAnalysisValue.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "GitConfig.Reader.cs", + "path": "src/Microsoft.Build.Tasks.Git/GitDataReader/GitConfig.Reader.cs", + "sha": "3c35e8a5a7c73bc9c4cd7b1bce1ece825f2b6d24", + "url": "https://api.github.com/repositories/130140573/contents/src/Microsoft.Build.Tasks.Git/GitDataReader/GitConfig.Reader.cs?ref=93698e3c7ca6ec3e5d4be9eff07166bb64975bbc", + "git_url": "https://api.github.com/repositories/130140573/git/blobs/3c35e8a5a7c73bc9c4cd7b1bce1ece825f2b6d24", + "html_url": "https://github.com/dotnet/sourcelink/blob/93698e3c7ca6ec3e5d4be9eff07166bb64975bbc/src/Microsoft.Build.Tasks.Git/GitDataReader/GitConfig.Reader.cs", + "repository": { + "id": 130140573, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzAxNDA1NzM=", + "name": "sourcelink", + "full_name": "dotnet/sourcelink", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sourcelink", + "description": "Source Link enables a great source debugging experience for your users, by adding source control metadata to your built assets", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sourcelink", + "forks_url": "https://api.github.com/repos/dotnet/sourcelink/forks", + "keys_url": "https://api.github.com/repos/dotnet/sourcelink/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sourcelink/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sourcelink/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sourcelink/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sourcelink/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sourcelink/events", + "assignees_url": "https://api.github.com/repos/dotnet/sourcelink/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sourcelink/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sourcelink/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sourcelink/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sourcelink/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sourcelink/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sourcelink/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sourcelink/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sourcelink/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sourcelink/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sourcelink/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sourcelink/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sourcelink/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sourcelink/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sourcelink/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sourcelink/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sourcelink/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sourcelink/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sourcelink/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sourcelink/merges", + "archive_url": "https://api.github.com/repos/dotnet/sourcelink/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sourcelink/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sourcelink/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sourcelink/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sourcelink/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sourcelink/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sourcelink/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sourcelink/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sourcelink/deployments" + }, + "score": 1 + }, + { + "name": "MetricsHelper.cs", + "path": "src/Utilities/Compiler/CodeMetrics/MetricsHelper.cs", + "sha": "39e4802591bf7f5ff0cfc25a6cc6b5114f3b0659", + "url": "https://api.github.com/repositories/36946704/contents/src/Utilities/Compiler/CodeMetrics/MetricsHelper.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/39e4802591bf7f5ff0cfc25a6cc6b5114f3b0659", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Utilities/Compiler/CodeMetrics/MetricsHelper.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "RazorServiceBase.cs", + "path": "src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorServiceBase.cs", + "sha": "380c9959a94702bea638ff0c2e4078f4cc8f59a5", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorServiceBase.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/380c9959a94702bea638ff0c2e4078f4cc8f59a5", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorServiceBase.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "MetadataStrings.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Description/MetadataStrings.cs", + "sha": "3b30ce48174cef1ee3b1ad041f9f614df1d49f01", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Description/MetadataStrings.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3b30ce48174cef1ee3b1ad041f9f614df1d49f01", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Description/MetadataStrings.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "Interop.Errors.cs", + "path": "src/Microsoft.Data.SqlClient/netcore/src/Common/src/Interop/Windows/Interop.Errors.cs", + "sha": "2e0c3553f27135c12b4776f6b6c2cc09a3cd2198", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/netcore/src/Common/src/Interop/Windows/Interop.Errors.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/2e0c3553f27135c12b4776f6b6c2cc09a3cd2198", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/netcore/src/Common/src/Interop/Windows/Interop.Errors.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "AssemblyInfo.cs", + "path": "samples/RemoteAuth/Forms/FormsAuth/Properties/AssemblyInfo.cs", + "sha": "3afbd00c1921a2b656ac2e6c5cf9e968d004a13d", + "url": "https://api.github.com/repositories/485544891/contents/samples/RemoteAuth/Forms/FormsAuth/Properties/AssemblyInfo.cs?ref=5db005e6f1ae132044048440fd3cb2f4ce115aeb", + "git_url": "https://api.github.com/repositories/485544891/git/blobs/3afbd00c1921a2b656ac2e6c5cf9e968d004a13d", + "html_url": "https://github.com/dotnet/systemweb-adapters/blob/5db005e6f1ae132044048440fd3cb2f4ce115aeb/samples/RemoteAuth/Forms/FormsAuth/Properties/AssemblyInfo.cs", + "repository": { + "id": 485544891, + "node_id": "R_kgDOHPDTuw", + "name": "systemweb-adapters", + "full_name": "dotnet/systemweb-adapters", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/systemweb-adapters", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/systemweb-adapters", + "forks_url": "https://api.github.com/repos/dotnet/systemweb-adapters/forks", + "keys_url": "https://api.github.com/repos/dotnet/systemweb-adapters/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/systemweb-adapters/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/systemweb-adapters/teams", + "hooks_url": "https://api.github.com/repos/dotnet/systemweb-adapters/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/systemweb-adapters/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/systemweb-adapters/events", + "assignees_url": "https://api.github.com/repos/dotnet/systemweb-adapters/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/systemweb-adapters/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/systemweb-adapters/tags", + "blobs_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/systemweb-adapters/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/systemweb-adapters/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/systemweb-adapters/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/systemweb-adapters/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/systemweb-adapters/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/systemweb-adapters/subscription", + "commits_url": "https://api.github.com/repos/dotnet/systemweb-adapters/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/systemweb-adapters/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/systemweb-adapters/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/systemweb-adapters/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/systemweb-adapters/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/systemweb-adapters/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/systemweb-adapters/merges", + "archive_url": "https://api.github.com/repos/dotnet/systemweb-adapters/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/systemweb-adapters/downloads", + "issues_url": "https://api.github.com/repos/dotnet/systemweb-adapters/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/systemweb-adapters/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/systemweb-adapters/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/systemweb-adapters/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/systemweb-adapters/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/systemweb-adapters/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/systemweb-adapters/deployments" + }, + "score": 1 + }, + { + "name": "CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs", + "path": "src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs", + "sha": "3f0f911b3b5906c9563eff69117ef014a5a1f44a", + "url": "https://api.github.com/repositories/36946704/contents/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/3f0f911b3b5906c9563eff69117ef014a5a1f44a", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Roslyn.Diagnostics.Analyzers/CSharp/CSharpDoNotMixAttributesFromDifferentVersionsOfMEF.Fixer.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "DbContextScaffoldCommand.Configure.cs", + "path": "src/ef/Commands/DbContextScaffoldCommand.Configure.cs", + "sha": "3e810d604022fb660cb32ce4ec3107a5a9d420ea", + "url": "https://api.github.com/repositories/16157746/contents/src/ef/Commands/DbContextScaffoldCommand.Configure.cs?ref=30528d18b516da32f833a83d63b52bd839e7c900", + "git_url": "https://api.github.com/repositories/16157746/git/blobs/3e810d604022fb660cb32ce4ec3107a5a9d420ea", + "html_url": "https://github.com/dotnet/efcore/blob/30528d18b516da32f833a83d63b52bd839e7c900/src/ef/Commands/DbContextScaffoldCommand.Configure.cs", + "repository": { + "id": 16157746, + "node_id": "MDEwOlJlcG9zaXRvcnkxNjE1Nzc0Ng==", + "name": "efcore", + "full_name": "dotnet/efcore", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/efcore", + "description": "EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/efcore", + "forks_url": "https://api.github.com/repos/dotnet/efcore/forks", + "keys_url": "https://api.github.com/repos/dotnet/efcore/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/efcore/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/efcore/teams", + "hooks_url": "https://api.github.com/repos/dotnet/efcore/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/efcore/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/efcore/events", + "assignees_url": "https://api.github.com/repos/dotnet/efcore/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/efcore/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/efcore/tags", + "blobs_url": "https://api.github.com/repos/dotnet/efcore/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/efcore/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/efcore/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/efcore/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/efcore/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/efcore/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/efcore/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/efcore/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/efcore/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/efcore/subscription", + "commits_url": "https://api.github.com/repos/dotnet/efcore/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/efcore/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/efcore/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/efcore/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/efcore/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/efcore/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/efcore/merges", + "archive_url": "https://api.github.com/repos/dotnet/efcore/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/efcore/downloads", + "issues_url": "https://api.github.com/repos/dotnet/efcore/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/efcore/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/efcore/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/efcore/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/efcore/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/efcore/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/efcore/deployments" + }, + "score": 1 + }, + { + "name": "LLVMMemoryManagerAllocateDataSectionCallback.cs", + "path": "sources/LLVMSharp.Interop/Manual/LLVMMemoryManagerAllocateDataSectionCallback.cs", + "sha": "2f957e8504e4f4ae6294e86b7a7059b3529dadbe", + "url": "https://api.github.com/repositories/30781424/contents/sources/LLVMSharp.Interop/Manual/LLVMMemoryManagerAllocateDataSectionCallback.cs?ref=ea05882d8a677a1b76b7d9ef8eca64f43309c9ac", + "git_url": "https://api.github.com/repositories/30781424/git/blobs/2f957e8504e4f4ae6294e86b7a7059b3529dadbe", + "html_url": "https://github.com/dotnet/LLVMSharp/blob/ea05882d8a677a1b76b7d9ef8eca64f43309c9ac/sources/LLVMSharp.Interop/Manual/LLVMMemoryManagerAllocateDataSectionCallback.cs", + "repository": { + "id": 30781424, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDc4MTQyNA==", + "name": "LLVMSharp", + "full_name": "dotnet/LLVMSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/LLVMSharp", + "description": "LLVM bindings for .NET Standard written in C# using ClangSharp", + "fork": false, + "url": "https://api.github.com/repos/dotnet/LLVMSharp", + "forks_url": "https://api.github.com/repos/dotnet/LLVMSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/LLVMSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/LLVMSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/LLVMSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/LLVMSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/LLVMSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/LLVMSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/LLVMSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/LLVMSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/LLVMSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/LLVMSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/LLVMSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/LLVMSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/LLVMSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/LLVMSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/LLVMSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/LLVMSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/LLVMSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/LLVMSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/LLVMSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/LLVMSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/LLVMSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/LLVMSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/LLVMSharp/deployments" + }, + "score": 1 + }, + { + "name": "ImportingConstructorShouldBeObsoleteCodeFixProvider.cs", + "path": "src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs", + "sha": "36bcb2b5330f330aea35639039604a00612c2134", + "url": "https://api.github.com/repositories/36946704/contents/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/36bcb2b5330f330aea35639039604a00612c2134", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Roslyn.Diagnostics.Analyzers/Core/ImportingConstructorShouldBeObsoleteCodeFixProvider.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "FallbackProjectEngineFactory.cs", + "path": "src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FallbackProjectEngineFactory.cs", + "sha": "3a7bbb49c3daceb21adfaa1a398630428859c7fc", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FallbackProjectEngineFactory.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/3a7bbb49c3daceb21adfaa1a398630428859c7fc", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FallbackProjectEngineFactory.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "System.ServiceModel.Primitives.cs", + "path": "src/System.ServiceModel.Primitives/ref/System.ServiceModel.Primitives.cs", + "sha": "2f9b55aca2705697698395358030baa1d86ee2a8", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/ref/System.ServiceModel.Primitives.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2f9b55aca2705697698395358030baa1d86ee2a8", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/ref/System.ServiceModel.Primitives.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "UICommand.cs", + "path": "src/Microsoft.HttpRepl/Commands/UICommand.cs", + "sha": "3f50ebcff89afd58dcb29beb32a3c5e191bb2f14", + "url": "https://api.github.com/repositories/191466073/contents/src/Microsoft.HttpRepl/Commands/UICommand.cs?ref=1b0b7982bba2ef34778586f460a9db938cffe4ea", + "git_url": "https://api.github.com/repositories/191466073/git/blobs/3f50ebcff89afd58dcb29beb32a3c5e191bb2f14", + "html_url": "https://github.com/dotnet/HttpRepl/blob/1b0b7982bba2ef34778586f460a9db938cffe4ea/src/Microsoft.HttpRepl/Commands/UICommand.cs", + "repository": { + "id": 191466073, + "node_id": "MDEwOlJlcG9zaXRvcnkxOTE0NjYwNzM=", + "name": "HttpRepl", + "full_name": "dotnet/HttpRepl", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/HttpRepl", + "description": "The HTTP Read-Eval-Print Loop (REPL) is a lightweight, cross-platform command-line tool that's supported everywhere .NET Core is supported and is used for making HTTP requests to test ASP.NET Core web APIs and view their results.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/HttpRepl", + "forks_url": "https://api.github.com/repos/dotnet/HttpRepl/forks", + "keys_url": "https://api.github.com/repos/dotnet/HttpRepl/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/HttpRepl/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/HttpRepl/teams", + "hooks_url": "https://api.github.com/repos/dotnet/HttpRepl/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/HttpRepl/events", + "assignees_url": "https://api.github.com/repos/dotnet/HttpRepl/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/HttpRepl/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/HttpRepl/tags", + "blobs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/HttpRepl/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/HttpRepl/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/HttpRepl/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/HttpRepl/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/HttpRepl/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/HttpRepl/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/HttpRepl/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/HttpRepl/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/HttpRepl/subscription", + "commits_url": "https://api.github.com/repos/dotnet/HttpRepl/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/HttpRepl/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/HttpRepl/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/HttpRepl/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/HttpRepl/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/HttpRepl/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/HttpRepl/merges", + "archive_url": "https://api.github.com/repos/dotnet/HttpRepl/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/HttpRepl/downloads", + "issues_url": "https://api.github.com/repos/dotnet/HttpRepl/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/HttpRepl/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/HttpRepl/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/HttpRepl/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/HttpRepl/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/HttpRepl/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/HttpRepl/deployments" + }, + "score": 1 + }, + { + "name": "TypeMapInfo.cs", + "path": "src/linker/Linker/TypeMapInfo.cs", + "sha": "416055021be6d52fc81e9e51b1558e05b41fd27e", + "url": "https://api.github.com/repositories/72579311/contents/src/linker/Linker/TypeMapInfo.cs?ref=ba65e934dcb8cfbc81a494e890927f9a5d31deac", + "git_url": "https://api.github.com/repositories/72579311/git/blobs/416055021be6d52fc81e9e51b1558e05b41fd27e", + "html_url": "https://github.com/dotnet/linker/blob/ba65e934dcb8cfbc81a494e890927f9a5d31deac/src/linker/Linker/TypeMapInfo.cs", + "repository": { + "id": 72579311, + "node_id": "MDEwOlJlcG9zaXRvcnk3MjU3OTMxMQ==", + "name": "linker", + "full_name": "dotnet/linker", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/linker", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/linker", + "forks_url": "https://api.github.com/repos/dotnet/linker/forks", + "keys_url": "https://api.github.com/repos/dotnet/linker/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/linker/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/linker/teams", + "hooks_url": "https://api.github.com/repos/dotnet/linker/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/linker/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/linker/events", + "assignees_url": "https://api.github.com/repos/dotnet/linker/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/linker/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/linker/tags", + "blobs_url": "https://api.github.com/repos/dotnet/linker/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/linker/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/linker/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/linker/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/linker/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/linker/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/linker/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/linker/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/linker/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/linker/subscription", + "commits_url": "https://api.github.com/repos/dotnet/linker/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/linker/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/linker/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/linker/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/linker/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/linker/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/linker/merges", + "archive_url": "https://api.github.com/repos/dotnet/linker/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/linker/downloads", + "issues_url": "https://api.github.com/repos/dotnet/linker/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/linker/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/linker/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/linker/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/linker/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/linker/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/linker/deployments" + }, + "score": 1 + }, + { + "name": "UdfRegistrationExtensions.cs", + "path": "src/csharp/Microsoft.Spark/Sql/UdfRegistrationExtensions.cs", + "sha": "37a966560baec1cd78170e7b441b4fd09a88dcf5", + "url": "https://api.github.com/repositories/182849051/contents/src/csharp/Microsoft.Spark/Sql/UdfRegistrationExtensions.cs?ref=b63c08b87a060e5100392bcc0069b53d3a607fcf", + "git_url": "https://api.github.com/repositories/182849051/git/blobs/37a966560baec1cd78170e7b441b4fd09a88dcf5", + "html_url": "https://github.com/dotnet/spark/blob/b63c08b87a060e5100392bcc0069b53d3a607fcf/src/csharp/Microsoft.Spark/Sql/UdfRegistrationExtensions.cs", + "repository": { + "id": 182849051, + "node_id": "MDEwOlJlcG9zaXRvcnkxODI4NDkwNTE=", + "name": "spark", + "full_name": "dotnet/spark", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/spark", + "description": ".NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/spark", + "forks_url": "https://api.github.com/repos/dotnet/spark/forks", + "keys_url": "https://api.github.com/repos/dotnet/spark/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/spark/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/spark/teams", + "hooks_url": "https://api.github.com/repos/dotnet/spark/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/spark/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/spark/events", + "assignees_url": "https://api.github.com/repos/dotnet/spark/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/spark/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/spark/tags", + "blobs_url": "https://api.github.com/repos/dotnet/spark/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/spark/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/spark/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/spark/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/spark/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/spark/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/spark/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/spark/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/spark/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/spark/subscription", + "commits_url": "https://api.github.com/repos/dotnet/spark/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/spark/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/spark/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/spark/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/spark/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/spark/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/spark/merges", + "archive_url": "https://api.github.com/repos/dotnet/spark/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/spark/downloads", + "issues_url": "https://api.github.com/repos/dotnet/spark/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/spark/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/spark/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/spark/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/spark/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/spark/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/spark/deployments" + }, + "score": 1 + }, + { + "name": "Signer.cs", + "path": "src/Sign.Core/Signer.cs", + "sha": "399c56e892ba8a66499bab462cef395cacd00d1b", + "url": "https://api.github.com/repositories/67908016/contents/src/Sign.Core/Signer.cs?ref=7058dfa76f7ffd4653d7f78d8a73b7c3efa21fb7", + "git_url": "https://api.github.com/repositories/67908016/git/blobs/399c56e892ba8a66499bab462cef395cacd00d1b", + "html_url": "https://github.com/dotnet/sign/blob/7058dfa76f7ffd4653d7f78d8a73b7c3efa21fb7/src/Sign.Core/Signer.cs", + "repository": { + "id": 67908016, + "node_id": "MDEwOlJlcG9zaXRvcnk2NzkwODAxNg==", + "name": "sign", + "full_name": "dotnet/sign", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sign", + "description": "Code Signing CLI tool supporting Authenticode, NuGet, VSIX, and ClickOnce", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sign", + "forks_url": "https://api.github.com/repos/dotnet/sign/forks", + "keys_url": "https://api.github.com/repos/dotnet/sign/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sign/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sign/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sign/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sign/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sign/events", + "assignees_url": "https://api.github.com/repos/dotnet/sign/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sign/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sign/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sign/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sign/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sign/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sign/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sign/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sign/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sign/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sign/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sign/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sign/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sign/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sign/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sign/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sign/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sign/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sign/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sign/merges", + "archive_url": "https://api.github.com/repos/dotnet/sign/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sign/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sign/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sign/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sign/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sign/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sign/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sign/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sign/deployments" + }, + "score": 1 + }, + { + "name": "SqlRowUpdatedEventHandler.cs", + "path": "src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlRowUpdatedEventHandler.cs", + "sha": "382fc610d163fc08d0de6ffc7cc6addef819631f", + "url": "https://api.github.com/repositories/173170791/contents/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlRowUpdatedEventHandler.cs?ref=a924df3df7b17bcb1747914338f32a43ab550979", + "git_url": "https://api.github.com/repositories/173170791/git/blobs/382fc610d163fc08d0de6ffc7cc6addef819631f", + "html_url": "https://github.com/dotnet/SqlClient/blob/a924df3df7b17bcb1747914338f32a43ab550979/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlRowUpdatedEventHandler.cs", + "repository": { + "id": 173170791, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMxNzA3OTE=", + "name": "SqlClient", + "full_name": "dotnet/SqlClient", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/SqlClient", + "description": "Microsoft.Data.SqlClient provides database connectivity to SQL Server for .NET applications.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/SqlClient", + "forks_url": "https://api.github.com/repos/dotnet/SqlClient/forks", + "keys_url": "https://api.github.com/repos/dotnet/SqlClient/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/SqlClient/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/SqlClient/teams", + "hooks_url": "https://api.github.com/repos/dotnet/SqlClient/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/SqlClient/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/SqlClient/events", + "assignees_url": "https://api.github.com/repos/dotnet/SqlClient/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/SqlClient/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/SqlClient/tags", + "blobs_url": "https://api.github.com/repos/dotnet/SqlClient/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/SqlClient/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/SqlClient/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/SqlClient/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/SqlClient/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/SqlClient/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/SqlClient/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/SqlClient/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/SqlClient/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/SqlClient/subscription", + "commits_url": "https://api.github.com/repos/dotnet/SqlClient/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/SqlClient/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/SqlClient/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/SqlClient/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/SqlClient/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/SqlClient/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/SqlClient/merges", + "archive_url": "https://api.github.com/repos/dotnet/SqlClient/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/SqlClient/downloads", + "issues_url": "https://api.github.com/repos/dotnet/SqlClient/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/SqlClient/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/SqlClient/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/SqlClient/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/SqlClient/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/SqlClient/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/SqlClient/deployments" + }, + "score": 1 + }, + { + "name": "ReadNuGetPackageInfos.cs", + "path": "src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/ReadNuGetPackageInfos.cs", + "sha": "43a04ebd00787ecc001baad5f4ebeae528ecc624", + "url": "https://api.github.com/repositories/104528436/contents/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/ReadNuGetPackageInfos.cs?ref=7a6697a82a7c7fe1cf0445bde7de63dae69f8b9e", + "git_url": "https://api.github.com/repositories/104528436/git/blobs/43a04ebd00787ecc001baad5f4ebeae528ecc624", + "html_url": "https://github.com/dotnet/installer/blob/7a6697a82a7c7fe1cf0445bde7de63dae69f8b9e/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/ReadNuGetPackageInfos.cs", + "repository": { + "id": 104528436, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1Mjg0MzY=", + "name": "installer", + "full_name": "dotnet/installer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/installer", + "description": ".NET SDK Installer", + "fork": false, + "url": "https://api.github.com/repos/dotnet/installer", + "forks_url": "https://api.github.com/repos/dotnet/installer/forks", + "keys_url": "https://api.github.com/repos/dotnet/installer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/installer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/installer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/installer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/installer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/installer/events", + "assignees_url": "https://api.github.com/repos/dotnet/installer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/installer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/installer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/installer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/installer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/installer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/installer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/installer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/installer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/installer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/installer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/installer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/installer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/installer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/installer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/installer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/installer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/installer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/installer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/installer/merges", + "archive_url": "https://api.github.com/repos/dotnet/installer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/installer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/installer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/installer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/installer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/installer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/installer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/installer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/installer/deployments" + }, + "score": 1 + }, + { + "name": "GitCommit.cs", + "path": "src/NerdBank.GitVersioning/ManagedGit/GitCommit.cs", + "sha": "2e01be1dbbc2f54f5842f28f8a12f8fcbed5b794", + "url": "https://api.github.com/repositories/35752188/contents/src/NerdBank.GitVersioning/ManagedGit/GitCommit.cs?ref=f9b3dbb8601e26d4d0522d48eec1aeed162a7754", + "git_url": "https://api.github.com/repositories/35752188/git/blobs/2e01be1dbbc2f54f5842f28f8a12f8fcbed5b794", + "html_url": "https://github.com/dotnet/Nerdbank.GitVersioning/blob/f9b3dbb8601e26d4d0522d48eec1aeed162a7754/src/NerdBank.GitVersioning/ManagedGit/GitCommit.cs", + "repository": { + "id": 35752188, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTc1MjE4OA==", + "name": "Nerdbank.GitVersioning", + "full_name": "dotnet/Nerdbank.GitVersioning", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/Nerdbank.GitVersioning", + "description": "Stamp your assemblies, packages and more with a unique version generated from a single, simple version.json file and include git commit IDs for non-official builds.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning", + "forks_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/forks", + "keys_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/teams", + "hooks_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/events", + "assignees_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/tags", + "blobs_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/subscription", + "commits_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/merges", + "archive_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/downloads", + "issues_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/Nerdbank.GitVersioning/deployments" + }, + "score": 1 + }, + { + "name": "GCPerfSim.cs", + "path": "src/benchmarks/gc/src/exec/GCPerfSim/GCPerfSim.cs", + "sha": "3ed8993a0c07fbdcf060b88b26873007f3089a46", + "url": "https://api.github.com/repositories/124948838/contents/src/benchmarks/gc/src/exec/GCPerfSim/GCPerfSim.cs?ref=af8bc7a227215626a51f427a839c55f90eec8876", + "git_url": "https://api.github.com/repositories/124948838/git/blobs/3ed8993a0c07fbdcf060b88b26873007f3089a46", + "html_url": "https://github.com/dotnet/performance/blob/af8bc7a227215626a51f427a839c55f90eec8876/src/benchmarks/gc/src/exec/GCPerfSim/GCPerfSim.cs", + "repository": { + "id": 124948838, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjQ5NDg4Mzg=", + "name": "performance", + "full_name": "dotnet/performance", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/performance", + "description": "This repo contains benchmarks used for testing the performance of all .NET Runtimes", + "fork": false, + "url": "https://api.github.com/repos/dotnet/performance", + "forks_url": "https://api.github.com/repos/dotnet/performance/forks", + "keys_url": "https://api.github.com/repos/dotnet/performance/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/performance/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/performance/teams", + "hooks_url": "https://api.github.com/repos/dotnet/performance/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/performance/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/performance/events", + "assignees_url": "https://api.github.com/repos/dotnet/performance/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/performance/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/performance/tags", + "blobs_url": "https://api.github.com/repos/dotnet/performance/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/performance/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/performance/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/performance/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/performance/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/performance/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/performance/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/performance/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/performance/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/performance/subscription", + "commits_url": "https://api.github.com/repos/dotnet/performance/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/performance/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/performance/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/performance/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/performance/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/performance/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/performance/merges", + "archive_url": "https://api.github.com/repos/dotnet/performance/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/performance/downloads", + "issues_url": "https://api.github.com/repos/dotnet/performance/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/performance/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/performance/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/performance/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/performance/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/performance/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/performance/deployments" + }, + "score": 1 + }, + { + "name": "ResultTable.cs", + "path": "src/Microsoft.Crank.Controller/ResultTable.cs", + "sha": "34246ee3d53010ec5bbc6dfc3505ae947c0acdc5", + "url": "https://api.github.com/repositories/257738951/contents/src/Microsoft.Crank.Controller/ResultTable.cs?ref=20fd95ee1a91b7030058745e620b757d795c6d7a", + "git_url": "https://api.github.com/repositories/257738951/git/blobs/34246ee3d53010ec5bbc6dfc3505ae947c0acdc5", + "html_url": "https://github.com/dotnet/crank/blob/20fd95ee1a91b7030058745e620b757d795c6d7a/src/Microsoft.Crank.Controller/ResultTable.cs", + "repository": { + "id": 257738951, + "node_id": "MDEwOlJlcG9zaXRvcnkyNTc3Mzg5NTE=", + "name": "crank", + "full_name": "dotnet/crank", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/crank", + "description": "Benchmarking infrastructure for applications", + "fork": false, + "url": "https://api.github.com/repos/dotnet/crank", + "forks_url": "https://api.github.com/repos/dotnet/crank/forks", + "keys_url": "https://api.github.com/repos/dotnet/crank/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/crank/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/crank/teams", + "hooks_url": "https://api.github.com/repos/dotnet/crank/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/crank/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/crank/events", + "assignees_url": "https://api.github.com/repos/dotnet/crank/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/crank/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/crank/tags", + "blobs_url": "https://api.github.com/repos/dotnet/crank/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/crank/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/crank/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/crank/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/crank/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/crank/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/crank/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/crank/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/crank/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/crank/subscription", + "commits_url": "https://api.github.com/repos/dotnet/crank/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/crank/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/crank/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/crank/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/crank/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/crank/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/crank/merges", + "archive_url": "https://api.github.com/repos/dotnet/crank/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/crank/downloads", + "issues_url": "https://api.github.com/repos/dotnet/crank/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/crank/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/crank/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/crank/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/crank/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/crank/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/crank/deployments" + }, + "score": 1 + }, + { + "name": "LLVMOrcMaterializationUnitMaterializeFunction.cs", + "path": "sources/LLVMSharp.Interop/Manual/LLVMOrcMaterializationUnitMaterializeFunction.cs", + "sha": "4144e709727cfb9fa56e7bab90fbf9327e6dc898", + "url": "https://api.github.com/repositories/30781424/contents/sources/LLVMSharp.Interop/Manual/LLVMOrcMaterializationUnitMaterializeFunction.cs?ref=ea05882d8a677a1b76b7d9ef8eca64f43309c9ac", + "git_url": "https://api.github.com/repositories/30781424/git/blobs/4144e709727cfb9fa56e7bab90fbf9327e6dc898", + "html_url": "https://github.com/dotnet/LLVMSharp/blob/ea05882d8a677a1b76b7d9ef8eca64f43309c9ac/sources/LLVMSharp.Interop/Manual/LLVMOrcMaterializationUnitMaterializeFunction.cs", + "repository": { + "id": 30781424, + "node_id": "MDEwOlJlcG9zaXRvcnkzMDc4MTQyNA==", + "name": "LLVMSharp", + "full_name": "dotnet/LLVMSharp", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/LLVMSharp", + "description": "LLVM bindings for .NET Standard written in C# using ClangSharp", + "fork": false, + "url": "https://api.github.com/repos/dotnet/LLVMSharp", + "forks_url": "https://api.github.com/repos/dotnet/LLVMSharp/forks", + "keys_url": "https://api.github.com/repos/dotnet/LLVMSharp/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/LLVMSharp/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/LLVMSharp/teams", + "hooks_url": "https://api.github.com/repos/dotnet/LLVMSharp/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/LLVMSharp/events", + "assignees_url": "https://api.github.com/repos/dotnet/LLVMSharp/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/LLVMSharp/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/tags", + "blobs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/LLVMSharp/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/LLVMSharp/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/LLVMSharp/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/LLVMSharp/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/LLVMSharp/subscription", + "commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/LLVMSharp/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/LLVMSharp/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/LLVMSharp/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/LLVMSharp/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/LLVMSharp/merges", + "archive_url": "https://api.github.com/repos/dotnet/LLVMSharp/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/LLVMSharp/downloads", + "issues_url": "https://api.github.com/repos/dotnet/LLVMSharp/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/LLVMSharp/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/LLVMSharp/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/LLVMSharp/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/LLVMSharp/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/LLVMSharp/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/LLVMSharp/deployments" + }, + "score": 1 + }, + { + "name": "AcceptedCharacters.cs", + "path": "src/Razor/src/Microsoft.VisualStudio.Editor.Razor/AcceptedCharacters.cs", + "sha": "417c8d299c3ca872d52ca079e2d7843099a353b5", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/AcceptedCharacters.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/417c8d299c3ca872d52ca079e2d7843099a353b5", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.VisualStudio.Editor.Razor/AcceptedCharacters.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "CodeTypeMemberCollection.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeTypeMemberCollection.cs", + "sha": "2f6b056dcb0d2fe62e0521e503465a2dbda97e48", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeTypeMemberCollection.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2f6b056dcb0d2fe62e0521e503465a2dbda97e48", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.CodeDom/System/CodeTypeMemberCollection.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "SchemaElementDecl.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaElementDecl.cs", + "sha": "340ee68f9159fef09e9855d94129986b81ba9c19", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaElementDecl.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/340ee68f9159fef09e9855d94129986b81ba9c19", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/schema/SchemaElementDecl.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "Resources.cs", + "path": "snippets/csharp/System.Windows.Input/StylusButton/Overview/Properties/Resources.cs", + "sha": "4417b2860838fe67a860be0be64a2906a5e5a387", + "url": "https://api.github.com/repositories/111510915/contents/snippets/csharp/System.Windows.Input/StylusButton/Overview/Properties/Resources.cs?ref=b0bec7fc5a4233a8575c05157005c6293aa6981d", + "git_url": "https://api.github.com/repositories/111510915/git/blobs/4417b2860838fe67a860be0be64a2906a5e5a387", + "html_url": "https://github.com/dotnet/dotnet-api-docs/blob/b0bec7fc5a4233a8575c05157005c6293aa6981d/snippets/csharp/System.Windows.Input/StylusButton/Overview/Properties/Resources.cs", + "repository": { + "id": 111510915, + "node_id": "MDEwOlJlcG9zaXRvcnkxMTE1MTA5MTU=", + "name": "dotnet-api-docs", + "full_name": "dotnet/dotnet-api-docs", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/dotnet-api-docs", + "description": ".NET API reference documentation (.NET 5+, .NET Core, .NET Framework)", + "fork": false, + "url": "https://api.github.com/repos/dotnet/dotnet-api-docs", + "forks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/forks", + "keys_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/teams", + "hooks_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/events", + "assignees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/tags", + "blobs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/subscription", + "commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/merges", + "archive_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/downloads", + "issues_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/dotnet-api-docs/deployments" + }, + "score": 1 + }, + { + "name": "PreferIsKindFix.cs", + "path": "src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs", + "sha": "379e6ef3cc8d2a009e78045faed70c51f667dd1e", + "url": "https://api.github.com/repositories/36946704/contents/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/379e6ef3cc8d2a009e78045faed70c51f667dd1e", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/Fixers/PreferIsKindFix.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + }, + { + "name": "GetSourceLinkUrl.cs", + "path": "src/SourceLink.Bitbucket.Git/GetSourceLinkUrl.cs", + "sha": "33c76bfd7ee87ad5309a7ffd1e635bdce0458a9b", + "url": "https://api.github.com/repositories/130140573/contents/src/SourceLink.Bitbucket.Git/GetSourceLinkUrl.cs?ref=93698e3c7ca6ec3e5d4be9eff07166bb64975bbc", + "git_url": "https://api.github.com/repositories/130140573/git/blobs/33c76bfd7ee87ad5309a7ffd1e635bdce0458a9b", + "html_url": "https://github.com/dotnet/sourcelink/blob/93698e3c7ca6ec3e5d4be9eff07166bb64975bbc/src/SourceLink.Bitbucket.Git/GetSourceLinkUrl.cs", + "repository": { + "id": 130140573, + "node_id": "MDEwOlJlcG9zaXRvcnkxMzAxNDA1NzM=", + "name": "sourcelink", + "full_name": "dotnet/sourcelink", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/sourcelink", + "description": "Source Link enables a great source debugging experience for your users, by adding source control metadata to your built assets", + "fork": false, + "url": "https://api.github.com/repos/dotnet/sourcelink", + "forks_url": "https://api.github.com/repos/dotnet/sourcelink/forks", + "keys_url": "https://api.github.com/repos/dotnet/sourcelink/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/sourcelink/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/sourcelink/teams", + "hooks_url": "https://api.github.com/repos/dotnet/sourcelink/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/sourcelink/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/sourcelink/events", + "assignees_url": "https://api.github.com/repos/dotnet/sourcelink/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/sourcelink/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/sourcelink/tags", + "blobs_url": "https://api.github.com/repos/dotnet/sourcelink/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/sourcelink/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/sourcelink/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/sourcelink/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/sourcelink/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/sourcelink/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/sourcelink/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/sourcelink/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/sourcelink/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/sourcelink/subscription", + "commits_url": "https://api.github.com/repos/dotnet/sourcelink/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/sourcelink/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/sourcelink/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/sourcelink/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/sourcelink/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/sourcelink/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/sourcelink/merges", + "archive_url": "https://api.github.com/repos/dotnet/sourcelink/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/sourcelink/downloads", + "issues_url": "https://api.github.com/repos/dotnet/sourcelink/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/sourcelink/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/sourcelink/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/sourcelink/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/sourcelink/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/sourcelink/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/sourcelink/deployments" + }, + "score": 1 + }, + { + "name": "NetCoreTests.cs", + "path": "src/Workspaces/MSBuildTest/NetCoreTests.cs", + "sha": "33cf8ec0a347e82df00b86ef49cb4c5faa8cc57e", + "url": "https://api.github.com/repositories/29078997/contents/src/Workspaces/MSBuildTest/NetCoreTests.cs?ref=5a1cc5f83e4baba57f0355a685a5d1f487bfac66", + "git_url": "https://api.github.com/repositories/29078997/git/blobs/33cf8ec0a347e82df00b86ef49cb4c5faa8cc57e", + "html_url": "https://github.com/dotnet/roslyn/blob/5a1cc5f83e4baba57f0355a685a5d1f487bfac66/src/Workspaces/MSBuildTest/NetCoreTests.cs", + "repository": { + "id": 29078997, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTA3ODk5Nw==", + "name": "roslyn", + "full_name": "dotnet/roslyn", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn", + "description": "The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn", + "forks_url": "https://api.github.com/repos/dotnet/roslyn/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn/deployments" + }, + "score": 1 + }, + { + "name": "SecurityTimestamp.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecurityTimestamp.cs", + "sha": "433a09a613d7e54ebb98af761c0f658d944f3d73", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecurityTimestamp.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/433a09a613d7e54ebb98af761c0f658d944f3d73", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/SecurityTimestamp.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "XmlHelper.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/XmlHelper.cs", + "sha": "4010944a87d81ec863cfee21057f969f619f7894", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/XmlHelper.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/4010944a87d81ec863cfee21057f969f619f7894", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Security/XmlHelper.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "VSCommandTable.cs", + "path": "src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/VSCommandTable.cs", + "sha": "32af541828e8f69bc9e49b12edfe9732b57fae8d", + "url": "https://api.github.com/repositories/121448052/contents/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/VSCommandTable.cs?ref=35e12216b62663072d6f0a3277d7a3c43adb6a75", + "git_url": "https://api.github.com/repositories/121448052/git/blobs/32af541828e8f69bc9e49b12edfe9732b57fae8d", + "html_url": "https://github.com/dotnet/templates/blob/35e12216b62663072d6f0a3277d7a3c43adb6a75/src/Tools/Microsoft.VisualStudio.Templates.Editorconfig.Command/VSCommandTable.cs", + "repository": { + "id": 121448052, + "node_id": "MDEwOlJlcG9zaXRvcnkxMjE0NDgwNTI=", + "name": "templates", + "full_name": "dotnet/templates", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/templates", + "description": "Templates for .NET", + "fork": false, + "url": "https://api.github.com/repos/dotnet/templates", + "forks_url": "https://api.github.com/repos/dotnet/templates/forks", + "keys_url": "https://api.github.com/repos/dotnet/templates/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/templates/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/templates/teams", + "hooks_url": "https://api.github.com/repos/dotnet/templates/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/templates/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/templates/events", + "assignees_url": "https://api.github.com/repos/dotnet/templates/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/templates/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/templates/tags", + "blobs_url": "https://api.github.com/repos/dotnet/templates/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/templates/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/templates/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/templates/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/templates/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/templates/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/templates/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/templates/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/templates/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/templates/subscription", + "commits_url": "https://api.github.com/repos/dotnet/templates/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/templates/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/templates/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/templates/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/templates/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/templates/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/templates/merges", + "archive_url": "https://api.github.com/repos/dotnet/templates/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/templates/downloads", + "issues_url": "https://api.github.com/repos/dotnet/templates/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/templates/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/templates/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/templates/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/templates/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/templates/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/templates/deployments" + }, + "score": 1 + }, + { + "name": "TempDirectory.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/TempDirectory.cs", + "sha": "39fe2270904a0424c463f7cc83bbc9d77716bb82", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/TempDirectory.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/39fe2270904a0424c463f7cc83bbc9d77716bb82", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/TempDirectory.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "ListExtensions.cs", + "path": "src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ListExtensions.cs", + "sha": "2ee9efc53b5fa8888c8c1f46007a9b5987650232", + "url": "https://api.github.com/repositories/159564733/contents/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ListExtensions.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2ee9efc53b5fa8888c8c1f46007a9b5987650232", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Shared/Microsoft.AspNetCore.Razor.Utilities.Shared/ListExtensions.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "MessageEncoder.cs", + "path": "src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/MessageEncoder.cs", + "sha": "3560625325fb27a47ad050f8181b0062e32772b7", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/MessageEncoder.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3560625325fb27a47ad050f8181b0062e32772b7", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/MessageEncoder.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "WsTrustChannelClientCredentials.cs", + "path": "src/System.ServiceModel.Federation/src/System/ServiceModel/Federation/WsTrustChannelClientCredentials.cs", + "sha": "3661fb77e612d68abba713668699286d1c21cef7", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Federation/src/System/ServiceModel/Federation/WsTrustChannelClientCredentials.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/3661fb77e612d68abba713668699286d1c21cef7", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Federation/src/System/ServiceModel/Federation/WsTrustChannelClientCredentials.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "AdbExitCodes.cs", + "path": "src/Microsoft.DotNet.XHarness.Android/AdbExitCodes.cs", + "sha": "2fbad8ef6a4afae890ab1fcdc7591833ff669ea6", + "url": "https://api.github.com/repositories/247681382/contents/src/Microsoft.DotNet.XHarness.Android/AdbExitCodes.cs?ref=747cfb23923a644ee43b012c5bcd7b738a485b8e", + "git_url": "https://api.github.com/repositories/247681382/git/blobs/2fbad8ef6a4afae890ab1fcdc7591833ff669ea6", + "html_url": "https://github.com/dotnet/xharness/blob/747cfb23923a644ee43b012c5bcd7b738a485b8e/src/Microsoft.DotNet.XHarness.Android/AdbExitCodes.cs", + "repository": { + "id": 247681382, + "node_id": "MDEwOlJlcG9zaXRvcnkyNDc2ODEzODI=", + "name": "xharness", + "full_name": "dotnet/xharness", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/xharness", + "description": "C# command line tool for running tests on Android / iOS / tvOS devices and simulators", + "fork": false, + "url": "https://api.github.com/repos/dotnet/xharness", + "forks_url": "https://api.github.com/repos/dotnet/xharness/forks", + "keys_url": "https://api.github.com/repos/dotnet/xharness/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/xharness/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/xharness/teams", + "hooks_url": "https://api.github.com/repos/dotnet/xharness/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/xharness/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/xharness/events", + "assignees_url": "https://api.github.com/repos/dotnet/xharness/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/xharness/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/xharness/tags", + "blobs_url": "https://api.github.com/repos/dotnet/xharness/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/xharness/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/xharness/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/xharness/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/xharness/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/xharness/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/xharness/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/xharness/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/xharness/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/xharness/subscription", + "commits_url": "https://api.github.com/repos/dotnet/xharness/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/xharness/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/xharness/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/xharness/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/xharness/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/xharness/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/xharness/merges", + "archive_url": "https://api.github.com/repos/dotnet/xharness/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/xharness/downloads", + "issues_url": "https://api.github.com/repos/dotnet/xharness/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/xharness/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/xharness/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/xharness/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/xharness/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/xharness/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/xharness/deployments" + }, + "score": 1 + }, + { + "name": "XmlDsigSep2000.cs", + "path": "src/System.ServiceModel.Primitives/src/System/IdentityModel/Tokens/XmlDsigSep2000.cs", + "sha": "30d467dc03e2de233f5af954d4173d360906b075", + "url": "https://api.github.com/repositories/35562993/contents/src/System.ServiceModel.Primitives/src/System/IdentityModel/Tokens/XmlDsigSep2000.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/30d467dc03e2de233f5af954d4173d360906b075", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/System.ServiceModel.Primitives/src/System/IdentityModel/Tokens/XmlDsigSep2000.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "ResourceLoader.cs", + "path": "src/PdbTestResources/ResourceLoader.cs", + "sha": "361ea5472c8f475967e952444a28795dfe55d28d", + "url": "https://api.github.com/repositories/45562551/contents/src/PdbTestResources/ResourceLoader.cs?ref=615d7ba83f00c049689e1c22af352867aba2023d", + "git_url": "https://api.github.com/repositories/45562551/git/blobs/361ea5472c8f475967e952444a28795dfe55d28d", + "html_url": "https://github.com/dotnet/symreader/blob/615d7ba83f00c049689e1c22af352867aba2023d/src/PdbTestResources/ResourceLoader.cs", + "repository": { + "id": 45562551, + "node_id": "MDEwOlJlcG9zaXRvcnk0NTU2MjU1MQ==", + "name": "symreader", + "full_name": "dotnet/symreader", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/symreader", + "description": "Managed definitions for COM interfaces exposed by DiaSymReader APIs", + "fork": false, + "url": "https://api.github.com/repos/dotnet/symreader", + "forks_url": "https://api.github.com/repos/dotnet/symreader/forks", + "keys_url": "https://api.github.com/repos/dotnet/symreader/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/symreader/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/symreader/teams", + "hooks_url": "https://api.github.com/repos/dotnet/symreader/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/symreader/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/symreader/events", + "assignees_url": "https://api.github.com/repos/dotnet/symreader/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/symreader/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/symreader/tags", + "blobs_url": "https://api.github.com/repos/dotnet/symreader/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/symreader/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/symreader/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/symreader/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/symreader/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/symreader/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/symreader/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/symreader/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/symreader/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/symreader/subscription", + "commits_url": "https://api.github.com/repos/dotnet/symreader/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/symreader/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/symreader/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/symreader/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/symreader/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/symreader/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/symreader/merges", + "archive_url": "https://api.github.com/repos/dotnet/symreader/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/symreader/downloads", + "issues_url": "https://api.github.com/repos/dotnet/symreader/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/symreader/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/symreader/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/symreader/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/symreader/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/symreader/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/symreader/deployments" + }, + "score": 1 + }, + { + "name": "CollectionWrapper.cs", + "path": "src/Compiler/Graphs/CollectionWrapper.cs", + "sha": "3fb5a789de3c7276b5049245dfca9d7904f227c1", + "url": "https://api.github.com/repositories/148852400/contents/src/Compiler/Graphs/CollectionWrapper.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/3fb5a789de3c7276b5049245dfca9d7904f227c1", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Compiler/Graphs/CollectionWrapper.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "IOnInitialized.cs", + "path": "src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IOnInitialized.cs", + "sha": "2dee615eea3728ad1498a95773e43d9f9186cf1b", + "url": "https://api.github.com/repositories/159564733/contents/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IOnInitialized.cs?ref=ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44", + "git_url": "https://api.github.com/repositories/159564733/git/blobs/2dee615eea3728ad1498a95773e43d9f9186cf1b", + "html_url": "https://github.com/dotnet/razor/blob/ddae74f65a4bbf565fa24fb84eaf16c68cfb6a44/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/IOnInitialized.cs", + "repository": { + "id": 159564733, + "node_id": "MDEwOlJlcG9zaXRvcnkxNTk1NjQ3MzM=", + "name": "razor", + "full_name": "dotnet/razor", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/razor", + "description": "Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/razor", + "forks_url": "https://api.github.com/repos/dotnet/razor/forks", + "keys_url": "https://api.github.com/repos/dotnet/razor/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/razor/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/razor/teams", + "hooks_url": "https://api.github.com/repos/dotnet/razor/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/razor/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/razor/events", + "assignees_url": "https://api.github.com/repos/dotnet/razor/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/razor/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/razor/tags", + "blobs_url": "https://api.github.com/repos/dotnet/razor/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/razor/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/razor/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/razor/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/razor/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/razor/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/razor/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/razor/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/razor/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/razor/subscription", + "commits_url": "https://api.github.com/repos/dotnet/razor/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/razor/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/razor/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/razor/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/razor/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/razor/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/razor/merges", + "archive_url": "https://api.github.com/repos/dotnet/razor/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/razor/downloads", + "issues_url": "https://api.github.com/repos/dotnet/razor/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/razor/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/razor/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/razor/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/razor/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/razor/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/razor/deployments" + }, + "score": 1 + }, + { + "name": "MethodInstanceReference.cs", + "path": "src/Compiler/TransformFramework/CodeModel/MethodInstanceReference.cs", + "sha": "3b02cd02481c897b34219a197dd53cbb642bb111", + "url": "https://api.github.com/repositories/148852400/contents/src/Compiler/TransformFramework/CodeModel/MethodInstanceReference.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/3b02cd02481c897b34219a197dd53cbb642bb111", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Compiler/TransformFramework/CodeModel/MethodInstanceReference.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "ClassifierEvaluatorMappingExtensions.cs", + "path": "src/Learners/Classifier/Mappings/ClassifierEvaluatorMappingExtensions.cs", + "sha": "33a0a47c9d93ae97288d35b0f50da5fe82c44050", + "url": "https://api.github.com/repositories/148852400/contents/src/Learners/Classifier/Mappings/ClassifierEvaluatorMappingExtensions.cs?ref=5bd86ece6bacf74f9cbcae4971578ed29fa17b23", + "git_url": "https://api.github.com/repositories/148852400/git/blobs/33a0a47c9d93ae97288d35b0f50da5fe82c44050", + "html_url": "https://github.com/dotnet/infer/blob/5bd86ece6bacf74f9cbcae4971578ed29fa17b23/src/Learners/Classifier/Mappings/ClassifierEvaluatorMappingExtensions.cs", + "repository": { + "id": 148852400, + "node_id": "MDEwOlJlcG9zaXRvcnkxNDg4NTI0MDA=", + "name": "infer", + "full_name": "dotnet/infer", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/infer", + "description": "Infer.NET is a framework for running Bayesian inference in graphical models", + "fork": false, + "url": "https://api.github.com/repos/dotnet/infer", + "forks_url": "https://api.github.com/repos/dotnet/infer/forks", + "keys_url": "https://api.github.com/repos/dotnet/infer/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/infer/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/infer/teams", + "hooks_url": "https://api.github.com/repos/dotnet/infer/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/infer/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/infer/events", + "assignees_url": "https://api.github.com/repos/dotnet/infer/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/infer/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/infer/tags", + "blobs_url": "https://api.github.com/repos/dotnet/infer/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/infer/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/infer/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/infer/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/infer/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/infer/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/infer/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/infer/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/infer/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/infer/subscription", + "commits_url": "https://api.github.com/repos/dotnet/infer/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/infer/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/infer/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/infer/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/infer/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/infer/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/infer/merges", + "archive_url": "https://api.github.com/repos/dotnet/infer/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/infer/downloads", + "issues_url": "https://api.github.com/repos/dotnet/infer/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/infer/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/infer/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/infer/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/infer/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/infer/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/infer/deployments" + }, + "score": 1 + }, + { + "name": "SecurityTokenProvider.cs", + "path": "src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Selectors/SecurityTokenProvider.cs", + "sha": "2e52606a35a8adc7367ea4cf959425a8d6d5225e", + "url": "https://api.github.com/repositories/35562993/contents/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Selectors/SecurityTokenProvider.cs?ref=f424f6f1f5c9e42a1c33e69f98613b8252e69c36", + "git_url": "https://api.github.com/repositories/35562993/git/blobs/2e52606a35a8adc7367ea4cf959425a8d6d5225e", + "html_url": "https://github.com/dotnet/wcf/blob/f424f6f1f5c9e42a1c33e69f98613b8252e69c36/src/dotnet-svcutil/lib/src/FrameworkFork/System.ServiceModel/System/IdentityModel/Selectors/SecurityTokenProvider.cs", + "repository": { + "id": 35562993, + "node_id": "MDEwOlJlcG9zaXRvcnkzNTU2Mjk5Mw==", + "name": "wcf", + "full_name": "dotnet/wcf", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/wcf", + "description": "This repo contains the client-oriented WCF libraries that enable applications built on .NET Core to communicate with WCF services.", + "fork": false, + "url": "https://api.github.com/repos/dotnet/wcf", + "forks_url": "https://api.github.com/repos/dotnet/wcf/forks", + "keys_url": "https://api.github.com/repos/dotnet/wcf/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/wcf/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/wcf/teams", + "hooks_url": "https://api.github.com/repos/dotnet/wcf/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/wcf/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/wcf/events", + "assignees_url": "https://api.github.com/repos/dotnet/wcf/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/wcf/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/wcf/tags", + "blobs_url": "https://api.github.com/repos/dotnet/wcf/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/wcf/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/wcf/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/wcf/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/wcf/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/wcf/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/wcf/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/wcf/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/wcf/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/wcf/subscription", + "commits_url": "https://api.github.com/repos/dotnet/wcf/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/wcf/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/wcf/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/wcf/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/wcf/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/wcf/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/wcf/merges", + "archive_url": "https://api.github.com/repos/dotnet/wcf/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/wcf/downloads", + "issues_url": "https://api.github.com/repos/dotnet/wcf/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/wcf/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/wcf/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/wcf/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/wcf/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/wcf/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/wcf/deployments" + }, + "score": 1 + }, + { + "name": "ReviewCodeForXamlInjectionVulnerabilities.cs", + "path": "src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs", + "sha": "3b4ffe8bab97d608d73e3e2792a80847f810656f", + "url": "https://api.github.com/repositories/36946704/contents/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs?ref=bdcbcac041cce28a795664fd67e9dbcf6ee30ae7", + "git_url": "https://api.github.com/repositories/36946704/git/blobs/3b4ffe8bab97d608d73e3e2792a80847f810656f", + "html_url": "https://github.com/dotnet/roslyn-analyzers/blob/bdcbcac041cce28a795664fd67e9dbcf6ee30ae7/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Security/ReviewCodeForXamlInjectionVulnerabilities.cs", + "repository": { + "id": 36946704, + "node_id": "MDEwOlJlcG9zaXRvcnkzNjk0NjcwNA==", + "name": "roslyn-analyzers", + "full_name": "dotnet/roslyn-analyzers", + "private": false, + "owner": { + "login": "dotnet", + "id": 9141961, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9141961?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dotnet", + "html_url": "https://github.com/dotnet", + "followers_url": "https://api.github.com/users/dotnet/followers", + "following_url": "https://api.github.com/users/dotnet/following{/other_user}", + "gists_url": "https://api.github.com/users/dotnet/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dotnet/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dotnet/subscriptions", + "organizations_url": "https://api.github.com/users/dotnet/orgs", + "repos_url": "https://api.github.com/users/dotnet/repos", + "events_url": "https://api.github.com/users/dotnet/events{/privacy}", + "received_events_url": "https://api.github.com/users/dotnet/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/dotnet/roslyn-analyzers", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/dotnet/roslyn-analyzers", + "forks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/forks", + "keys_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/teams", + "hooks_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/hooks", + "issue_events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/events{/number}", + "events_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/events", + "assignees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/assignees{/user}", + "branches_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/branches{/branch}", + "tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/tags", + "blobs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/statuses/{sha}", + "languages_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/languages", + "stargazers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/stargazers", + "contributors_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contributors", + "subscribers_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscribers", + "subscription_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/subscription", + "commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/contents/{+path}", + "compare_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/merges", + "archive_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/downloads", + "issues_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/issues{/number}", + "pulls_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/pulls{/number}", + "milestones_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/milestones{/number}", + "notifications_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/labels{/name}", + "releases_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/releases{/id}", + "deployments_url": "https://api.github.com/repos/dotnet/roslyn-analyzers/deployments" + }, + "score": 1 + } + ] + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/9-codeSearch.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/9-codeSearch.json new file mode 100644 index 00000000000..7fe2ed70c26 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/code-search-success/9-codeSearch.json @@ -0,0 +1,13 @@ +{ + "request": { + "kind": "codeSearch", + "query": "org%3Adotnet+project+language%3Acsharp&per_page=100&page=10" + }, + "response": { + "status": 403, + "body": { + "message": "API rate limit exceeded for user ID 311693.", + "documentation_url": "https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-missing-controller-repo/0-getRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-missing-controller-repo/0-getRepo.json new file mode 100644 index 00000000000..8c01295c2a0 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-missing-controller-repo/0-getRepo.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getRepo" + }, + "response": { + "status": 404, + "body": { + "message": "Repository not found" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/0-getRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/0-getRepo.json new file mode 100644 index 00000000000..a1fa60a031e --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/0-getRepo.json @@ -0,0 +1,159 @@ +{ + "request": { + "kind": "getRepo" + }, + "response": { + "status": 200, + "body": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments", + "created_at": "2022-10-26T10:37:59Z", + "updated_at": "2022-10-26T10:37:59Z", + "pushed_at": "2022-10-26T10:38:02Z", + "git_url": "git://github.com/github/mrva-demo-controller-repo.git", + "ssh_url": "git@github.com:github/mrva-demo-controller-repo.git", + "clone_url": "https://github.com/github/mrva-demo-controller-repo.git", + "svn_url": "https://github.com/github/mrva-demo-controller-repo", + "homepage": null, + "size": 0, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": null, + "allow_forking": false, + "is_template": false, + "web_commit_signoff_required": false, + "topics": [], + "visibility": "private", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main", + "permissions": { + "admin": true, + "maintain": true, + "push": true, + "triage": true, + "pull": true + }, + "temp_clone_token": "AACMDDJSXFX6QQXTSB4YQCDDLEWP4", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "allow_auto_merge": false, + "delete_branch_on_merge": false, + "allow_update_branch": false, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE", + "organization": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "security_and_analysis": { + "advanced_security": { + "status": "enabled" + }, + "secret_scanning": { + "status": "enabled" + }, + "secret_scanning_push_protection": { + "status": "enabled" + } + }, + "network_count": 0, + "subscribers_count": 0 + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/1-submitVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/1-submitVariantAnalysis.json new file mode 100644 index 00000000000..a34ec7dab63 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/1-submitVariantAnalysis.json @@ -0,0 +1,104 @@ +{ + "request": { + "kind": "submitVariantAnalysis" + }, + "response": { + "status": 201, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124513Z&X-Amz-Expires=3600&X-Amz-Signature=0f5f84090c84c1b915e47960bcbc6f66433cd345cdc81cc08669920b48f6b622&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:13Z", + "status": "in_progress", + "skipped_repositories": {} + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/10-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/10-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..c72794ee4b8 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/10-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 206444 + }, + "response": { + "status": 200, + "body": "file:17-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/11-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/11-getVariantAnalysis.json new file mode 100644 index 00000000000..940f4e33e5f --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/11-getVariantAnalysis.json @@ -0,0 +1,181 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124653Z&X-Amz-Expires=3600&X-Amz-Signature=2147ea8461603acdb32fc38544dffb62e74db12fbbe5a32f269420d4945841a1&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/12-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/12-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..5507aa3357d --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/12-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 23418517 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 23418517, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzQxODUxNw==", + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "owner": { + "login": "apache", + "id": 47359, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5", + "avatar_url": "https://avatars.githubusercontent.com/u/47359?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/apache", + "html_url": "https://github.com/apache", + "followers_url": "https://api.github.com/users/apache/followers", + "following_url": "https://api.github.com/users/apache/following{/other_user}", + "gists_url": "https://api.github.com/users/apache/gists{/gist_id}", + "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/apache/subscriptions", + "organizations_url": "https://api.github.com/users/apache/orgs", + "repos_url": "https://api.github.com/users/apache/repos", + "events_url": "https://api.github.com/users/apache/events{/privacy}", + "received_events_url": "https://api.github.com/users/apache/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/apache/hadoop", + "description": "Apache Hadoop", + "fork": false, + "url": "https://api.github.com/repos/apache/hadoop", + "forks_url": "https://api.github.com/repos/apache/hadoop/forks", + "keys_url": "https://api.github.com/repos/apache/hadoop/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/apache/hadoop/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/apache/hadoop/teams", + "hooks_url": "https://api.github.com/repos/apache/hadoop/hooks", + "issue_events_url": "https://api.github.com/repos/apache/hadoop/issues/events{/number}", + "events_url": "https://api.github.com/repos/apache/hadoop/events", + "assignees_url": "https://api.github.com/repos/apache/hadoop/assignees{/user}", + "branches_url": "https://api.github.com/repos/apache/hadoop/branches{/branch}", + "tags_url": "https://api.github.com/repos/apache/hadoop/tags", + "blobs_url": "https://api.github.com/repos/apache/hadoop/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/apache/hadoop/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/apache/hadoop/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/apache/hadoop/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/apache/hadoop/statuses/{sha}", + "languages_url": "https://api.github.com/repos/apache/hadoop/languages", + "stargazers_url": "https://api.github.com/repos/apache/hadoop/stargazers", + "contributors_url": "https://api.github.com/repos/apache/hadoop/contributors", + "subscribers_url": "https://api.github.com/repos/apache/hadoop/subscribers", + "subscription_url": "https://api.github.com/repos/apache/hadoop/subscription", + "commits_url": "https://api.github.com/repos/apache/hadoop/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/apache/hadoop/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/apache/hadoop/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/apache/hadoop/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/apache/hadoop/contents/{+path}", + "compare_url": "https://api.github.com/repos/apache/hadoop/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/apache/hadoop/merges", + "archive_url": "https://api.github.com/repos/apache/hadoop/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/apache/hadoop/downloads", + "issues_url": "https://api.github.com/repos/apache/hadoop/issues{/number}", + "pulls_url": "https://api.github.com/repos/apache/hadoop/pulls{/number}", + "milestones_url": "https://api.github.com/repos/apache/hadoop/milestones{/number}", + "notifications_url": "https://api.github.com/repos/apache/hadoop/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/apache/hadoop/labels{/name}", + "releases_url": "https://api.github.com/repos/apache/hadoop/releases{/id}", + "deployments_url": "https://api.github.com/repos/apache/hadoop/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3, + "database_commit_sha": "aac87ffe76451c2fd535350b7aefb384e2be6241", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/146/23418517/425ed1e9-c214-4f71-832d-798da3ed7452?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124654Z&X-Amz-Expires=300&X-Amz-Signature=98dc5dfcc4c70c4cc40fb62fb87a21671b1ee26266e8ade3109d6f39cfceef5a&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/13-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/13-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..bcff167d720 Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/13-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/13-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/13-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..a8c6cee5845 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/13-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 23418517 + }, + "response": { + "status": 200, + "body": "file:13-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/14-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/14-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..55320dbca82 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/14-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 257485422 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 257485422, + "node_id": "MDEwOlJlcG9zaXRvcnkyNTc0ODU0MjI=", + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "owner": { + "login": "vitejs", + "id": 65625612, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjY1NjI1NjEy", + "avatar_url": "https://avatars.githubusercontent.com/u/65625612?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vitejs", + "html_url": "https://github.com/vitejs", + "followers_url": "https://api.github.com/users/vitejs/followers", + "following_url": "https://api.github.com/users/vitejs/following{/other_user}", + "gists_url": "https://api.github.com/users/vitejs/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vitejs/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vitejs/subscriptions", + "organizations_url": "https://api.github.com/users/vitejs/orgs", + "repos_url": "https://api.github.com/users/vitejs/repos", + "events_url": "https://api.github.com/users/vitejs/events{/privacy}", + "received_events_url": "https://api.github.com/users/vitejs/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/vitejs/vite", + "description": "Next generation frontend tooling. It's fast!", + "fork": false, + "url": "https://api.github.com/repos/vitejs/vite", + "forks_url": "https://api.github.com/repos/vitejs/vite/forks", + "keys_url": "https://api.github.com/repos/vitejs/vite/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/vitejs/vite/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/vitejs/vite/teams", + "hooks_url": "https://api.github.com/repos/vitejs/vite/hooks", + "issue_events_url": "https://api.github.com/repos/vitejs/vite/issues/events{/number}", + "events_url": "https://api.github.com/repos/vitejs/vite/events", + "assignees_url": "https://api.github.com/repos/vitejs/vite/assignees{/user}", + "branches_url": "https://api.github.com/repos/vitejs/vite/branches{/branch}", + "tags_url": "https://api.github.com/repos/vitejs/vite/tags", + "blobs_url": "https://api.github.com/repos/vitejs/vite/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/vitejs/vite/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/vitejs/vite/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/vitejs/vite/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/vitejs/vite/statuses/{sha}", + "languages_url": "https://api.github.com/repos/vitejs/vite/languages", + "stargazers_url": "https://api.github.com/repos/vitejs/vite/stargazers", + "contributors_url": "https://api.github.com/repos/vitejs/vite/contributors", + "subscribers_url": "https://api.github.com/repos/vitejs/vite/subscribers", + "subscription_url": "https://api.github.com/repos/vitejs/vite/subscription", + "commits_url": "https://api.github.com/repos/vitejs/vite/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/vitejs/vite/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/vitejs/vite/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/vitejs/vite/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/vitejs/vite/contents/{+path}", + "compare_url": "https://api.github.com/repos/vitejs/vite/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/vitejs/vite/merges", + "archive_url": "https://api.github.com/repos/vitejs/vite/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/vitejs/vite/downloads", + "issues_url": "https://api.github.com/repos/vitejs/vite/issues{/number}", + "pulls_url": "https://api.github.com/repos/vitejs/vite/pulls{/number}", + "milestones_url": "https://api.github.com/repos/vitejs/vite/milestones{/number}", + "notifications_url": "https://api.github.com/repos/vitejs/vite/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/vitejs/vite/labels{/name}", + "releases_url": "https://api.github.com/repos/vitejs/vite/releases{/id}", + "deployments_url": "https://api.github.com/repos/vitejs/vite/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0, + "database_commit_sha": "de6323f460dd3e7e3edf97443ece2acce6187ea0", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/146/257485422/862ee5f1-0e34-4997-a60e-b97cea3eadc9?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124658Z&X-Amz-Expires=300&X-Amz-Signature=df0ac0f0f8f746ad977ad859bc6b43e4cdc74ff285a33cba489b16bf9c161490&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/15-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/15-getVariantAnalysis.json new file mode 100644 index 00000000000..da8da971961 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/15-getVariantAnalysis.json @@ -0,0 +1,181 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124659Z&X-Amz-Expires=3600&X-Amz-Signature=b791ede467cd1783d31d7ee148763d0d4f9eb7abad7506ef9c25017c94aaa1df&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/16-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/16-getVariantAnalysis.json new file mode 100644 index 00000000000..a52b46d6e2f --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/16-getVariantAnalysis.json @@ -0,0 +1,181 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124705Z&X-Amz-Expires=3600&X-Amz-Signature=dae9aa87c393b62ad6f84fd280c731fcd8e4551917920bf978eac5dd6102caec&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/17-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/17-getVariantAnalysis.json new file mode 100644 index 00000000000..292389e7749 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/17-getVariantAnalysis.json @@ -0,0 +1,183 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124726Z&X-Amz-Expires=3600&X-Amz-Signature=6698289315bd8d8378a17784ba0be9955e6e9161497137c4ccb29b1d2a3f3587&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 156706, + "result_count": 8 + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/17-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/17-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..4eb4583670d Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/17-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/18-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/18-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..d79fc358504 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/18-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 20753500 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 20753500, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDc1MzUwMA==", + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "owner": { + "login": "angular-cn", + "id": 6211039, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjYyMTEwMzk=", + "avatar_url": "https://avatars.githubusercontent.com/u/6211039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/angular-cn", + "html_url": "https://github.com/angular-cn", + "followers_url": "https://api.github.com/users/angular-cn/followers", + "following_url": "https://api.github.com/users/angular-cn/following{/other_user}", + "gists_url": "https://api.github.com/users/angular-cn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/angular-cn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/angular-cn/subscriptions", + "organizations_url": "https://api.github.com/users/angular-cn/orgs", + "repos_url": "https://api.github.com/users/angular-cn/repos", + "events_url": "https://api.github.com/users/angular-cn/events{/privacy}", + "received_events_url": "https://api.github.com/users/angular-cn/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/angular-cn/ng-nice", + "description": "NgNice Web Site http://ngnice.com", + "fork": false, + "url": "https://api.github.com/repos/angular-cn/ng-nice", + "forks_url": "https://api.github.com/repos/angular-cn/ng-nice/forks", + "keys_url": "https://api.github.com/repos/angular-cn/ng-nice/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/angular-cn/ng-nice/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/angular-cn/ng-nice/teams", + "hooks_url": "https://api.github.com/repos/angular-cn/ng-nice/hooks", + "issue_events_url": "https://api.github.com/repos/angular-cn/ng-nice/issues/events{/number}", + "events_url": "https://api.github.com/repos/angular-cn/ng-nice/events", + "assignees_url": "https://api.github.com/repos/angular-cn/ng-nice/assignees{/user}", + "branches_url": "https://api.github.com/repos/angular-cn/ng-nice/branches{/branch}", + "tags_url": "https://api.github.com/repos/angular-cn/ng-nice/tags", + "blobs_url": "https://api.github.com/repos/angular-cn/ng-nice/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/angular-cn/ng-nice/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/angular-cn/ng-nice/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/angular-cn/ng-nice/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/angular-cn/ng-nice/statuses/{sha}", + "languages_url": "https://api.github.com/repos/angular-cn/ng-nice/languages", + "stargazers_url": "https://api.github.com/repos/angular-cn/ng-nice/stargazers", + "contributors_url": "https://api.github.com/repos/angular-cn/ng-nice/contributors", + "subscribers_url": "https://api.github.com/repos/angular-cn/ng-nice/subscribers", + "subscription_url": "https://api.github.com/repos/angular-cn/ng-nice/subscription", + "commits_url": "https://api.github.com/repos/angular-cn/ng-nice/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/angular-cn/ng-nice/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/angular-cn/ng-nice/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/angular-cn/ng-nice/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/angular-cn/ng-nice/contents/{+path}", + "compare_url": "https://api.github.com/repos/angular-cn/ng-nice/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/angular-cn/ng-nice/merges", + "archive_url": "https://api.github.com/repos/angular-cn/ng-nice/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/angular-cn/ng-nice/downloads", + "issues_url": "https://api.github.com/repos/angular-cn/ng-nice/issues{/number}", + "pulls_url": "https://api.github.com/repos/angular-cn/ng-nice/pulls{/number}", + "milestones_url": "https://api.github.com/repos/angular-cn/ng-nice/milestones{/number}", + "notifications_url": "https://api.github.com/repos/angular-cn/ng-nice/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/angular-cn/ng-nice/labels{/name}", + "releases_url": "https://api.github.com/repos/angular-cn/ng-nice/releases{/id}", + "deployments_url": "https://api.github.com/repos/angular-cn/ng-nice/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 156706, + "result_count": 8, + "database_commit_sha": "85f9118fa7c10395eb01b019ba57680805897efa", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/146/20753500/7cb3d923-6312-4453-8df2-e98382437ddd?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124729Z&X-Amz-Expires=300&X-Amz-Signature=d8e403e6ed13e7ce8b305d07be139e3ffac8a26f2e010acdbeaf9365588ab17f&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/19-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/19-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..8c728bf0582 Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/19-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/19-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/19-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..61370464aa9 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/19-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 20753500 + }, + "response": { + "status": 200, + "body": "file:19-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/2-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/2-getVariantAnalysis.json new file mode 100644 index 00000000000..0c025db7b0d --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/2-getVariantAnalysis.json @@ -0,0 +1,175 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124518Z&X-Amz-Expires=3600&X-Amz-Signature=5fbb5b3fa99984d065d3229c83f19cb9741218e6e1ba5b7bb81a7d6df88cb66b&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/20-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/20-getVariantAnalysis.json new file mode 100644 index 00000000000..dc33e831bb4 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/20-getVariantAnalysis.json @@ -0,0 +1,183 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124732Z&X-Amz-Expires=3600&X-Amz-Signature=ad791eb1a754f473a50454616e9bd04663dfed60a5c84f2c61f27ced47ee25d0&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 156706, + "result_count": 8 + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/21-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/21-getVariantAnalysis.json new file mode 100644 index 00000000000..0c310a139f6 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/21-getVariantAnalysis.json @@ -0,0 +1,183 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124759Z&X-Amz-Expires=3600&X-Amz-Signature=5b0be34c426152c37e3d4c761bf576a07c9d4bb6222f32c438e02605600f0394&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 156706, + "result_count": 8 + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/22-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/22-getVariantAnalysis.json new file mode 100644 index 00000000000..44e966b9396 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/22-getVariantAnalysis.json @@ -0,0 +1,183 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124805Z&X-Amz-Expires=3600&X-Amz-Signature=73b43f47ee53938b91fa7d23c33e750c466fff777ea94ceb052771ee8dc25b6c&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 156706, + "result_count": 8 + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/23-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/23-getVariantAnalysis.json new file mode 100644 index 00000000000..bd330748f61 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/23-getVariantAnalysis.json @@ -0,0 +1,185 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124815Z&X-Amz-Expires=3600&X-Amz-Signature=0f42201f27ad08ac1fa9caccf5005d9dac7bdcae33e88e33d62e2fc337194164&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 156706, + "result_count": 8 + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 710, + "result_count": 0 + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/24-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/24-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..4218c8111e0 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/24-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 236095576 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 236095576, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzYwOTU1NzY=", + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "owner": { + "login": "backstage", + "id": 72526453, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjcyNTI2NDUz", + "avatar_url": "https://avatars.githubusercontent.com/u/72526453?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/backstage", + "html_url": "https://github.com/backstage", + "followers_url": "https://api.github.com/users/backstage/followers", + "following_url": "https://api.github.com/users/backstage/following{/other_user}", + "gists_url": "https://api.github.com/users/backstage/gists{/gist_id}", + "starred_url": "https://api.github.com/users/backstage/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/backstage/subscriptions", + "organizations_url": "https://api.github.com/users/backstage/orgs", + "repos_url": "https://api.github.com/users/backstage/repos", + "events_url": "https://api.github.com/users/backstage/events{/privacy}", + "received_events_url": "https://api.github.com/users/backstage/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/backstage/backstage", + "description": "Backstage is an open platform for building developer portals", + "fork": false, + "url": "https://api.github.com/repos/backstage/backstage", + "forks_url": "https://api.github.com/repos/backstage/backstage/forks", + "keys_url": "https://api.github.com/repos/backstage/backstage/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/backstage/backstage/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/backstage/backstage/teams", + "hooks_url": "https://api.github.com/repos/backstage/backstage/hooks", + "issue_events_url": "https://api.github.com/repos/backstage/backstage/issues/events{/number}", + "events_url": "https://api.github.com/repos/backstage/backstage/events", + "assignees_url": "https://api.github.com/repos/backstage/backstage/assignees{/user}", + "branches_url": "https://api.github.com/repos/backstage/backstage/branches{/branch}", + "tags_url": "https://api.github.com/repos/backstage/backstage/tags", + "blobs_url": "https://api.github.com/repos/backstage/backstage/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/backstage/backstage/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/backstage/backstage/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/backstage/backstage/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/backstage/backstage/statuses/{sha}", + "languages_url": "https://api.github.com/repos/backstage/backstage/languages", + "stargazers_url": "https://api.github.com/repos/backstage/backstage/stargazers", + "contributors_url": "https://api.github.com/repos/backstage/backstage/contributors", + "subscribers_url": "https://api.github.com/repos/backstage/backstage/subscribers", + "subscription_url": "https://api.github.com/repos/backstage/backstage/subscription", + "commits_url": "https://api.github.com/repos/backstage/backstage/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/backstage/backstage/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/backstage/backstage/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/backstage/backstage/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/backstage/backstage/contents/{+path}", + "compare_url": "https://api.github.com/repos/backstage/backstage/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/backstage/backstage/merges", + "archive_url": "https://api.github.com/repos/backstage/backstage/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/backstage/backstage/downloads", + "issues_url": "https://api.github.com/repos/backstage/backstage/issues{/number}", + "pulls_url": "https://api.github.com/repos/backstage/backstage/pulls{/number}", + "milestones_url": "https://api.github.com/repos/backstage/backstage/milestones{/number}", + "notifications_url": "https://api.github.com/repos/backstage/backstage/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/backstage/backstage/labels{/name}", + "releases_url": "https://api.github.com/repos/backstage/backstage/releases{/id}", + "deployments_url": "https://api.github.com/repos/backstage/backstage/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 710, + "result_count": 0, + "database_commit_sha": "18536a76c5efb0f0706c309f3295ed7f11f80491", + "source_location_prefix": "/home/runner/work/backstage/backstage", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/146/236095576/b4e1e158-d7ce-45e8-8fac-dad3524f2d54?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124816Z&X-Amz-Expires=300&X-Amz-Signature=c215823eebb9d0ca92045e1c99591dfd28005562815b46d68cbfad25621375ea&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/25-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/25-getVariantAnalysis.json new file mode 100644 index 00000000000..824c4b2ed32 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/25-getVariantAnalysis.json @@ -0,0 +1,186 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124821Z&X-Amz-Expires=3600&X-Amz-Signature=e58c895ffa093606544a7e96b85e10da3b5d4dce741b4f1553dd1c2c6735aca1&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "succeeded", + "completed_at": "2022-10-26T12:48:17Z", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 156706, + "result_count": 8 + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 710, + "result_count": 0 + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 702, + "result_count": 0 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/3-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/3-getVariantAnalysis.json new file mode 100644 index 00000000000..5f721b987a2 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/3-getVariantAnalysis.json @@ -0,0 +1,175 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124541Z&X-Amz-Expires=3600&X-Amz-Signature=460be8321c2d7f129cb3b2ddaefabb4e11b1bf1de207fc4bfaa9fa30b3d4c2ac&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/4-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/4-getVariantAnalysis.json new file mode 100644 index 00000000000..7c6a6af4a03 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/4-getVariantAnalysis.json @@ -0,0 +1,175 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124546Z&X-Amz-Expires=3600&X-Amz-Signature=79291ed9da9d10cb098bdd70f2a9a67b9701a95fdbe9aa261a7342d57454846a&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/5-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/5-getVariantAnalysis.json new file mode 100644 index 00000000000..845057d266f --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/5-getVariantAnalysis.json @@ -0,0 +1,175 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124552Z&X-Amz-Expires=3600&X-Amz-Signature=e25cb4302b297cbe9e966af21101c218421e6bd5b9a414b83fc795fba8af33ad&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/6-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/6-getVariantAnalysis.json new file mode 100644 index 00000000000..a4d3b5a815a --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/6-getVariantAnalysis.json @@ -0,0 +1,175 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124618Z&X-Amz-Expires=3600&X-Amz-Signature=7c109fe6684058982d551c9cc35684bd759d50e49f80f1b61e4614d48bace95a&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/7-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/7-getVariantAnalysis.json new file mode 100644 index 00000000000..3154da0766a --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/7-getVariantAnalysis.json @@ -0,0 +1,176 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124641Z&X-Amz-Expires=3600&X-Amz-Signature=2cd9d02905646befe58ab320d457c89fcccf57a72d70709238edb7caf6737fa4&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "in_progress", + "artifact_size_in_bytes": 81841 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/8-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/8-getVariantAnalysis.json new file mode 100644 index 00000000000..9871fbd0a4a --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/8-getVariantAnalysis.json @@ -0,0 +1,177 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 146, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/146/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124647Z&X-Amz-Expires=3600&X-Amz-Signature=c381f6655d995c39506813e30604a1963c77c3b0fb978d1a13143faa1e66a60b&X-Amz-SignedHeaders=host", + "created_at": "2022-10-26T12:45:12Z", + "updated_at": "2022-10-26T12:45:15Z", + "actions_workflow_run_id": 3329095282, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 206444, + "name": "hive", + "full_name": "apache/hive", + "private": false, + "stargazers_count": 4523, + "updated_at": "2022-11-02T10:04:02Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4 + }, + { + "repository": { + "id": 20753500, + "name": "ng-nice", + "full_name": "angular-cn/ng-nice", + "private": false, + "stargazers_count": 192, + "updated_at": "2022-03-17T08:34:30Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 236095576, + "name": "backstage", + "full_name": "backstage/backstage", + "private": false, + "stargazers_count": 19033, + "updated_at": "2022-11-02T10:25:24Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 257485422, + "name": "vite", + "full_name": "vitejs/vite", + "private": false, + "stargazers_count": 49064, + "updated_at": "2022-11-02T11:29:22Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/9-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/9-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..221bc729c56 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-success/9-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 206444 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 206444, + "node_id": "MDEwOlJlcG9zaXRvcnkyMDY0NDQ=", + "name": "hive", + "full_name": "apache/hive", + "private": false, + "owner": { + "login": "apache", + "id": 47359, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5", + "avatar_url": "https://avatars.githubusercontent.com/u/47359?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/apache", + "html_url": "https://github.com/apache", + "followers_url": "https://api.github.com/users/apache/followers", + "following_url": "https://api.github.com/users/apache/following{/other_user}", + "gists_url": "https://api.github.com/users/apache/gists{/gist_id}", + "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/apache/subscriptions", + "organizations_url": "https://api.github.com/users/apache/orgs", + "repos_url": "https://api.github.com/users/apache/repos", + "events_url": "https://api.github.com/users/apache/events{/privacy}", + "received_events_url": "https://api.github.com/users/apache/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/apache/hive", + "description": "Apache Hive", + "fork": false, + "url": "https://api.github.com/repos/apache/hive", + "forks_url": "https://api.github.com/repos/apache/hive/forks", + "keys_url": "https://api.github.com/repos/apache/hive/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/apache/hive/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/apache/hive/teams", + "hooks_url": "https://api.github.com/repos/apache/hive/hooks", + "issue_events_url": "https://api.github.com/repos/apache/hive/issues/events{/number}", + "events_url": "https://api.github.com/repos/apache/hive/events", + "assignees_url": "https://api.github.com/repos/apache/hive/assignees{/user}", + "branches_url": "https://api.github.com/repos/apache/hive/branches{/branch}", + "tags_url": "https://api.github.com/repos/apache/hive/tags", + "blobs_url": "https://api.github.com/repos/apache/hive/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/apache/hive/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/apache/hive/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/apache/hive/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/apache/hive/statuses/{sha}", + "languages_url": "https://api.github.com/repos/apache/hive/languages", + "stargazers_url": "https://api.github.com/repos/apache/hive/stargazers", + "contributors_url": "https://api.github.com/repos/apache/hive/contributors", + "subscribers_url": "https://api.github.com/repos/apache/hive/subscribers", + "subscription_url": "https://api.github.com/repos/apache/hive/subscription", + "commits_url": "https://api.github.com/repos/apache/hive/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/apache/hive/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/apache/hive/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/apache/hive/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/apache/hive/contents/{+path}", + "compare_url": "https://api.github.com/repos/apache/hive/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/apache/hive/merges", + "archive_url": "https://api.github.com/repos/apache/hive/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/apache/hive/downloads", + "issues_url": "https://api.github.com/repos/apache/hive/issues{/number}", + "pulls_url": "https://api.github.com/repos/apache/hive/pulls{/number}", + "milestones_url": "https://api.github.com/repos/apache/hive/milestones{/number}", + "notifications_url": "https://api.github.com/repos/apache/hive/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/apache/hive/labels{/name}", + "releases_url": "https://api.github.com/repos/apache/hive/releases{/id}", + "deployments_url": "https://api.github.com/repos/apache/hive/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 81841, + "result_count": 4, + "database_commit_sha": "6b05d64ce8c7161415d97a7896ea50025322e30a", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/146/206444/c7de30bb-37f9-4d44-b738-c29eb805d2f0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221026%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221026T124648Z&X-Amz-Expires=300&X-Amz-Signature=79338df6b62460d60a85e365eb10a4da2301a0ec2bd3fbeb08546c700c906021&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/0-getRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/0-getRepo.json new file mode 100644 index 00000000000..d340d80e6ec --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/0-getRepo.json @@ -0,0 +1,159 @@ +{ + "request": { + "kind": "getRepo" + }, + "response": { + "status": 200, + "body": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments", + "created_at": "2022-10-26T10:37:59Z", + "updated_at": "2022-10-26T10:37:59Z", + "pushed_at": "2022-10-26T10:38:02Z", + "git_url": "git://github.com/github/mrva-demo-controller-repo.git", + "ssh_url": "git@github.com:github/mrva-demo-controller-repo.git", + "clone_url": "https://github.com/github/mrva-demo-controller-repo.git", + "svn_url": "https://github.com/github/mrva-demo-controller-repo", + "homepage": null, + "size": 0, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": null, + "allow_forking": false, + "is_template": false, + "web_commit_signoff_required": false, + "topics": [], + "visibility": "private", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main", + "permissions": { + "admin": true, + "maintain": true, + "push": true, + "triage": true, + "pull": true + }, + "temp_clone_token": "AACMDDJDUEDYNJMXGTD2FZDDLI32O", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "allow_auto_merge": false, + "delete_branch_on_merge": false, + "allow_update_branch": false, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE", + "organization": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "security_and_analysis": { + "advanced_security": { + "status": "enabled" + }, + "secret_scanning": { + "status": "enabled" + }, + "secret_scanning_push_protection": { + "status": "enabled" + } + }, + "network_count": 0, + "subscribers_count": 0 + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/1-submitVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/1-submitVariantAnalysis.json new file mode 100644 index 00000000000..af14db616fb --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/1-submitVariantAnalysis.json @@ -0,0 +1,104 @@ +{ + "request": { + "kind": "submitVariantAnalysis" + }, + "response": { + "status": 201, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074259Z&X-Amz-Expires=3600&X-Amz-Signature=e4cda8a5cf9fdb154204dea6bc0ddd70ba5fbc3b3102e922368e08391f7c47de&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:42:59Z", + "status": "in_progress", + "skipped_repositories": {} + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/10-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/10-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..eaee1a68910 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/10-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 18782726 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 18782726, + "node_id": "MDEwOlJlcG9zaXRvcnkxODc4MjcyNg==", + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "owner": { + "login": "OwlCarousel2", + "id": 18146764, + "node_id": "MDQ6VXNlcjE4MTQ2NzY0", + "avatar_url": "https://avatars.githubusercontent.com/u/18146764?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/OwlCarousel2", + "html_url": "https://github.com/OwlCarousel2", + "followers_url": "https://api.github.com/users/OwlCarousel2/followers", + "following_url": "https://api.github.com/users/OwlCarousel2/following{/other_user}", + "gists_url": "https://api.github.com/users/OwlCarousel2/gists{/gist_id}", + "starred_url": "https://api.github.com/users/OwlCarousel2/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/OwlCarousel2/subscriptions", + "organizations_url": "https://api.github.com/users/OwlCarousel2/orgs", + "repos_url": "https://api.github.com/users/OwlCarousel2/repos", + "events_url": "https://api.github.com/users/OwlCarousel2/events{/privacy}", + "received_events_url": "https://api.github.com/users/OwlCarousel2/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/OwlCarousel2/OwlCarousel2", + "description": "DEPRECATED jQuery Responsive Carousel.", + "fork": false, + "url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2", + "forks_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/forks", + "keys_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/teams", + "hooks_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/hooks", + "issue_events_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/issues/events{/number}", + "events_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/events", + "assignees_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/assignees{/user}", + "branches_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/branches{/branch}", + "tags_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/tags", + "blobs_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/statuses/{sha}", + "languages_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/languages", + "stargazers_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/stargazers", + "contributors_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/contributors", + "subscribers_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/subscribers", + "subscription_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/subscription", + "commits_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/contents/{+path}", + "compare_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/merges", + "archive_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/downloads", + "issues_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/issues{/number}", + "pulls_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/pulls{/number}", + "milestones_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/milestones{/number}", + "notifications_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/labels{/name}", + "releases_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/releases{/id}", + "deployments_url": "https://api.github.com/repos/OwlCarousel2/OwlCarousel2/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3, + "database_commit_sha": "4eedccac4ea061931162a86e3f268332c16a1ad0", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/151/18782726/a770474d-fd1c-4628-aee7-cfda1cf23c5d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074804Z&X-Amz-Expires=300&X-Amz-Signature=e16cf33b90cb9c1d20ba6bb6e658f01a329ae181372e7180889438370c86360a&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/11-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/11-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..65e7ead1882 Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/11-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/11-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/11-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..6cb1daaa9ad --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/11-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 17335035 + }, + "response": { + "status": 200, + "body": "file:11-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/12-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/12-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..37ac4429f72 Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/12-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/12-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/12-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..813bde55af0 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/12-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 18782726 + }, + "response": { + "status": 200, + "body": "file:12-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/13-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/13-getVariantAnalysis.json new file mode 100644 index 00000000000..c64d6638767 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/13-getVariantAnalysis.json @@ -0,0 +1,2687 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074805Z&X-Amz-Expires=3600&X-Amz-Signature=d098b2adeef025d6679c2725390255d42a942d5377c98a622a488dfcceef52e8&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/14-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/14-getVariantAnalysis.json new file mode 100644 index 00000000000..9946a410dea --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/14-getVariantAnalysis.json @@ -0,0 +1,2687 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074811Z&X-Amz-Expires=3600&X-Amz-Signature=ee05f11d5f473e99c95363025a4b4f9a95bae8b561e49c2579204a7856fac415&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/15-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/15-getVariantAnalysis.json new file mode 100644 index 00000000000..7b7973156b8 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/15-getVariantAnalysis.json @@ -0,0 +1,2687 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074816Z&X-Amz-Expires=3600&X-Amz-Signature=239310ef8081079b70693fc2ce433985d3d3cdc663dc15f612b2f27aad32e238&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/16-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/16-getVariantAnalysis.json new file mode 100644 index 00000000000..82171ca5836 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/16-getVariantAnalysis.json @@ -0,0 +1,2687 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074834Z&X-Amz-Expires=3600&X-Amz-Signature=8a5cb4084248c0565832ca3c1c7419ba6f118c4effbc50f60e4ed861ff18fbe2&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/17-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/17-getVariantAnalysis.json new file mode 100644 index 00000000000..04e284eb1f5 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/17-getVariantAnalysis.json @@ -0,0 +1,2687 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074846Z&X-Amz-Expires=3600&X-Amz-Signature=24b7c2f3e20b2e1a33cbc57ff9edf2d9ca3f5df6a9f71a7577daf9a1339eed9c&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/18-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/18-getVariantAnalysis.json new file mode 100644 index 00000000000..c31c6527f0c --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/18-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075203Z&X-Amz-Expires=3600&X-Amz-Signature=aeaf03286543d9ebfea7b0d26e27b858613c8a99513c2ea27c9ea4ec33ea6e56&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/19-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/19-getVariantAnalysis.json new file mode 100644 index 00000000000..4b265b62775 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/19-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075224Z&X-Amz-Expires=3600&X-Amz-Signature=4ef770354391c807bdba4930e758af996d4ff587f8c2ae5121378c17a48d77a1&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/2-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/2-getVariantAnalysis.json new file mode 100644 index 00000000000..ecce5fa78bd --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/2-getVariantAnalysis.json @@ -0,0 +1,1073 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074305Z&X-Amz-Expires=3600&X-Amz-Signature=6c876b3401d3350a3c68801e25f3cd123a729547402fdafeedb6200f4a23ef77&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/20-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/20-getVariantAnalysis.json new file mode 100644 index 00000000000..ec766b45ff6 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/20-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075236Z&X-Amz-Expires=3600&X-Amz-Signature=faafd42321dc515418e9f7e47ec8729ce1785e3711f3af5a5402e2767b20580c&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/21-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/21-getVariantAnalysis.json new file mode 100644 index 00000000000..5b999f9ff71 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/21-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075250Z&X-Amz-Expires=3600&X-Amz-Signature=4dbffc81b61e6eac1e168a30d7838d29b2b6ed722500759d77ef499faf3b4d98&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/22-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/22-getVariantAnalysis.json new file mode 100644 index 00000000000..d56ab15b206 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/22-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075257Z&X-Amz-Expires=3600&X-Amz-Signature=91439bb34444ca77858a9d0def643fa8570a7c0339d17b9a6efece4c97d9e40e&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/23-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/23-getVariantAnalysis.json new file mode 100644 index 00000000000..2a960855357 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/23-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075304Z&X-Amz-Expires=3600&X-Amz-Signature=8c5065e30fd8b6854357061bc965b9cbcecbbf8f0db2312bd38c20dec578afaf&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/24-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/24-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..750d49dc039 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/24-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 648414 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 648414, + "node_id": "MDEwOlJlcG9zaXRvcnk2NDg0MTQ=", + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "owner": { + "login": "jquery-validation", + "id": 25417692, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjI1NDE3Njky", + "avatar_url": "https://avatars.githubusercontent.com/u/25417692?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jquery-validation", + "html_url": "https://github.com/jquery-validation", + "followers_url": "https://api.github.com/users/jquery-validation/followers", + "following_url": "https://api.github.com/users/jquery-validation/following{/other_user}", + "gists_url": "https://api.github.com/users/jquery-validation/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jquery-validation/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jquery-validation/subscriptions", + "organizations_url": "https://api.github.com/users/jquery-validation/orgs", + "repos_url": "https://api.github.com/users/jquery-validation/repos", + "events_url": "https://api.github.com/users/jquery-validation/events{/privacy}", + "received_events_url": "https://api.github.com/users/jquery-validation/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/jquery-validation/jquery-validation", + "description": "jQuery Validation Plugin library sources", + "fork": false, + "url": "https://api.github.com/repos/jquery-validation/jquery-validation", + "forks_url": "https://api.github.com/repos/jquery-validation/jquery-validation/forks", + "keys_url": "https://api.github.com/repos/jquery-validation/jquery-validation/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/jquery-validation/jquery-validation/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/jquery-validation/jquery-validation/teams", + "hooks_url": "https://api.github.com/repos/jquery-validation/jquery-validation/hooks", + "issue_events_url": "https://api.github.com/repos/jquery-validation/jquery-validation/issues/events{/number}", + "events_url": "https://api.github.com/repos/jquery-validation/jquery-validation/events", + "assignees_url": "https://api.github.com/repos/jquery-validation/jquery-validation/assignees{/user}", + "branches_url": "https://api.github.com/repos/jquery-validation/jquery-validation/branches{/branch}", + "tags_url": "https://api.github.com/repos/jquery-validation/jquery-validation/tags", + "blobs_url": "https://api.github.com/repos/jquery-validation/jquery-validation/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/jquery-validation/jquery-validation/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/jquery-validation/jquery-validation/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/jquery-validation/jquery-validation/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/jquery-validation/jquery-validation/statuses/{sha}", + "languages_url": "https://api.github.com/repos/jquery-validation/jquery-validation/languages", + "stargazers_url": "https://api.github.com/repos/jquery-validation/jquery-validation/stargazers", + "contributors_url": "https://api.github.com/repos/jquery-validation/jquery-validation/contributors", + "subscribers_url": "https://api.github.com/repos/jquery-validation/jquery-validation/subscribers", + "subscription_url": "https://api.github.com/repos/jquery-validation/jquery-validation/subscription", + "commits_url": "https://api.github.com/repos/jquery-validation/jquery-validation/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/jquery-validation/jquery-validation/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/jquery-validation/jquery-validation/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/jquery-validation/jquery-validation/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/jquery-validation/jquery-validation/contents/{+path}", + "compare_url": "https://api.github.com/repos/jquery-validation/jquery-validation/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/jquery-validation/jquery-validation/merges", + "archive_url": "https://api.github.com/repos/jquery-validation/jquery-validation/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/jquery-validation/jquery-validation/downloads", + "issues_url": "https://api.github.com/repos/jquery-validation/jquery-validation/issues{/number}", + "pulls_url": "https://api.github.com/repos/jquery-validation/jquery-validation/pulls{/number}", + "milestones_url": "https://api.github.com/repos/jquery-validation/jquery-validation/milestones{/number}", + "notifications_url": "https://api.github.com/repos/jquery-validation/jquery-validation/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/jquery-validation/jquery-validation/labels{/name}", + "releases_url": "https://api.github.com/repos/jquery-validation/jquery-validation/releases{/id}", + "deployments_url": "https://api.github.com/repos/jquery-validation/jquery-validation/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2, + "database_commit_sha": "f1bb23544bb7a796402b763af115662651aa6dbd", + "source_location_prefix": "/home/runner/work/jquery-validation/jquery-validation", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/151/648414/63b1ecf8-76fb-48d3-a937-11aec3d1f665?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075306Z&X-Amz-Expires=300&X-Amz-Signature=50bbc50bffeeb521765cce9ed00d5e4afd2807219fb6de810fa0acac75d94d36&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/25-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/25-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..282addaf149 Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/25-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/25-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/25-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..6e6187c4848 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/25-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 648414 + }, + "response": { + "status": 200, + "body": "file:25-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/26-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/26-getVariantAnalysis.json new file mode 100644 index 00000000000..0cc815976f1 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/26-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075311Z&X-Amz-Expires=3600&X-Amz-Signature=1306741d04c86ac270510fca0cc6fb55e75727ff7279e8292f1befbe8888d738&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/27-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/27-getVariantAnalysis.json new file mode 100644 index 00000000000..81bb43a8f62 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/27-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075323Z&X-Amz-Expires=3600&X-Amz-Signature=f2951e82357bb919dc87513a1dd1d1d50655eb23cbef252ea6de194532d4f86d&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/28-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/28-getVariantAnalysis.json new file mode 100644 index 00000000000..dba69f1fcea --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/28-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075329Z&X-Amz-Expires=3600&X-Amz-Signature=2155e8d08b1044a074fdb467105b8ff10801033ae5bfef574e1b2b6fc236c17b&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/29-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/29-getVariantAnalysis.json new file mode 100644 index 00000000000..54774faa04a --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/29-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075439Z&X-Amz-Expires=3600&X-Amz-Signature=e8e9cd24be5a517cb4d8e79d2db886709dccd0d400089761078dec3ef0816146&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/3-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/3-getVariantAnalysis.json new file mode 100644 index 00000000000..d4585d29d32 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/3-getVariantAnalysis.json @@ -0,0 +1,1073 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074311Z&X-Amz-Expires=3600&X-Amz-Signature=f64eab84c8e1fd07362dbcfd5fa0447bf22a7d565c88d862aed667fa6b37234e&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/30-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/30-getVariantAnalysis.json new file mode 100644 index 00000000000..d68b97ff029 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/30-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075453Z&X-Amz-Expires=3600&X-Amz-Signature=20cc5129af6d02f6d1b0bac3bbb84c2ba75d26387e1aab09be57437bcde1a893&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/31-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/31-getVariantAnalysis.json new file mode 100644 index 00000000000..ef9d5bea29c --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/31-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075459Z&X-Amz-Expires=3600&X-Amz-Signature=e1d710a6028659b682ea4913f2840d76cc645d5d1042be57c430c9fd6975736f&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/32-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/32-getVariantAnalysis.json new file mode 100644 index 00000000000..db4e6a3e62f --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/32-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075514Z&X-Amz-Expires=3600&X-Amz-Signature=38622d5ec4066c4d7397a3cd7c276c9ea19183fdc875ccf22e96b623fbcb8622&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/33-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/33-getVariantAnalysis.json new file mode 100644 index 00000000000..bd6a908c804 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/33-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075522Z&X-Amz-Expires=3600&X-Amz-Signature=a137f6c5a03cb0185904411b42398f7d6583371106738bb968800d88c47ef1b9&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/34-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/34-getVariantAnalysis.json new file mode 100644 index 00000000000..1a5d6657e75 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/34-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075529Z&X-Amz-Expires=3600&X-Amz-Signature=e4dc9526e97dee94eb871178d66deaabbbac979c1375bb8c43cf5b922c93bda6&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/35-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/35-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..25c424a287c --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/35-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 478996 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 478996, + "node_id": "MDEwOlJlcG9zaXRvcnk0Nzg5OTY=", + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "owner": { + "login": "jquery", + "id": 70142, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjcwMTQy", + "avatar_url": "https://avatars.githubusercontent.com/u/70142?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jquery", + "html_url": "https://github.com/jquery", + "followers_url": "https://api.github.com/users/jquery/followers", + "following_url": "https://api.github.com/users/jquery/following{/other_user}", + "gists_url": "https://api.github.com/users/jquery/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jquery/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jquery/subscriptions", + "organizations_url": "https://api.github.com/users/jquery/orgs", + "repos_url": "https://api.github.com/users/jquery/repos", + "events_url": "https://api.github.com/users/jquery/events{/privacy}", + "received_events_url": "https://api.github.com/users/jquery/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/jquery/jquery-ui", + "description": "The official jQuery user interface library.", + "fork": false, + "url": "https://api.github.com/repos/jquery/jquery-ui", + "forks_url": "https://api.github.com/repos/jquery/jquery-ui/forks", + "keys_url": "https://api.github.com/repos/jquery/jquery-ui/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/jquery/jquery-ui/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/jquery/jquery-ui/teams", + "hooks_url": "https://api.github.com/repos/jquery/jquery-ui/hooks", + "issue_events_url": "https://api.github.com/repos/jquery/jquery-ui/issues/events{/number}", + "events_url": "https://api.github.com/repos/jquery/jquery-ui/events", + "assignees_url": "https://api.github.com/repos/jquery/jquery-ui/assignees{/user}", + "branches_url": "https://api.github.com/repos/jquery/jquery-ui/branches{/branch}", + "tags_url": "https://api.github.com/repos/jquery/jquery-ui/tags", + "blobs_url": "https://api.github.com/repos/jquery/jquery-ui/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/jquery/jquery-ui/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/jquery/jquery-ui/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/jquery/jquery-ui/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/jquery/jquery-ui/statuses/{sha}", + "languages_url": "https://api.github.com/repos/jquery/jquery-ui/languages", + "stargazers_url": "https://api.github.com/repos/jquery/jquery-ui/stargazers", + "contributors_url": "https://api.github.com/repos/jquery/jquery-ui/contributors", + "subscribers_url": "https://api.github.com/repos/jquery/jquery-ui/subscribers", + "subscription_url": "https://api.github.com/repos/jquery/jquery-ui/subscription", + "commits_url": "https://api.github.com/repos/jquery/jquery-ui/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/jquery/jquery-ui/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/jquery/jquery-ui/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/jquery/jquery-ui/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/jquery/jquery-ui/contents/{+path}", + "compare_url": "https://api.github.com/repos/jquery/jquery-ui/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/jquery/jquery-ui/merges", + "archive_url": "https://api.github.com/repos/jquery/jquery-ui/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/jquery/jquery-ui/downloads", + "issues_url": "https://api.github.com/repos/jquery/jquery-ui/issues{/number}", + "pulls_url": "https://api.github.com/repos/jquery/jquery-ui/pulls{/number}", + "milestones_url": "https://api.github.com/repos/jquery/jquery-ui/milestones{/number}", + "notifications_url": "https://api.github.com/repos/jquery/jquery-ui/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/jquery/jquery-ui/labels{/name}", + "releases_url": "https://api.github.com/repos/jquery/jquery-ui/releases{/id}", + "deployments_url": "https://api.github.com/repos/jquery/jquery-ui/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1, + "database_commit_sha": "62f2ccc5678a8b09df85afd006eb623ac38af189", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/151/478996/5a59f15d-2d55-47d5-b0ba-10e82cb2b37a?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075535Z&X-Amz-Expires=300&X-Amz-Signature=804571915e8ead1ad35315af86964cfdcc2bdee00ef0284094620605af537019&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/36-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/36-getVariantAnalysis.json new file mode 100644 index 00000000000..05cec592370 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/36-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075536Z&X-Amz-Expires=3600&X-Amz-Signature=babfdec4f235ebf90c1c23cbdc9126871016ea446e4b23247957bfbd0df55952&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/37-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/37-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..818b1d1ed8d Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/37-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/37-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/37-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..8fc0aef61f1 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/37-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 478996 + }, + "response": { + "status": 200, + "body": "file:37-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/38-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/38-getVariantAnalysis.json new file mode 100644 index 00000000000..1086bd14ff2 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/38-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075544Z&X-Amz-Expires=3600&X-Amz-Signature=558bac2cf230dff64f0670e87d2cd4bfc848c16bf40fdd84985e8c00d3e9f040&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/39-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/39-getVariantAnalysis.json new file mode 100644 index 00000000000..9e858ba0db5 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/39-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075551Z&X-Amz-Expires=3600&X-Amz-Signature=d9b11819216027a2b641e16d8792be764ef4c9e810c74b995e441070abec9d20&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/4-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/4-getVariantAnalysis.json new file mode 100644 index 00000000000..54ac5851467 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/4-getVariantAnalysis.json @@ -0,0 +1,2683 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074407Z&X-Amz-Expires=3600&X-Amz-Signature=01654535fc253584127a77a4dc3f48b00a4a2854f483be99b3544915479921b1&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/40-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/40-getVariantAnalysis.json new file mode 100644 index 00000000000..d9ff5d753f9 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/40-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075600Z&X-Amz-Expires=3600&X-Amz-Signature=2196adc9ab3521591ba03d5994d0fad10a693403bb57923421f862fce6628580&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/41-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/41-getVariantAnalysis.json new file mode 100644 index 00000000000..ba00c1c20d2 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/41-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T075641Z&X-Amz-Expires=3600&X-Amz-Signature=abdad88cb772c770efbbb7e4ffcbdfefec9912e9d444e53e420b70f5e79a6775&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/42-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/42-getVariantAnalysis.json new file mode 100644 index 00000000000..eee30714856 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/42-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T080423Z&X-Amz-Expires=3600&X-Amz-Signature=9a74824ad21553171bb2d1cf03fbdc08ef37a40481fdcc40e30978880c81aae5&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/43-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/43-getVariantAnalysis.json new file mode 100644 index 00000000000..d1019ecc5fe --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/43-getVariantAnalysis.json @@ -0,0 +1,2691 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T080522Z&X-Amz-Expires=3600&X-Amz-Signature=55db4ef161912946d84c302b5e6b07ece69216fb05981035bd3c9b1ae04f6ba2&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/44-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/44-getVariantAnalysis.json new file mode 100644 index 00000000000..4608d250699 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/44-getVariantAnalysis.json @@ -0,0 +1,2693 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T080528Z&X-Amz-Expires=3600&X-Amz-Signature=6d2b614524563372222d8fe2997ee9fe5f8fd00666970627364c868cdef41004&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 13977, + "result_count": 1 + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/45-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/45-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..4d081de7e66 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/45-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 2950981 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 2950981, + "node_id": "MDEwOlJlcG9zaXRvcnkyOTUwOTgx", + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "owner": { + "login": "Azure", + "id": 6844498, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjY4NDQ0OTg=", + "avatar_url": "https://avatars.githubusercontent.com/u/6844498?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Azure", + "html_url": "https://github.com/Azure", + "followers_url": "https://api.github.com/users/Azure/followers", + "following_url": "https://api.github.com/users/Azure/following{/other_user}", + "gists_url": "https://api.github.com/users/Azure/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Azure/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Azure/subscriptions", + "organizations_url": "https://api.github.com/users/Azure/orgs", + "repos_url": "https://api.github.com/users/Azure/repos", + "events_url": "https://api.github.com/users/Azure/events{/privacy}", + "received_events_url": "https://api.github.com/users/Azure/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/Azure/azure-sdk-for-node", + "description": "Azure SDK for Node.js - Documentation", + "fork": false, + "url": "https://api.github.com/repos/Azure/azure-sdk-for-node", + "forks_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/forks", + "keys_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/teams", + "hooks_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/hooks", + "issue_events_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/issues/events{/number}", + "events_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/events", + "assignees_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/assignees{/user}", + "branches_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/branches{/branch}", + "tags_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/tags", + "blobs_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/statuses/{sha}", + "languages_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/languages", + "stargazers_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/stargazers", + "contributors_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/contributors", + "subscribers_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/subscribers", + "subscription_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/subscription", + "commits_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/contents/{+path}", + "compare_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/merges", + "archive_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/downloads", + "issues_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/issues{/number}", + "pulls_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/pulls{/number}", + "milestones_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/milestones{/number}", + "notifications_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/labels{/name}", + "releases_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/releases{/id}", + "deployments_url": "https://api.github.com/repos/Azure/azure-sdk-for-node/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 13977, + "result_count": 1, + "database_commit_sha": "f20f4a702e111a2798d48561ade45c39fdf31225", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/151/2950981/08e27209-4004-48de-8d59-a35c8142f0f9?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T080529Z&X-Amz-Expires=300&X-Amz-Signature=b792d8481436aa5194a6556408311781e3fa8171ff0f903ccbdc865332d333e8&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/46-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/46-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..59f5b9e6ea3 Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/46-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/46-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/46-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..3f5dd57d855 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/46-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 2950981 + }, + "response": { + "status": 200, + "body": "file:46-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/47-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/47-getVariantAnalysis.json new file mode 100644 index 00000000000..e28f2a8dd8a --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/47-getVariantAnalysis.json @@ -0,0 +1,2693 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T080534Z&X-Amz-Expires=3600&X-Amz-Signature=174122e153f9f175269ec45cd7ed78422c5d5dcc1f2c34ea70e665a9db8c1546&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 13977, + "result_count": 1 + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/48-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/48-getVariantAnalysis.json new file mode 100644 index 00000000000..d8b936628e1 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/48-getVariantAnalysis.json @@ -0,0 +1,2693 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T080546Z&X-Amz-Expires=3600&X-Amz-Signature=1fc806c60528fc2b6fada68a41ed577ee8e65165e135df6f67b41d5a7084604d&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 13977, + "result_count": 1 + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/49-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/49-getVariantAnalysis.json new file mode 100644 index 00000000000..59f655c9384 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/49-getVariantAnalysis.json @@ -0,0 +1,2693 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T081835Z&X-Amz-Expires=3600&X-Amz-Signature=c9005acaecd4c3c409bae8f06401d02d99933c5a3102de6c8620cfa29abafb43&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 13977, + "result_count": 1 + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/5-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/5-getVariantAnalysis.json new file mode 100644 index 00000000000..5c993ed05de --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/5-getVariantAnalysis.json @@ -0,0 +1,2683 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074441Z&X-Amz-Expires=3600&X-Amz-Signature=c1149c2ef74dbc87937327c544eb395249fee0b74edc0fcc4f0691ea477e36cd&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/50-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/50-getVariantAnalysis.json new file mode 100644 index 00000000000..d4c8d16c239 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/50-getVariantAnalysis.json @@ -0,0 +1,2693 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T081841Z&X-Amz-Expires=3600&X-Amz-Signature=456e8996fd725574f15bf990ae20cbdb242e6b088e7d868ef98eed83ed6001da&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 13977, + "result_count": 1 + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/51-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/51-getVariantAnalysis.json new file mode 100644 index 00000000000..93b8ea8aa5a --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/51-getVariantAnalysis.json @@ -0,0 +1,2694 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T081852Z&X-Amz-Expires=3600&X-Amz-Signature=2f71b2c695c2318b1acd73b03e4d0e0537314716a128b1fe27405beed01a0ea0&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "succeeded", + "completed_at": "2022-10-27T08:18:47Z", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 11914, + "result_count": 1 + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 64526, + "result_count": 2 + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 13977, + "result_count": 1 + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/6-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/6-getVariantAnalysis.json new file mode 100644 index 00000000000..7d423ad5b77 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/6-getVariantAnalysis.json @@ -0,0 +1,2683 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074737Z&X-Amz-Expires=3600&X-Amz-Signature=b3e5a56ea05c9631ec0e7c1ed9ee3e62423cbb0822f7d87be88f0ff5678e01c1&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/7-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/7-getVariantAnalysis.json new file mode 100644 index 00000000000..c02a35920f4 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/7-getVariantAnalysis.json @@ -0,0 +1,2683 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074754Z&X-Amz-Expires=3600&X-Amz-Signature=4ea812d8986fd3f8e73a4b7f85d2c70ad4ea2b6bfab4a51e36bc467069be8149&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/8-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/8-getVariantAnalysis.json new file mode 100644 index 00000000000..c75f095c570 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/8-getVariantAnalysis.json @@ -0,0 +1,2687 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 151, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/151/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074759Z&X-Amz-Expires=3600&X-Amz-Signature=4649392cb732d3690d355be3907d8a5b39bdd26494512c8125be63e34c687780&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T07:42:59Z", + "updated_at": "2022-10-27T07:43:02Z", + "actions_workflow_run_id": 3335462873, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 478996, + "name": "jquery-ui", + "full_name": "jquery/jquery-ui", + "private": false, + "stargazers_count": 11085, + "updated_at": "2022-11-01T11:06:31Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 648414, + "name": "jquery-validation", + "full_name": "jquery-validation/jquery-validation", + "private": false, + "stargazers_count": 10250, + "updated_at": "2022-11-01T17:52:18Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 2950981, + "name": "azure-sdk-for-node", + "full_name": "Azure/azure-sdk-for-node", + "private": false, + "stargazers_count": 1183, + "updated_at": "2022-11-02T06:42:39Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 17335035, + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "stargazers_count": 5238, + "updated_at": "2022-11-02T11:01:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1 + }, + { + "repository": { + "id": 18782726, + "name": "OwlCarousel2", + "full_name": "OwlCarousel2/OwlCarousel2", + "private": false, + "stargazers_count": 7732, + "updated_at": "2022-11-02T02:26:29Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 30819, + "result_count": 3 + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 100, + "repositories": [ + { + "id": 48296, + "name": "raphael", + "full_name": "DmitryBaranovskiy/raphael", + "private": false, + "stargazers_count": 11134, + "updated_at": "2022-11-02T09:44:58Z" + }, + { + "id": 63557, + "name": "jquery-mousewheel", + "full_name": "jquery/jquery-mousewheel", + "private": false, + "stargazers_count": 3903, + "updated_at": "2022-11-01T03:59:45Z" + }, + { + "id": 75547, + "name": "showdown", + "full_name": "showdownjs/showdown", + "private": false, + "stargazers_count": 12875, + "updated_at": "2022-11-02T03:36:15Z" + }, + { + "id": 84009, + "name": "jasmine", + "full_name": "jasmine/jasmine", + "private": false, + "stargazers_count": 15459, + "updated_at": "2022-10-31T07:47:15Z" + }, + { + "id": 84822, + "name": "js-beautify", + "full_name": "beautify-web/js-beautify", + "private": false, + "stargazers_count": 7902, + "updated_at": "2022-11-02T07:40:06Z" + }, + { + "id": 165557, + "name": "js-base64", + "full_name": "dankogai/js-base64", + "private": false, + "stargazers_count": 3831, + "updated_at": "2022-11-02T03:17:43Z" + }, + { + "id": 167174, + "name": "jquery", + "full_name": "jquery/jquery", + "private": false, + "stargazers_count": 56910, + "updated_at": "2022-11-02T00:55:34Z" + }, + { + "id": 237159, + "name": "express", + "full_name": "expressjs/express", + "private": false, + "stargazers_count": 58776, + "updated_at": "2022-11-02T10:33:45Z" + }, + { + "id": 292525, + "name": "jszip", + "full_name": "Stuk/jszip", + "private": false, + "stargazers_count": 8412, + "updated_at": "2022-11-02T10:46:56Z" + }, + { + "id": 317757, + "name": "Modernizr", + "full_name": "Modernizr/Modernizr", + "private": false, + "stargazers_count": 25349, + "updated_at": "2022-11-02T10:11:31Z" + }, + { + "id": 326688, + "name": "mustache.js", + "full_name": "janl/mustache.js", + "private": false, + "stargazers_count": 15595, + "updated_at": "2022-11-02T04:12:53Z" + }, + { + "id": 349241, + "name": "underscore", + "full_name": "jashkenas/underscore", + "private": false, + "stargazers_count": 26655, + "updated_at": "2022-11-01T23:21:28Z" + }, + { + "id": 357681, + "name": "node-glob", + "full_name": "isaacs/node-glob", + "private": false, + "stargazers_count": 7739, + "updated_at": "2022-11-02T08:23:54Z" + }, + { + "id": 381979, + "name": "fullcalendar", + "full_name": "fullcalendar/fullcalendar", + "private": false, + "stargazers_count": 15569, + "updated_at": "2022-11-02T09:19:14Z" + }, + { + "id": 402046, + "name": "jsPDF", + "full_name": "parallax/jsPDF", + "private": false, + "stargazers_count": 25408, + "updated_at": "2022-11-02T10:39:20Z" + }, + { + "id": 441854, + "name": "markdown-js", + "full_name": "evilstreak/markdown-js", + "private": false, + "stargazers_count": 7643, + "updated_at": "2022-10-28T05:15:05Z" + }, + { + "id": 462292, + "name": "node-mongodb-native", + "full_name": "mongodb/node-mongodb-native", + "private": false, + "stargazers_count": 9574, + "updated_at": "2022-11-02T10:57:50Z" + }, + { + "id": 467471, + "name": "tinymce", + "full_name": "tinymce/tinymce", + "private": false, + "stargazers_count": 12103, + "updated_at": "2022-11-02T09:49:59Z" + }, + { + "id": 475599, + "name": "log4js-node", + "full_name": "log4js-node/log4js-node", + "private": false, + "stargazers_count": 5500, + "updated_at": "2022-11-02T07:01:50Z" + }, + { + "id": 478584, + "name": "jsdom", + "full_name": "jsdom/jsdom", + "private": false, + "stargazers_count": 18052, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 486550, + "name": "html5-boilerplate", + "full_name": "h5bp/html5-boilerplate", + "private": false, + "stargazers_count": 53520, + "updated_at": "2022-11-02T07:30:25Z" + }, + { + "id": 501326, + "name": "requirejs", + "full_name": "requirejs/requirejs", + "private": false, + "stargazers_count": 12842, + "updated_at": "2022-11-02T11:02:32Z" + }, + { + "id": 504220, + "name": "html-minifier", + "full_name": "kangax/html-minifier", + "private": false, + "stargazers_count": 4700, + "updated_at": "2022-10-29T16:27:36Z" + }, + { + "id": 508894, + "name": "sax-js", + "full_name": "isaacs/sax-js", + "private": false, + "stargazers_count": 1015, + "updated_at": "2022-10-27T12:56:55Z" + }, + { + "id": 519390, + "name": "emmet", + "full_name": "emmetio/emmet", + "private": false, + "stargazers_count": 4235, + "updated_at": "2022-10-29T09:24:35Z" + }, + { + "id": 527644, + "name": "less.js", + "full_name": "less/less.js", + "private": false, + "stargazers_count": 16866, + "updated_at": "2022-11-02T10:47:45Z" + }, + { + "id": 534940, + "name": "mime", + "full_name": "broofa/mime", + "private": false, + "stargazers_count": 1876, + "updated_at": "2022-10-28T01:31:34Z" + }, + { + "id": 557977, + "name": "socket.io-client", + "full_name": "socketio/socket.io-client", + "private": false, + "stargazers_count": 9988, + "updated_at": "2022-11-02T07:19:51Z" + }, + { + "id": 557980, + "name": "socket.io", + "full_name": "socketio/socket.io", + "private": false, + "stargazers_count": 56972, + "updated_at": "2022-11-02T06:15:27Z" + }, + { + "id": 560495, + "name": "jsdoc", + "full_name": "jsdoc/jsdoc", + "private": false, + "stargazers_count": 13246, + "updated_at": "2022-11-01T20:51:26Z" + }, + { + "id": 573569, + "name": "jake", + "full_name": "jakejs/jake", + "private": false, + "stargazers_count": 1923, + "updated_at": "2022-10-25T19:36:45Z" + }, + { + "id": 576201, + "name": "three.js", + "full_name": "mrdoob/three.js", + "private": false, + "stargazers_count": 86505, + "updated_at": "2022-11-02T10:46:23Z" + }, + { + "id": 597879, + "name": "mongoose", + "full_name": "Automattic/mongoose", + "private": false, + "stargazers_count": 24930, + "updated_at": "2022-11-02T09:51:25Z" + }, + { + "id": 600637, + "name": "stats.js", + "full_name": "mrdoob/stats.js", + "private": false, + "stargazers_count": 7932, + "updated_at": "2022-10-31T09:19:23Z" + }, + { + "id": 602604, + "name": "pegjs", + "full_name": "pegjs/pegjs", + "private": false, + "stargazers_count": 4503, + "updated_at": "2022-10-30T05:03:04Z" + }, + { + "id": 620636, + "name": "webfontloader", + "full_name": "typekit/webfontloader", + "private": false, + "stargazers_count": 9013, + "updated_at": "2022-11-02T05:48:14Z" + }, + { + "id": 655209, + "name": "formidable", + "full_name": "node-formidable/formidable", + "private": false, + "stargazers_count": 6404, + "updated_at": "2022-11-02T09:18:22Z" + }, + { + "id": 667006, + "name": "video.js", + "full_name": "videojs/video.js", + "private": false, + "stargazers_count": 34459, + "updated_at": "2022-11-02T08:17:21Z" + }, + { + "id": 679662, + "name": "node-lru-cache", + "full_name": "isaacs/node-lru-cache", + "private": false, + "stargazers_count": 4427, + "updated_at": "2022-11-02T05:50:43Z" + }, + { + "id": 687836, + "name": "connect", + "full_name": "senchalabs/connect", + "private": false, + "stargazers_count": 9559, + "updated_at": "2022-11-01T08:20:04Z" + }, + { + "id": 691146, + "name": "tween.js", + "full_name": "tweenjs/tween.js", + "private": false, + "stargazers_count": 8888, + "updated_at": "2022-11-02T06:57:57Z" + }, + { + "id": 698041, + "name": "async", + "full_name": "caolan/async", + "private": false, + "stargazers_count": 27723, + "updated_at": "2022-11-02T04:50:06Z" + }, + { + "id": 712530, + "name": "fabric.js", + "full_name": "fabricjs/fabric.js", + "private": false, + "stargazers_count": 23149, + "updated_at": "2022-11-02T09:45:43Z" + }, + { + "id": 714074, + "name": "pouchdb", + "full_name": "pouchdb/pouchdb", + "private": false, + "stargazers_count": 15318, + "updated_at": "2022-11-02T10:14:50Z" + }, + { + "id": 715168, + "name": "colors.js", + "full_name": "Marak/colors.js", + "private": false, + "stargazers_count": 5019, + "updated_at": "2022-11-02T05:17:19Z" + }, + { + "id": 734934, + "name": "pug", + "full_name": "pugjs/pug", + "private": false, + "stargazers_count": 20988, + "updated_at": "2022-11-02T06:43:03Z" + }, + { + "id": 734957, + "name": "node-cron", + "full_name": "kelektiv/node-cron", + "private": false, + "stargazers_count": 7598, + "updated_at": "2022-11-01T17:12:28Z" + }, + { + "id": 743723, + "name": "store.js", + "full_name": "marcuswestin/store.js", + "private": false, + "stargazers_count": 13844, + "updated_at": "2022-11-02T03:26:50Z" + }, + { + "id": 747698, + "name": "sinon", + "full_name": "sinonjs/sinon", + "private": false, + "stargazers_count": 9149, + "updated_at": "2022-11-02T09:18:57Z" + }, + { + "id": 757363, + "name": "knockout", + "full_name": "knockout/knockout", + "private": false, + "stargazers_count": 10247, + "updated_at": "2022-10-31T11:09:48Z" + }, + { + "id": 779570, + "name": "forge", + "full_name": "digitalbazaar/forge", + "private": false, + "stargazers_count": 4541, + "updated_at": "2022-11-02T06:45:45Z" + }, + { + "id": 790359, + "name": "sequelize", + "full_name": "sequelize/sequelize", + "private": false, + "stargazers_count": 26977, + "updated_at": "2022-11-02T11:20:07Z" + }, + { + "id": 795421, + "name": "node-http-proxy", + "full_name": "http-party/node-http-proxy", + "private": false, + "stargazers_count": 13042, + "updated_at": "2022-11-01T16:51:43Z" + }, + { + "id": 800115, + "name": "underscore.string", + "full_name": "esamattis/underscore.string", + "private": false, + "stargazers_count": 3374, + "updated_at": "2022-10-29T12:20:47Z" + }, + { + "id": 805461, + "name": "mysql", + "full_name": "mysqljs/mysql", + "private": false, + "stargazers_count": 17500, + "updated_at": "2022-11-02T10:01:41Z" + }, + { + "id": 809601, + "name": "handlebars.js", + "full_name": "handlebars-lang/handlebars.js", + "private": false, + "stargazers_count": 16837, + "updated_at": "2022-11-01T10:57:04Z" + }, + { + "id": 887025, + "name": "q", + "full_name": "kriskowal/q", + "private": false, + "stargazers_count": 14948, + "updated_at": "2022-10-28T07:31:40Z" + }, + { + "id": 893522, + "name": "node-serialport", + "full_name": "serialport/node-serialport", + "private": false, + "stargazers_count": 5320, + "updated_at": "2022-11-01T00:00:33Z" + }, + { + "id": 908893, + "name": "node-redis", + "full_name": "redis/node-redis", + "private": false, + "stargazers_count": 15627, + "updated_at": "2022-11-02T11:20:58Z" + }, + { + "id": 914603, + "name": "es5-shim", + "full_name": "es-shims/es5-shim", + "private": false, + "stargazers_count": 7110, + "updated_at": "2022-10-28T06:39:48Z" + }, + { + "id": 926231, + "name": "Inputmask", + "full_name": "RobinHerbots/Inputmask", + "private": false, + "stargazers_count": 5987, + "updated_at": "2022-11-02T05:50:57Z" + }, + { + "id": 931039, + "name": "browserify", + "full_name": "browserify/browserify", + "private": false, + "stargazers_count": 14254, + "updated_at": "2022-11-01T03:37:09Z" + }, + { + "id": 931135, + "name": "Leaflet", + "full_name": "Leaflet/Leaflet", + "private": false, + "stargazers_count": 36010, + "updated_at": "2022-11-02T10:09:58Z" + }, + { + "id": 942903, + "name": "forever", + "full_name": "foreversd/forever", + "private": false, + "stargazers_count": 13663, + "updated_at": "2022-11-01T05:29:05Z" + }, + { + "id": 943149, + "name": "d3", + "full_name": "d3/d3", + "private": false, + "stargazers_count": 103304, + "updated_at": "2022-11-02T09:49:28Z" + }, + { + "id": 947175, + "name": "json-schema", + "full_name": "kriszyp/json-schema", + "private": false, + "stargazers_count": 499, + "updated_at": "2022-10-19T19:17:53Z" + }, + { + "id": 952189, + "name": "backbone", + "full_name": "jashkenas/backbone", + "private": false, + "stargazers_count": 27936, + "updated_at": "2022-11-02T03:16:33Z" + }, + { + "id": 958314, + "name": "nodemon", + "full_name": "remy/nodemon", + "private": false, + "stargazers_count": 24604, + "updated_at": "2022-11-02T10:11:39Z" + }, + { + "id": 965782, + "name": "validator.js", + "full_name": "validatorjs/validator.js", + "private": false, + "stargazers_count": 20415, + "updated_at": "2022-11-02T10:18:55Z" + }, + { + "id": 991475, + "name": "node-postgres", + "full_name": "brianc/node-postgres", + "private": false, + "stargazers_count": 10751, + "updated_at": "2022-10-31T12:20:17Z" + }, + { + "id": 996158, + "name": "watch", + "full_name": "mikeal/watch", + "private": false, + "stargazers_count": 1250, + "updated_at": "2022-11-01T17:14:59Z" + }, + { + "id": 1025209, + "name": "CSSOM", + "full_name": "NV/CSSOM", + "private": false, + "stargazers_count": 722, + "updated_at": "2022-10-25T13:45:13Z" + }, + { + "id": 1130565, + "name": "node-config", + "full_name": "node-config/node-config", + "private": false, + "stargazers_count": 5797, + "updated_at": "2022-11-02T07:54:31Z" + }, + { + "id": 1186030, + "name": "node-qrcode", + "full_name": "soldair/node-qrcode", + "private": false, + "stargazers_count": 6128, + "updated_at": "2022-11-02T05:16:11Z" + }, + { + "id": 1203139, + "name": "uuid", + "full_name": "uuidjs/uuid", + "private": false, + "stargazers_count": 12769, + "updated_at": "2022-11-02T10:25:19Z" + }, + { + "id": 1204214, + "name": "stylus", + "full_name": "stylus/stylus", + "private": false, + "stargazers_count": 10980, + "updated_at": "2022-11-02T10:57:58Z" + }, + { + "id": 1206546, + "name": "winston", + "full_name": "winstonjs/winston", + "private": false, + "stargazers_count": 19683, + "updated_at": "2022-11-02T09:13:43Z" + }, + { + "id": 1213225, + "name": "highlight.js", + "full_name": "highlightjs/highlight.js", + "private": false, + "stargazers_count": 20619, + "updated_at": "2022-11-02T10:05:24Z" + }, + { + "id": 1218383, + "name": "cli-table", + "full_name": "Automattic/cli-table", + "private": false, + "stargazers_count": 2206, + "updated_at": "2022-10-29T22:05:42Z" + }, + { + "id": 1254497, + "name": "codemirror5", + "full_name": "codemirror/codemirror5", + "private": false, + "stargazers_count": 25436, + "updated_at": "2022-11-02T07:14:55Z" + }, + { + "id": 1272424, + "name": "nodemailer", + "full_name": "nodemailer/nodemailer", + "private": false, + "stargazers_count": 15120, + "updated_at": "2022-11-02T07:16:15Z" + }, + { + "id": 1272666, + "name": "jshint", + "full_name": "jshint/jshint", + "private": false, + "stargazers_count": 8800, + "updated_at": "2022-11-02T02:43:46Z" + }, + { + "id": 1283503, + "name": "request", + "full_name": "request/request", + "private": false, + "stargazers_count": 25558, + "updated_at": "2022-11-02T07:14:37Z" + }, + { + "id": 1295612, + "name": "flot", + "full_name": "flot/flot", + "private": false, + "stargazers_count": 5954, + "updated_at": "2022-11-02T00:09:37Z" + }, + { + "id": 1341324, + "name": "rimraf", + "full_name": "isaacs/rimraf", + "private": false, + "stargazers_count": 4882, + "updated_at": "2022-11-01T02:30:44Z" + }, + { + "id": 1357199, + "name": "node-semver", + "full_name": "npm/node-semver", + "private": false, + "stargazers_count": 4417, + "updated_at": "2022-11-01T14:26:03Z" + }, + { + "id": 1369824, + "name": "csso", + "full_name": "css/csso", + "private": false, + "stargazers_count": 3617, + "updated_at": "2022-11-02T03:29:49Z" + }, + { + "id": 1419138, + "name": "clean-css", + "full_name": "clean-css/clean-css", + "private": false, + "stargazers_count": 3994, + "updated_at": "2022-10-31T19:00:55Z" + }, + { + "id": 1424470, + "name": "moment", + "full_name": "moment/moment", + "private": false, + "stargazers_count": 47014, + "updated_at": "2022-11-02T09:23:25Z" + }, + { + "id": 1451352, + "name": "mocha", + "full_name": "mochajs/mocha", + "private": false, + "stargazers_count": 21735, + "updated_at": "2022-11-02T05:54:18Z" + }, + { + "id": 1474943, + "name": "node-dateformat", + "full_name": "felixge/node-dateformat", + "private": false, + "stargazers_count": 1277, + "updated_at": "2022-10-23T15:41:37Z" + }, + { + "id": 1534331, + "name": "node-tar", + "full_name": "npm/node-tar", + "private": false, + "stargazers_count": 701, + "updated_at": "2022-10-31T18:54:48Z" + }, + { + "id": 1542219, + "name": "jsdiff", + "full_name": "kpdecker/jsdiff", + "private": false, + "stargazers_count": 6655, + "updated_at": "2022-11-02T00:34:01Z" + }, + { + "id": 1544436, + "name": "nopt", + "full_name": "npm/nopt", + "private": false, + "stargazers_count": 513, + "updated_at": "2022-10-30T02:25:47Z" + }, + { + "id": 1545869, + "name": "when", + "full_name": "cujojs/when", + "private": false, + "stargazers_count": 3446, + "updated_at": "2022-11-02T09:39:58Z" + }, + { + "id": 1569980, + "name": "MQTT.js", + "full_name": "mqttjs/MQTT.js", + "private": false, + "stargazers_count": 7315, + "updated_at": "2022-11-01T06:35:21Z" + }, + { + "id": 1580001, + "name": "inherits", + "full_name": "isaacs/inherits", + "private": false, + "stargazers_count": 345, + "updated_at": "2022-10-17T21:30:38Z" + }, + { + "id": 1580851, + "name": "PhotoSwipe", + "full_name": "dimsemenov/PhotoSwipe", + "private": false, + "stargazers_count": 22320, + "updated_at": "2022-11-02T01:49:54Z" + }, + { + "id": 1588997, + "name": "node-spdy", + "full_name": "spdy-http2/node-spdy", + "private": false, + "stargazers_count": 2775, + "updated_at": "2022-11-01T10:32:34Z" + }, + { + "id": 1590986, + "name": "WebSocket-Node", + "full_name": "theturtle32/WebSocket-Node", + "private": false, + "stargazers_count": 3597, + "updated_at": "2022-11-02T02:14:47Z" + } + ] + }, + "not_found_repos": { + "repository_count": 110, + "repository_full_names": [ + "evanw/node-source-map-support", + "angular-ui/ui-router", + "webpack/tapable", + "pixijs/pixijs", + "chjj/blessed", + "goldfire/howler.js", + "expressjs/cors", + "karma-runner/karma-jasmine", + "vega/vega", + "mdevils/html-entities", + "josdejong/mathjs", + "jshttp/methods", + "moll/json-stringify-safe", + "twitter/typeahead.js", + "webpack/node-libs-browser", + "processing/p5.js", + "protobufjs/protobuf.js", + "googleapis/google-api-nodejs-client", + "mapbox/mapbox-gl-js", + "usablica/intro.js", + "jimhigson/oboe.js", + "postcss/autoprefixer", + "chartjs/Chart.js", + "pimterry/loglevel", + "google/traceur-compiler", + "plurals/pluralize", + "alexei/sprintf.js", + "ecomfe/zrender", + "apache/echarts", + "npm/normalize-package-data", + "brix/crypto-js", + "Semantic-Org/Semantic-UI", + "strongloop/loopback", + "photonstorm/phaser", + "blakeembrey/change-case", + "sidorares/node-mysql2", + "hiddentao/fast-levenshtein", + "uncss/uncss", + "pure-css/pure", + "benjamn/ast-types", + "nuysoft/Mock", + "summernote/summernote", + "dcodeIO/bcrypt.js", + "louischatriot/nedb", + "TryGhost/Ghost", + "pieroxy/lz-string", + "systemjs/systemjs", + "SBoudrias/Inquirer.js", + "bripkens/connect-history-api-fallback", + "algolia/algoliasearch-client-javascript", + "mathiasbynens/regenerate", + "Unitech/pm2", + "facebook/react", + "mattboldt/typed.js", + "mscdex/busboy", + "Grsmto/simplebar", + "mathiasbynens/jsesc", + "tj/co", + "chancejs/chancejs", + "ramda/ramda", + "elastic/elasticsearch-js", + "mathiasbynens/he", + "BabylonJS/Babylon.js", + "eslint/eslint", + "auth0/node-jsonwebtoken", + "image-size/image-size", + "gulpjs/gulp", + "KaTeX/KaTeX", + "motdotla/dotenv", + "TooTallNate/node-https-proxy-agent", + "kriskowal/asap", + "estools/esquery", + "micromatch/anymatch", + "zloirock/core-js", + "sindresorhus/slash", + "koajs/koa", + "techfort/LokiJS", + "vuejs/vue", + "chalk/ansi-styles", + "rvagg/through2", + "chalk/supports-color", + "chalk/chalk", + "mafintosh/pump", + "adobe-webplatform/Snap.svg", + "lovell/sharp", + "rstacruz/nprogress", + "ionic-team/ionic-framework", + "dlmanning/gulp-sass", + "node-red/node-red", + "petkaantonov/bluebird", + "stream-utils/raw-body", + "alvarotrigo/fullPage.js", + "janpaepke/ScrollMagic", + "postcss/postcss", + "primus/eventemitter3", + "Turfjs/turf", + "request/request-promise", + "facebook/regenerator", + "mholt/PapaParse", + "ionic-team/ionicons" + ] + }, + "no_codeql_db_repos": { + "repository_count": 250, + "repositories": [ + { + "id": 1607357, + "name": "superagent", + "full_name": "visionmedia/superagent", + "private": false, + "stargazers_count": 16156, + "updated_at": "2022-11-02T08:07:11Z" + }, + { + "id": 1643317, + "name": "node-progress", + "full_name": "visionmedia/node-progress", + "private": false, + "stargazers_count": 2815, + "updated_at": "2022-10-27T12:49:40Z" + }, + { + "id": 1649251, + "name": "events", + "full_name": "browserify/events", + "private": false, + "stargazers_count": 1243, + "updated_at": "2022-10-19T05:10:09Z" + }, + { + "id": 1661758, + "name": "node-restify", + "full_name": "restify/node-restify", + "private": false, + "stargazers_count": 10516, + "updated_at": "2022-11-02T09:56:30Z" + }, + { + "id": 1673025, + "name": "bowser", + "full_name": "lancedikson/bowser", + "private": false, + "stargazers_count": 5183, + "updated_at": "2022-10-28T05:08:21Z" + }, + { + "id": 1714160, + "name": "natural", + "full_name": "NaturalNode/natural", + "private": false, + "stargazers_count": 9927, + "updated_at": "2022-11-02T09:58:18Z" + }, + { + "id": 1735515, + "name": "node-schedule", + "full_name": "node-schedule/node-schedule", + "private": false, + "stargazers_count": 8568, + "updated_at": "2022-11-02T11:10:44Z" + }, + { + "id": 1738798, + "name": "node-retry", + "full_name": "tim-kos/node-retry", + "private": false, + "stargazers_count": 1053, + "updated_at": "2022-10-30T12:32:35Z" + }, + { + "id": 1755793, + "name": "form-data", + "full_name": "form-data/form-data", + "private": false, + "stargazers_count": 2092, + "updated_at": "2022-11-01T12:01:20Z" + }, + { + "id": 1790564, + "name": "handsontable", + "full_name": "handsontable/handsontable", + "private": false, + "stargazers_count": 17214, + "updated_at": "2022-11-02T10:16:55Z" + }, + { + "id": 1800453, + "name": "platform.js", + "full_name": "bestiejs/platform.js", + "private": false, + "stargazers_count": 3062, + "updated_at": "2022-11-02T02:31:21Z" + }, + { + "id": 1801829, + "name": "ember.js", + "full_name": "emberjs/ember.js", + "private": false, + "stargazers_count": 22327, + "updated_at": "2022-11-02T10:12:11Z" + }, + { + "id": 1823764, + "name": "EventEmitter2", + "full_name": "EventEmitter2/EventEmitter2", + "private": false, + "stargazers_count": 2516, + "updated_at": "2022-11-01T06:35:05Z" + }, + { + "id": 1861458, + "name": "reveal.js", + "full_name": "hakimel/reveal.js", + "private": false, + "stargazers_count": 62395, + "updated_at": "2022-11-02T10:33:51Z" + }, + { + "id": 1874305, + "name": "color-convert", + "full_name": "Qix-/color-convert", + "private": false, + "stargazers_count": 643, + "updated_at": "2022-10-18T03:24:09Z" + }, + { + "id": 1908577, + "name": "http-server", + "full_name": "http-party/http-server", + "private": false, + "stargazers_count": 12229, + "updated_at": "2022-11-02T10:17:31Z" + }, + { + "id": 1915099, + "name": "resolve", + "full_name": "browserify/resolve", + "private": false, + "stargazers_count": 705, + "updated_at": "2022-10-02T18:02:04Z" + }, + { + "id": 1939300, + "name": "color", + "full_name": "Qix-/color", + "private": false, + "stargazers_count": 4424, + "updated_at": "2022-10-29T04:25:44Z" + }, + { + "id": 1944156, + "name": "lunr.js", + "full_name": "olivernn/lunr.js", + "private": false, + "stargazers_count": 8245, + "updated_at": "2022-11-01T10:41:39Z" + }, + { + "id": 1973790, + "name": "TinyColor", + "full_name": "bgrins/TinyColor", + "private": false, + "stargazers_count": 4422, + "updated_at": "2022-11-02T00:09:29Z" + }, + { + "id": 1981208, + "name": "setImmediate", + "full_name": "YuzuJS/setImmediate", + "private": false, + "stargazers_count": 1251, + "updated_at": "2022-11-02T02:58:45Z" + }, + { + "id": 2014930, + "name": "source-map", + "full_name": "mozilla/source-map", + "private": false, + "stargazers_count": 3134, + "updated_at": "2022-11-02T09:07:14Z" + }, + { + "id": 2018652, + "name": "node-portfinder", + "full_name": "http-party/node-portfinder", + "private": false, + "stargazers_count": 815, + "updated_at": "2022-10-27T06:26:04Z" + }, + { + "id": 2030956, + "name": "pdfkit", + "full_name": "foliojs/pdfkit", + "private": false, + "stargazers_count": 8394, + "updated_at": "2022-11-02T02:27:41Z" + }, + { + "id": 2048781, + "name": "node-http-signature", + "full_name": "TritonDataCenter/node-http-signature", + "private": false, + "stargazers_count": 394, + "updated_at": "2022-09-19T11:31:10Z" + }, + { + "id": 2051226, + "name": "FileSaver.js", + "full_name": "eligrey/FileSaver.js", + "private": false, + "stargazers_count": 19627, + "updated_at": "2022-11-02T10:35:08Z" + }, + { + "id": 2055965, + "name": "swagger-ui", + "full_name": "swagger-api/swagger-ui", + "private": false, + "stargazers_count": 22938, + "updated_at": "2022-11-02T09:56:19Z" + }, + { + "id": 2056312, + "name": "html2canvas", + "full_name": "niklasvh/html2canvas", + "private": false, + "stargazers_count": 26994, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 2056549, + "name": "minimatch", + "full_name": "isaacs/minimatch", + "private": false, + "stargazers_count": 2809, + "updated_at": "2022-10-31T08:32:38Z" + }, + { + "id": 2077020, + "name": "node-graceful-fs", + "full_name": "isaacs/node-graceful-fs", + "private": false, + "stargazers_count": 1194, + "updated_at": "2022-10-28T14:42:39Z" + }, + { + "id": 2088939, + "name": "sockjs-client", + "full_name": "sockjs/sockjs-client", + "private": false, + "stargazers_count": 8065, + "updated_at": "2022-11-01T11:07:48Z" + }, + { + "id": 2088982, + "name": "sockjs-node", + "full_name": "sockjs/sockjs-node", + "private": false, + "stargazers_count": 2039, + "updated_at": "2022-10-28T20:50:42Z" + }, + { + "id": 2096579, + "name": "marked", + "full_name": "markedjs/marked", + "private": false, + "stargazers_count": 28552, + "updated_at": "2022-11-02T10:10:53Z" + }, + { + "id": 2110585, + "name": "ipaddr.js", + "full_name": "whitequark/ipaddr.js", + "private": false, + "stargazers_count": 482, + "updated_at": "2022-10-31T01:26:17Z" + }, + { + "id": 2126244, + "name": "bootstrap", + "full_name": "twbs/bootstrap", + "private": false, + "stargazers_count": 160202, + "updated_at": "2022-11-02T11:35:23Z" + }, + { + "id": 2163263, + "name": "hapi", + "full_name": "hapijs/hapi", + "private": false, + "stargazers_count": 14033, + "updated_at": "2022-11-02T10:37:01Z" + }, + { + "id": 2167680, + "name": "ini", + "full_name": "npm/ini", + "private": false, + "stargazers_count": 675, + "updated_at": "2022-11-01T15:53:24Z" + }, + { + "id": 2169708, + "name": "node-which", + "full_name": "npm/node-which", + "private": false, + "stargazers_count": 279, + "updated_at": "2022-10-28T19:48:49Z" + }, + { + "id": 2206953, + "name": "commander.js", + "full_name": "tj/commander.js", + "private": false, + "stargazers_count": 23663, + "updated_at": "2022-11-02T11:10:19Z" + }, + { + "id": 2269353, + "name": "imagesloaded", + "full_name": "desandro/imagesloaded", + "private": false, + "stargazers_count": 8762, + "updated_at": "2022-10-31T09:27:07Z" + }, + { + "id": 2278524, + "name": "hubot", + "full_name": "hubotio/hubot", + "private": false, + "stargazers_count": 16287, + "updated_at": "2022-11-01T20:19:56Z" + }, + { + "id": 2279062, + "name": "htmlparser2", + "full_name": "fb55/htmlparser2", + "private": false, + "stargazers_count": 3669, + "updated_at": "2022-11-01T09:10:05Z" + }, + { + "id": 2296970, + "name": "webdriverio", + "full_name": "webdriverio/webdriverio", + "private": false, + "stargazers_count": 7774, + "updated_at": "2022-11-02T08:36:09Z" + }, + { + "id": 2313213, + "name": "node-tmp", + "full_name": "raszi/node-tmp", + "private": false, + "stargazers_count": 690, + "updated_at": "2022-10-31T02:40:26Z" + }, + { + "id": 2317381, + "name": "clone", + "full_name": "pvorb/clone", + "private": false, + "stargazers_count": 728, + "updated_at": "2022-10-25T14:47:26Z" + }, + { + "id": 2430537, + "name": "grunt", + "full_name": "gruntjs/grunt", + "private": false, + "stargazers_count": 12175, + "updated_at": "2022-11-02T10:17:34Z" + }, + { + "id": 2436267, + "name": "nock", + "full_name": "nock/nock", + "private": false, + "stargazers_count": 11787, + "updated_at": "2022-11-01T22:10:47Z" + }, + { + "id": 2471804, + "name": "stripe-node", + "full_name": "stripe/stripe-node", + "private": false, + "stargazers_count": 3138, + "updated_at": "2022-11-02T07:14:15Z" + }, + { + "id": 2504175, + "name": "js-yaml", + "full_name": "nodeca/js-yaml", + "private": false, + "stargazers_count": 5710, + "updated_at": "2022-10-31T13:43:34Z" + }, + { + "id": 2518028, + "name": "express-validator", + "full_name": "express-validator/express-validator", + "private": false, + "stargazers_count": 5621, + "updated_at": "2022-11-01T22:28:45Z" + }, + { + "id": 2520429, + "name": "gl-matrix", + "full_name": "toji/gl-matrix", + "private": false, + "stargazers_count": 4726, + "updated_at": "2022-10-30T15:13:29Z" + }, + { + "id": 2540368, + "name": "passport", + "full_name": "jaredhanson/passport", + "private": false, + "stargazers_count": 20790, + "updated_at": "2022-11-01T18:36:40Z" + }, + { + "id": 2541284, + "name": "cheerio", + "full_name": "cheeriojs/cheerio", + "private": false, + "stargazers_count": 25616, + "updated_at": "2022-11-02T10:11:26Z" + }, + { + "id": 2560988, + "name": "karma", + "full_name": "karma-runner/karma", + "private": false, + "stargazers_count": 11774, + "updated_at": "2022-10-28T04:25:54Z" + }, + { + "id": 2587163, + "name": "passport-local", + "full_name": "jaredhanson/passport-local", + "private": false, + "stargazers_count": 2629, + "updated_at": "2022-11-01T01:07:31Z" + }, + { + "id": 2606873, + "name": "tough-cookie", + "full_name": "salesforce/tough-cookie", + "private": false, + "stargazers_count": 783, + "updated_at": "2022-10-27T07:39:06Z" + }, + { + "id": 2609642, + "name": "feathers", + "full_name": "feathersjs/feathers", + "private": false, + "stargazers_count": 14170, + "updated_at": "2022-11-01T22:26:38Z" + }, + { + "id": 2743221, + "name": "iconv-lite", + "full_name": "ashtuchkin/iconv-lite", + "private": false, + "stargazers_count": 2828, + "updated_at": "2022-10-31T08:30:57Z" + }, + { + "id": 2744972, + "name": "ws", + "full_name": "websockets/ws", + "private": false, + "stargazers_count": 18978, + "updated_at": "2022-11-02T11:20:59Z" + }, + { + "id": 2791348, + "name": "node-fs-extra", + "full_name": "jprichardson/node-fs-extra", + "private": false, + "stargazers_count": 8768, + "updated_at": "2022-11-02T03:32:03Z" + }, + { + "id": 2804438, + "name": "engine.io", + "full_name": "socketio/engine.io", + "private": false, + "stargazers_count": 4433, + "updated_at": "2022-10-26T14:04:52Z" + }, + { + "id": 2804440, + "name": "engine.io-client", + "full_name": "socketio/engine.io-client", + "private": false, + "stargazers_count": 702, + "updated_at": "2022-10-06T19:46:40Z" + }, + { + "id": 2808651, + "name": "noUiSlider", + "full_name": "leongersen/noUiSlider", + "private": false, + "stargazers_count": 5346, + "updated_at": "2022-11-01T12:25:18Z" + }, + { + "id": 2830198, + "name": "jQuery-Knob", + "full_name": "aterrien/jQuery-Knob", + "private": false, + "stargazers_count": 5075, + "updated_at": "2022-10-04T11:59:45Z" + }, + { + "id": 2833537, + "name": "esprima", + "full_name": "jquery/esprima", + "private": false, + "stargazers_count": 6632, + "updated_at": "2022-11-01T04:06:43Z" + }, + { + "id": 2840511, + "name": "faye-websocket-node", + "full_name": "faye/faye-websocket-node", + "private": false, + "stargazers_count": 577, + "updated_at": "2022-10-27T19:30:12Z" + }, + { + "id": 2853282, + "name": "base64-js", + "full_name": "beatgammit/base64-js", + "private": false, + "stargazers_count": 775, + "updated_at": "2022-10-26T17:33:40Z" + }, + { + "id": 2871998, + "name": "debug", + "full_name": "debug-js/debug", + "private": false, + "stargazers_count": 10433, + "updated_at": "2022-11-02T05:37:20Z" + }, + { + "id": 2906168, + "name": "consolidate.js", + "full_name": "tj/consolidate.js", + "private": false, + "stargazers_count": 3452, + "updated_at": "2022-10-30T01:10:36Z" + }, + { + "id": 2931111, + "name": "chai", + "full_name": "chaijs/chai", + "private": false, + "stargazers_count": 7740, + "updated_at": "2022-10-31T19:10:21Z" + }, + { + "id": 2956541, + "name": "needle", + "full_name": "tomas/needle", + "private": false, + "stargazers_count": 1525, + "updated_at": "2022-10-31T09:02:07Z" + }, + { + "id": 2960985, + "name": "chroma.js", + "full_name": "gka/chroma.js", + "private": false, + "stargazers_count": 9120, + "updated_at": "2022-11-02T06:46:26Z" + }, + { + "id": 2994517, + "name": "i18next", + "full_name": "i18next/i18next", + "private": false, + "stargazers_count": 6463, + "updated_at": "2022-11-02T10:28:28Z" + }, + { + "id": 3009729, + "name": "shortid", + "full_name": "dylang/shortid", + "private": false, + "stargazers_count": 5720, + "updated_at": "2022-11-01T22:28:13Z" + }, + { + "id": 3016562, + "name": "data", + "full_name": "emberjs/data", + "private": false, + "stargazers_count": 3010, + "updated_at": "2022-10-28T23:31:33Z" + }, + { + "id": 3029324, + "name": "hogan.js", + "full_name": "twitter/hogan.js", + "private": false, + "stargazers_count": 5118, + "updated_at": "2022-10-28T21:33:16Z" + }, + { + "id": 3046507, + "name": "es6-shim", + "full_name": "paulmillr/es6-shim", + "private": false, + "stargazers_count": 3109, + "updated_at": "2022-10-26T10:49:06Z" + }, + { + "id": 3053807, + "name": "node-require-directory", + "full_name": "troygoode/node-require-directory", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-09-01T08:17:48Z" + }, + { + "id": 3056094, + "name": "URI.js", + "full_name": "medialize/URI.js", + "private": false, + "stargazers_count": 6201, + "updated_at": "2022-11-01T06:03:37Z" + }, + { + "id": 3077049, + "name": "sift.js", + "full_name": "crcn/sift.js", + "private": false, + "stargazers_count": 1566, + "updated_at": "2022-10-30T15:23:44Z" + }, + { + "id": 3114742, + "name": "sendgrid-nodejs", + "full_name": "sendgrid/sendgrid-nodejs", + "private": false, + "stargazers_count": 2733, + "updated_at": "2022-10-31T00:21:55Z" + }, + { + "id": 3195019, + "name": "js-spark-md5", + "full_name": "satazor/js-spark-md5", + "private": false, + "stargazers_count": 2187, + "updated_at": "2022-11-02T07:26:14Z" + }, + { + "id": 3214406, + "name": "meteor", + "full_name": "meteor/meteor", + "private": false, + "stargazers_count": 43112, + "updated_at": "2022-11-02T10:08:23Z" + }, + { + "id": 3238243, + "name": "caniuse", + "full_name": "Fyrd/caniuse", + "private": false, + "stargazers_count": 5096, + "updated_at": "2022-11-01T13:30:02Z" + }, + { + "id": 3275614, + "name": "negotiator", + "full_name": "jshttp/negotiator", + "private": false, + "stargazers_count": 220, + "updated_at": "2022-10-02T07:07:25Z" + }, + { + "id": 3276413, + "name": "deepmerge", + "full_name": "TehShrike/deepmerge", + "private": false, + "stargazers_count": 2495, + "updated_at": "2022-11-02T02:46:58Z" + }, + { + "id": 3302795, + "name": "node-bunyan", + "full_name": "trentm/node-bunyan", + "private": false, + "stargazers_count": 6918, + "updated_at": "2022-11-01T09:57:35Z" + }, + { + "id": 3320710, + "name": "ua-parser-js", + "full_name": "faisalman/ua-parser-js", + "private": false, + "stargazers_count": 7280, + "updated_at": "2022-11-01T20:31:23Z" + }, + { + "id": 3328572, + "name": "sentry-javascript", + "full_name": "getsentry/sentry-javascript", + "private": false, + "stargazers_count": 6640, + "updated_at": "2022-11-02T09:25:07Z" + }, + { + "id": 3329923, + "name": "helmet", + "full_name": "helmetjs/helmet", + "private": false, + "stargazers_count": 9242, + "updated_at": "2022-11-02T10:18:15Z" + }, + { + "id": 3374332, + "name": "bootswatch", + "full_name": "thomaspark/bootswatch", + "private": false, + "stargazers_count": 13854, + "updated_at": "2022-11-02T07:53:08Z" + }, + { + "id": 3380952, + "name": "harmony-reflect", + "full_name": "tvcutsem/harmony-reflect", + "private": false, + "stargazers_count": 445, + "updated_at": "2022-08-12T15:00:41Z" + }, + { + "id": 3386825, + "name": "eventsource", + "full_name": "EventSource/eventsource", + "private": false, + "stargazers_count": 687, + "updated_at": "2022-11-01T20:13:07Z" + }, + { + "id": 3413682, + "name": "node-deep-equal", + "full_name": "inspect-js/node-deep-equal", + "private": false, + "stargazers_count": 699, + "updated_at": "2022-10-21T18:41:03Z" + }, + { + "id": 3422939, + "name": "dropzone", + "full_name": "dropzone/dropzone", + "private": false, + "stargazers_count": 16946, + "updated_at": "2022-11-02T11:21:28Z" + }, + { + "id": 3470471, + "name": "Font-Awesome", + "full_name": "FortAwesome/Font-Awesome", + "private": false, + "stargazers_count": 70358, + "updated_at": "2022-11-02T08:28:45Z" + }, + { + "id": 3515094, + "name": "adm-zip", + "full_name": "cthackers/adm-zip", + "private": false, + "stargazers_count": 1706, + "updated_at": "2022-11-01T15:51:25Z" + }, + { + "id": 3537312, + "name": "xregexp", + "full_name": "slevithan/xregexp", + "private": false, + "stargazers_count": 3157, + "updated_at": "2022-11-02T04:43:14Z" + }, + { + "id": 3602123, + "name": "hammer.js", + "full_name": "hammerjs/hammer.js", + "private": false, + "stargazers_count": 23258, + "updated_at": "2022-11-02T02:49:10Z" + }, + { + "id": 3602669, + "name": "filesize.js", + "full_name": "avoidwork/filesize.js", + "private": false, + "stargazers_count": 1323, + "updated_at": "2022-10-25T22:47:42Z" + } + ] + }, + "over_limit_repos": { + "repository_count": 210, + "repositories": [ + { + "id": 3604157, + "name": "shelljs", + "full_name": "shelljs/shelljs", + "private": false, + "stargazers_count": 13549, + "updated_at": "2022-11-02T02:41:03Z" + }, + { + "id": 3611422, + "name": "escodegen", + "full_name": "estools/escodegen", + "private": false, + "stargazers_count": 2462, + "updated_at": "2022-11-01T13:37:00Z" + }, + { + "id": 3620194, + "name": "select2", + "full_name": "select2/select2", + "private": false, + "stargazers_count": 25456, + "updated_at": "2022-11-02T10:11:28Z" + }, + { + "id": 3655872, + "name": "ms", + "full_name": "vercel/ms", + "private": false, + "stargazers_count": 4283, + "updated_at": "2022-11-01T22:04:29Z" + }, + { + "id": 3658431, + "name": "js-bson", + "full_name": "mongodb/js-bson", + "private": false, + "stargazers_count": 928, + "updated_at": "2022-10-28T07:26:08Z" + }, + { + "id": 3678731, + "name": "webpack", + "full_name": "webpack/webpack", + "private": false, + "stargazers_count": 62023, + "updated_at": "2022-11-02T09:10:16Z" + }, + { + "id": 3721224, + "name": "swiper", + "full_name": "nolimits4web/swiper", + "private": false, + "stargazers_count": 33053, + "updated_at": "2022-11-02T11:21:57Z" + }, + { + "id": 3744545, + "name": "bootstrap-datepicker", + "full_name": "uxsolutions/bootstrap-datepicker", + "private": false, + "stargazers_count": 12568, + "updated_at": "2022-11-01T11:31:58Z" + }, + { + "id": 3750921, + "name": "nightwatch", + "full_name": "nightwatchjs/nightwatch", + "private": false, + "stargazers_count": 11219, + "updated_at": "2022-11-01T22:07:11Z" + }, + { + "id": 3757512, + "name": "sails", + "full_name": "balderdashy/sails", + "private": false, + "stargazers_count": 22330, + "updated_at": "2022-11-01T14:11:42Z" + }, + { + "id": 3880513, + "name": "johnny-five", + "full_name": "rwaldron/johnny-five", + "private": false, + "stargazers_count": 12820, + "updated_at": "2022-11-02T05:34:48Z" + }, + { + "id": 3954884, + "name": "css-loader", + "full_name": "webpack-contrib/css-loader", + "private": false, + "stargazers_count": 4180, + "updated_at": "2022-11-02T09:52:21Z" + }, + { + "id": 3954886, + "name": "style-loader", + "full_name": "webpack-contrib/style-loader", + "private": false, + "stargazers_count": 1615, + "updated_at": "2022-10-27T14:33:40Z" + }, + { + "id": 3955647, + "name": "lodash", + "full_name": "lodash/lodash", + "private": false, + "stargazers_count": 54798, + "updated_at": "2022-11-02T09:59:49Z" + }, + { + "id": 3967764, + "name": "node-extend", + "full_name": "justmoon/node-extend", + "private": false, + "stargazers_count": 338, + "updated_at": "2022-10-17T12:22:59Z" + }, + { + "id": 4058372, + "name": "node-verror", + "full_name": "TritonDataCenter/node-verror", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-26T02:09:56Z" + }, + { + "id": 4090287, + "name": "chokidar", + "full_name": "paulmillr/chokidar", + "private": false, + "stargazers_count": 9444, + "updated_at": "2022-11-02T01:21:11Z" + }, + { + "id": 4110016, + "name": "crypto-browserify", + "full_name": "crypto-browserify/crypto-browserify", + "private": false, + "stargazers_count": 579, + "updated_at": "2022-10-27T11:47:02Z" + }, + { + "id": 4188772, + "name": "toastr", + "full_name": "CodeSeven/toastr", + "private": false, + "stargazers_count": 11416, + "updated_at": "2022-11-01T23:29:59Z" + }, + { + "id": 4192593, + "name": "less-loader", + "full_name": "webpack-contrib/less-loader", + "private": false, + "stargazers_count": 927, + "updated_at": "2022-10-27T05:27:34Z" + }, + { + "id": 4205767, + "name": "emitter", + "full_name": "component/emitter", + "private": false, + "stargazers_count": 551, + "updated_at": "2022-10-11T16:15:28Z" + }, + { + "id": 4268140, + "name": "moment-timezone", + "full_name": "moment/moment-timezone", + "private": false, + "stargazers_count": 3695, + "updated_at": "2022-10-28T12:59:53Z" + }, + { + "id": 4325614, + "name": "argparse", + "full_name": "nodeca/argparse", + "private": false, + "stargazers_count": 452, + "updated_at": "2022-10-05T18:02:17Z" + }, + { + "id": 4463453, + "name": "json5", + "full_name": "json5/json5", + "private": false, + "stargazers_count": 5477, + "updated_at": "2022-11-02T06:28:18Z" + }, + { + "id": 4467228, + "name": "Fuse", + "full_name": "krisk/Fuse", + "private": false, + "stargazers_count": 14990, + "updated_at": "2022-11-02T02:22:39Z" + }, + { + "id": 4475810, + "name": "cookie", + "full_name": "jshttp/cookie", + "private": false, + "stargazers_count": 1086, + "updated_at": "2022-10-28T17:41:02Z" + }, + { + "id": 4494405, + "name": "readdirp", + "full_name": "paulmillr/readdirp", + "private": false, + "stargazers_count": 361, + "updated_at": "2022-10-13T07:35:02Z" + }, + { + "id": 4534540, + "name": "art-template", + "full_name": "aui/art-template", + "private": false, + "stargazers_count": 9709, + "updated_at": "2022-11-02T09:21:48Z" + }, + { + "id": 4569994, + "name": "npmlog", + "full_name": "npm/npmlog", + "private": false, + "stargazers_count": 395, + "updated_at": "2022-10-30T09:47:01Z" + }, + { + "id": 4626886, + "name": "bytes.js", + "full_name": "visionmedia/bytes.js", + "private": false, + "stargazers_count": 419, + "updated_at": "2022-10-27T01:40:41Z" + }, + { + "id": 4696595, + "name": "localtunnel", + "full_name": "localtunnel/localtunnel", + "private": false, + "stargazers_count": 15054, + "updated_at": "2022-11-02T09:47:25Z" + }, + { + "id": 4723248, + "name": "openlayers", + "full_name": "openlayers/openlayers", + "private": false, + "stargazers_count": 9528, + "updated_at": "2022-11-02T10:20:46Z" + }, + { + "id": 4767976, + "name": "node-assert-plus", + "full_name": "TritonDataCenter/node-assert-plus", + "private": false, + "stargazers_count": 121, + "updated_at": "2022-10-29T08:26:32Z" + }, + { + "id": 4813464, + "name": "supertest", + "full_name": "visionmedia/supertest", + "private": false, + "stargazers_count": 12522, + "updated_at": "2022-11-01T22:29:44Z" + }, + { + "id": 4879977, + "name": "send", + "full_name": "pillarjs/send", + "private": false, + "stargazers_count": 746, + "updated_at": "2022-10-28T04:52:15Z" + }, + { + "id": 4897046, + "name": "mousetrap", + "full_name": "ccampbell/mousetrap", + "private": false, + "stargazers_count": 11216, + "updated_at": "2022-11-02T05:53:17Z" + }, + { + "id": 4979467, + "name": "prism", + "full_name": "PrismJS/prism", + "private": false, + "stargazers_count": 10739, + "updated_at": "2022-11-02T10:20:32Z" + }, + { + "id": 5032833, + "name": "rework", + "full_name": "reworkcss/rework", + "private": false, + "stargazers_count": 2770, + "updated_at": "2022-10-21T08:23:07Z" + }, + { + "id": 5169475, + "name": "enquire.js", + "full_name": "WickyNilliams/enquire.js", + "private": false, + "stargazers_count": 3642, + "updated_at": "2022-10-25T15:05:23Z" + }, + { + "id": 5187096, + "name": "readable-stream", + "full_name": "nodejs/readable-stream", + "private": false, + "stargazers_count": 953, + "updated_at": "2022-11-01T13:39:53Z" + }, + { + "id": 5239185, + "name": "quill", + "full_name": "quilljs/quill", + "private": false, + "stargazers_count": 33943, + "updated_at": "2022-11-02T10:09:29Z" + }, + { + "id": 5265803, + "name": "path-to-regexp", + "full_name": "pillarjs/path-to-regexp", + "private": false, + "stargazers_count": 7269, + "updated_at": "2022-11-02T10:17:38Z" + }, + { + "id": 5280109, + "name": "concat-stream", + "full_name": "maxogden/concat-stream", + "private": false, + "stargazers_count": 565, + "updated_at": "2022-10-04T19:51:20Z" + }, + { + "id": 5283193, + "name": "ssh2", + "full_name": "mscdex/ssh2", + "private": false, + "stargazers_count": 4944, + "updated_at": "2022-10-30T21:37:32Z" + }, + { + "id": 5303431, + "name": "rc", + "full_name": "dominictarr/rc", + "private": false, + "stargazers_count": 973, + "updated_at": "2022-10-31T14:26:08Z" + }, + { + "id": 5347074, + "name": "webpack-dev-middleware", + "full_name": "webpack/webpack-dev-middleware", + "private": false, + "stargazers_count": 2423, + "updated_at": "2022-11-01T00:31:06Z" + }, + { + "id": 5351666, + "name": "nunjucks", + "full_name": "mozilla/nunjucks", + "private": false, + "stargazers_count": 7922, + "updated_at": "2022-11-02T06:51:05Z" + }, + { + "id": 5400018, + "name": "levelup", + "full_name": "Level/levelup", + "private": false, + "stargazers_count": 4020, + "updated_at": "2022-10-31T21:47:45Z" + }, + { + "id": 5400204, + "name": "enhanced-resolve", + "full_name": "webpack/enhanced-resolve", + "private": false, + "stargazers_count": 789, + "updated_at": "2022-10-27T06:47:33Z" + }, + { + "id": 5424019, + "name": "node-ip", + "full_name": "indutny/node-ip", + "private": false, + "stargazers_count": 1333, + "updated_at": "2022-11-01T15:24:29Z" + }, + { + "id": 5444800, + "name": "escape-html", + "full_name": "component/escape-html", + "private": false, + "stargazers_count": 396, + "updated_at": "2022-11-01T11:51:04Z" + }, + { + "id": 5476048, + "name": "daterangepicker", + "full_name": "dangrossman/daterangepicker", + "private": false, + "stargazers_count": 10511, + "updated_at": "2022-11-02T03:12:22Z" + }, + { + "id": 5508088, + "name": "svgo", + "full_name": "svg/svgo", + "private": false, + "stargazers_count": 18458, + "updated_at": "2022-11-02T11:18:57Z" + }, + { + "id": 5569059, + "name": "UglifyJS", + "full_name": "mishoo/UglifyJS", + "private": false, + "stargazers_count": 12318, + "updated_at": "2022-11-01T10:32:54Z" + }, + { + "id": 5694513, + "name": "aws-sdk-js", + "full_name": "aws/aws-sdk-js", + "private": false, + "stargazers_count": 7182, + "updated_at": "2022-11-01T05:49:15Z" + }, + { + "id": 5710341, + "name": "bower", + "full_name": "bower/bower", + "private": false, + "stargazers_count": 15056, + "updated_at": "2022-11-01T21:35:49Z" + }, + { + "id": 5717953, + "name": "BigInteger.js", + "full_name": "peterolson/BigInteger.js", + "private": false, + "stargazers_count": 1040, + "updated_at": "2022-10-29T13:35:54Z" + }, + { + "id": 5754307, + "name": "node-jsonfile", + "full_name": "jprichardson/node-jsonfile", + "private": false, + "stargazers_count": 1142, + "updated_at": "2022-10-31T07:02:30Z" + }, + { + "id": 5775917, + "name": "istanbul", + "full_name": "gotwarlost/istanbul", + "private": false, + "stargazers_count": 8572, + "updated_at": "2022-11-01T15:42:18Z" + }, + { + "id": 5830987, + "name": "joi", + "full_name": "hapijs/joi", + "private": false, + "stargazers_count": 19324, + "updated_at": "2022-11-02T10:04:13Z" + }, + { + "id": 5831189, + "name": "hoek", + "full_name": "hapijs/hoek", + "private": false, + "stargazers_count": 475, + "updated_at": "2022-10-24T20:01:30Z" + }, + { + "id": 5839692, + "name": "webpack-dev-server", + "full_name": "webpack/webpack-dev-server", + "private": false, + "stargazers_count": 7487, + "updated_at": "2022-11-02T02:02:08Z" + }, + { + "id": 5847275, + "name": "grunt-contrib-watch", + "full_name": "gruntjs/grunt-contrib-watch", + "private": false, + "stargazers_count": 1991, + "updated_at": "2022-10-10T01:51:45Z" + }, + { + "id": 5905330, + "name": "GSAP", + "full_name": "greensock/GSAP", + "private": false, + "stargazers_count": 15117, + "updated_at": "2022-11-02T05:25:53Z" + }, + { + "id": 5905681, + "name": "recast", + "full_name": "benjamn/recast", + "private": false, + "stargazers_count": 4289, + "updated_at": "2022-10-31T18:26:42Z" + }, + { + "id": 5923215, + "name": "hexo", + "full_name": "hexojs/hexo", + "private": false, + "stargazers_count": 35642, + "updated_at": "2022-11-02T10:59:10Z" + }, + { + "id": 5932749, + "name": "acorn", + "full_name": "acornjs/acorn", + "private": false, + "stargazers_count": 8875, + "updated_at": "2022-11-02T01:42:25Z" + }, + { + "id": 5972219, + "name": "bootstrap-select", + "full_name": "snapappointments/bootstrap-select", + "private": false, + "stargazers_count": 9655, + "updated_at": "2022-11-01T20:37:08Z" + }, + { + "id": 5987222, + "name": "polyglot.js", + "full_name": "airbnb/polyglot.js", + "private": false, + "stargazers_count": 3556, + "updated_at": "2022-11-02T00:40:27Z" + }, + { + "id": 6036101, + "name": "Numeral-js", + "full_name": "adamwdraper/Numeral-js", + "private": false, + "stargazers_count": 9315, + "updated_at": "2022-11-01T06:15:55Z" + }, + { + "id": 6060783, + "name": "grunt-contrib-uglify", + "full_name": "gruntjs/grunt-contrib-uglify", + "private": false, + "stargazers_count": 1478, + "updated_at": "2022-10-20T23:44:40Z" + }, + { + "id": 6068826, + "name": "gaze", + "full_name": "shama/gaze", + "private": false, + "stargazers_count": 1152, + "updated_at": "2022-10-17T13:00:25Z" + }, + { + "id": 6135596, + "name": "node-archiver", + "full_name": "archiverjs/node-archiver", + "private": false, + "stargazers_count": 2473, + "updated_at": "2022-11-01T09:40:42Z" + }, + { + "id": 6145439, + "name": "estraverse", + "full_name": "estools/estraverse", + "private": false, + "stargazers_count": 885, + "updated_at": "2022-10-11T20:15:06Z" + }, + { + "id": 6248967, + "name": "rsvp.js", + "full_name": "tildeio/rsvp.js", + "private": false, + "stargazers_count": 3626, + "updated_at": "2022-10-29T20:16:33Z" + }, + { + "id": 6319157, + "name": "interact.js", + "full_name": "taye/interact.js", + "private": false, + "stargazers_count": 11208, + "updated_at": "2022-11-02T05:39:04Z" + }, + { + "id": 6498492, + "name": "javascript", + "full_name": "airbnb/javascript", + "private": false, + "stargazers_count": 128295, + "updated_at": "2022-11-02T11:30:53Z" + }, + { + "id": 6503675, + "name": "loader-utils", + "full_name": "webpack/loader-utils", + "private": false, + "stargazers_count": 717, + "updated_at": "2022-10-31T07:33:10Z" + }, + { + "id": 6538922, + "name": "jquery-migrate", + "full_name": "jquery/jquery-migrate", + "private": false, + "stargazers_count": 1875, + "updated_at": "2022-10-29T10:02:01Z" + }, + { + "id": 6584365, + "name": "big.js", + "full_name": "MikeMcl/big.js", + "private": false, + "stargazers_count": 4199, + "updated_at": "2022-11-01T03:09:03Z" + }, + { + "id": 6602323, + "name": "bignumber.js", + "full_name": "MikeMcl/bignumber.js", + "private": false, + "stargazers_count": 5837, + "updated_at": "2022-11-01T11:06:34Z" + }, + { + "id": 6672900, + "name": "configstore", + "full_name": "yeoman/configstore", + "private": false, + "stargazers_count": 802, + "updated_at": "2022-10-31T16:40:51Z" + }, + { + "id": 6697086, + "name": "follow-redirects", + "full_name": "follow-redirects/follow-redirects", + "private": false, + "stargazers_count": 451, + "updated_at": "2022-10-28T00:36:30Z" + }, + { + "id": 6709682, + "name": "nvd3", + "full_name": "novus/nvd3", + "private": false, + "stargazers_count": 7183, + "updated_at": "2022-11-01T13:19:15Z" + }, + { + "id": 6837962, + "name": "hawk", + "full_name": "mozilla/hawk", + "private": false, + "stargazers_count": 1889, + "updated_at": "2022-10-22T14:53:44Z" + }, + { + "id": 6853358, + "name": "tape", + "full_name": "ljharb/tape", + "private": false, + "stargazers_count": 5675, + "updated_at": "2022-11-02T09:57:27Z" + }, + { + "id": 6898381, + "name": "cordova-android", + "full_name": "apache/cordova-android", + "private": false, + "stargazers_count": 3411, + "updated_at": "2022-11-01T23:29:35Z" + }, + { + "id": 6965529, + "name": "node-notifier", + "full_name": "mikaelbr/node-notifier", + "private": false, + "stargazers_count": 5502, + "updated_at": "2022-11-02T06:19:33Z" + }, + { + "id": 6988020, + "name": "sheetjs", + "full_name": "SheetJS/sheetjs", + "private": false, + "stargazers_count": 31583, + "updated_at": "2022-11-02T09:25:46Z" + }, + { + "id": 7069389, + "name": "update-notifier", + "full_name": "yeoman/update-notifier", + "private": false, + "stargazers_count": 1697, + "updated_at": "2022-10-28T12:32:32Z" + }, + { + "id": 7122594, + "name": "directus", + "full_name": "directus/directus", + "private": false, + "stargazers_count": 18129, + "updated_at": "2022-11-02T11:03:28Z" + }, + { + "id": 7297261, + "name": "promise", + "full_name": "then/promise", + "private": false, + "stargazers_count": 2484, + "updated_at": "2022-10-26T02:05:09Z" + }, + { + "id": 7323216, + "name": "aws4", + "full_name": "mhart/aws4", + "private": false, + "stargazers_count": 628, + "updated_at": "2022-10-26T05:10:37Z" + }, + { + "id": 7350109, + "name": "raf", + "full_name": "chrisdickinson/raf", + "private": false, + "stargazers_count": 735, + "updated_at": "2022-11-01T14:08:34Z" + }, + { + "id": 7363211, + "name": "knex", + "full_name": "knex/knex", + "private": false, + "stargazers_count": 16648, + "updated_at": "2022-11-02T11:36:11Z" + }, + { + "id": 7395230, + "name": "node-worker-farm", + "full_name": "rvagg/node-worker-farm", + "private": false, + "stargazers_count": 1717, + "updated_at": "2022-10-26T07:30:06Z" + }, + { + "id": 7530570, + "name": "appium", + "full_name": "appium/appium", + "private": false, + "stargazers_count": 15673, + "updated_at": "2022-11-02T09:33:28Z" + }, + { + "id": 7544081, + "name": "Magnific-Popup", + "full_name": "dimsemenov/Magnific-Popup", + "private": false, + "stargazers_count": 11304, + "updated_at": "2022-11-02T03:16:52Z" + }, + { + "id": 7579902, + "name": "boom", + "full_name": "hapijs/boom", + "private": false, + "stargazers_count": 2898, + "updated_at": "2022-11-01T11:08:28Z" + }, + { + "id": 7639232, + "name": "protractor", + "full_name": "angular/protractor", + "private": false, + "stargazers_count": 8801, + "updated_at": "2022-10-30T23:47:03Z" + } + ] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/9-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/9-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..a7a28e8fa42 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-problem-query-warnings/9-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 17335035 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 17335035, + "node_id": "MDEwOlJlcG9zaXRvcnkxNzMzNTAzNQ==", + "name": "bootstrap-fileinput", + "full_name": "kartik-v/bootstrap-fileinput", + "private": false, + "owner": { + "login": "kartik-v", + "id": 3592619, + "node_id": "MDQ6VXNlcjM1OTI2MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/3592619?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kartik-v", + "html_url": "https://github.com/kartik-v", + "followers_url": "https://api.github.com/users/kartik-v/followers", + "following_url": "https://api.github.com/users/kartik-v/following{/other_user}", + "gists_url": "https://api.github.com/users/kartik-v/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kartik-v/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kartik-v/subscriptions", + "organizations_url": "https://api.github.com/users/kartik-v/orgs", + "repos_url": "https://api.github.com/users/kartik-v/repos", + "events_url": "https://api.github.com/users/kartik-v/events{/privacy}", + "received_events_url": "https://api.github.com/users/kartik-v/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/kartik-v/bootstrap-fileinput", + "description": "An enhanced HTML 5 file input for Bootstrap 5.x/4.x./3.x with file preview, multiple selection, and more features.", + "fork": false, + "url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput", + "forks_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/forks", + "keys_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/teams", + "hooks_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/hooks", + "issue_events_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/issues/events{/number}", + "events_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/events", + "assignees_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/assignees{/user}", + "branches_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/branches{/branch}", + "tags_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/tags", + "blobs_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/statuses/{sha}", + "languages_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/languages", + "stargazers_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/stargazers", + "contributors_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/contributors", + "subscribers_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/subscribers", + "subscription_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/subscription", + "commits_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/contents/{+path}", + "compare_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/merges", + "archive_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/downloads", + "issues_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/issues{/number}", + "pulls_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/pulls{/number}", + "milestones_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/milestones{/number}", + "notifications_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/labels{/name}", + "releases_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/releases{/id}", + "deployments_url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 36673, + "result_count": 1, + "database_commit_sha": "8af6df403f4c37a6e497361eb9c3caafb8ec4d82", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/151/17335035/06769b4f-0218-4306-9f37-2f5374bb7980?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T074803Z&X-Amz-Expires=300&X-Amz-Signature=1a1c13b9c37d9722fa62246f7e2941cc7ae12735eea6979a14209caa38ad1ee2&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/0-getRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/0-getRepo.json new file mode 100644 index 00000000000..38c8f64ba85 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/0-getRepo.json @@ -0,0 +1,159 @@ +{ + "request": { + "kind": "getRepo" + }, + "response": { + "status": 200, + "body": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments", + "created_at": "2022-10-26T10:37:59Z", + "updated_at": "2022-10-26T10:37:59Z", + "pushed_at": "2022-10-26T10:38:02Z", + "git_url": "git://github.com/github/mrva-demo-controller-repo.git", + "ssh_url": "git@github.com:github/mrva-demo-controller-repo.git", + "clone_url": "https://github.com/github/mrva-demo-controller-repo.git", + "svn_url": "https://github.com/github/mrva-demo-controller-repo", + "homepage": null, + "size": 0, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": null, + "allow_forking": false, + "is_template": false, + "web_commit_signoff_required": false, + "topics": [], + "visibility": "private", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main", + "permissions": { + "admin": true, + "maintain": true, + "push": true, + "triage": true, + "pull": true + }, + "temp_clone_token": "AACMDDI33PDNBWD4ICUWGILDLJZ76", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "allow_auto_merge": false, + "delete_branch_on_merge": false, + "allow_update_branch": false, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE", + "organization": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "security_and_analysis": { + "advanced_security": { + "status": "enabled" + }, + "secret_scanning": { + "status": "enabled" + }, + "secret_scanning_push_protection": { + "status": "enabled" + } + }, + "network_count": 0, + "subscribers_count": 0 + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/1-submitVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/1-submitVariantAnalysis.json new file mode 100644 index 00000000000..11dc9fe9d7e --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/1-submitVariantAnalysis.json @@ -0,0 +1,104 @@ +{ + "request": { + "kind": "submitVariantAnalysis" + }, + "response": { + "status": 201, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120027Z&X-Amz-Expires=3600&X-Amz-Signature=af8ca3b6568695c9725053d36c972cb1c698daf9c98d923e2326c79c2e2366f5&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:27Z", + "status": "in_progress", + "skipped_repositories": {} + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/10-getVariantAnalysisRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/10-getVariantAnalysisRepo.json new file mode 100644 index 00000000000..560a17233cb --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/10-getVariantAnalysisRepo.json @@ -0,0 +1,84 @@ +{ + "request": { + "kind": "getVariantAnalysisRepo", + "repositoryId": 23418517 + }, + "response": { + "status": 200, + "body": { + "repository": { + "id": 23418517, + "node_id": "MDEwOlJlcG9zaXRvcnkyMzQxODUxNw==", + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "owner": { + "login": "apache", + "id": 47359, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ3MzU5", + "avatar_url": "https://avatars.githubusercontent.com/u/47359?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/apache", + "html_url": "https://github.com/apache", + "followers_url": "https://api.github.com/users/apache/followers", + "following_url": "https://api.github.com/users/apache/following{/other_user}", + "gists_url": "https://api.github.com/users/apache/gists{/gist_id}", + "starred_url": "https://api.github.com/users/apache/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/apache/subscriptions", + "organizations_url": "https://api.github.com/users/apache/orgs", + "repos_url": "https://api.github.com/users/apache/repos", + "events_url": "https://api.github.com/users/apache/events{/privacy}", + "received_events_url": "https://api.github.com/users/apache/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/apache/hadoop", + "description": "Apache Hadoop", + "fork": false, + "url": "https://api.github.com/repos/apache/hadoop", + "forks_url": "https://api.github.com/repos/apache/hadoop/forks", + "keys_url": "https://api.github.com/repos/apache/hadoop/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/apache/hadoop/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/apache/hadoop/teams", + "hooks_url": "https://api.github.com/repos/apache/hadoop/hooks", + "issue_events_url": "https://api.github.com/repos/apache/hadoop/issues/events{/number}", + "events_url": "https://api.github.com/repos/apache/hadoop/events", + "assignees_url": "https://api.github.com/repos/apache/hadoop/assignees{/user}", + "branches_url": "https://api.github.com/repos/apache/hadoop/branches{/branch}", + "tags_url": "https://api.github.com/repos/apache/hadoop/tags", + "blobs_url": "https://api.github.com/repos/apache/hadoop/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/apache/hadoop/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/apache/hadoop/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/apache/hadoop/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/apache/hadoop/statuses/{sha}", + "languages_url": "https://api.github.com/repos/apache/hadoop/languages", + "stargazers_url": "https://api.github.com/repos/apache/hadoop/stargazers", + "contributors_url": "https://api.github.com/repos/apache/hadoop/contributors", + "subscribers_url": "https://api.github.com/repos/apache/hadoop/subscribers", + "subscription_url": "https://api.github.com/repos/apache/hadoop/subscription", + "commits_url": "https://api.github.com/repos/apache/hadoop/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/apache/hadoop/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/apache/hadoop/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/apache/hadoop/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/apache/hadoop/contents/{+path}", + "compare_url": "https://api.github.com/repos/apache/hadoop/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/apache/hadoop/merges", + "archive_url": "https://api.github.com/repos/apache/hadoop/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/apache/hadoop/downloads", + "issues_url": "https://api.github.com/repos/apache/hadoop/issues{/number}", + "pulls_url": "https://api.github.com/repos/apache/hadoop/pulls{/number}", + "milestones_url": "https://api.github.com/repos/apache/hadoop/milestones{/number}", + "notifications_url": "https://api.github.com/repos/apache/hadoop/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/apache/hadoop/labels{/name}", + "releases_url": "https://api.github.com/repos/apache/hadoop/releases{/id}", + "deployments_url": "https://api.github.com/repos/apache/hadoop/deployments" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3, + "database_commit_sha": "aac87ffe76451c2fd535350b7aefb384e2be6241", + "source_location_prefix": "/home/runner/work/bulk-builder/bulk-builder", + "artifact_url": "https://objects-origin.githubusercontent.com/codeql-query-console/codeql-variant-analysis-repo-tasks/155/23418517/d997a42f-9b44-4442-af90-36000938356f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120250Z&X-Amz-Expires=300&X-Amz-Signature=d31d9994cfe6b1d74ecadd6df4ffe652617de4c0952dbb3f64c15ea52e02e3fd&X-Amz-SignedHeaders=host&actor_id=311693&key_id=0&repo_id=557804416" + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/11-getVariantAnalysisRepoResult.body.zip b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/11-getVariantAnalysisRepoResult.body.zip new file mode 100644 index 00000000000..7b9772a2a05 Binary files /dev/null and b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/11-getVariantAnalysisRepoResult.body.zip differ diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/11-getVariantAnalysisRepoResult.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/11-getVariantAnalysisRepoResult.json new file mode 100644 index 00000000000..9c5899d20cc --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/11-getVariantAnalysisRepoResult.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "getVariantAnalysisRepoResult", + "repositoryId": 23418517 + }, + "response": { + "status": 200, + "body": "file:11-getVariantAnalysisRepoResult.body.zip", + "contentType": "application/zip" + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/12-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/12-getVariantAnalysis.json new file mode 100644 index 00000000000..bb230f4f51c --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/12-getVariantAnalysis.json @@ -0,0 +1,144 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120255Z&X-Amz-Expires=3600&X-Amz-Signature=e33f798995954f03998ff5496056ad19d53e95e66e3ef3ce13e4af467626d933&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/13-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/13-getVariantAnalysis.json new file mode 100644 index 00000000000..e338de7b828 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/13-getVariantAnalysis.json @@ -0,0 +1,144 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120354Z&X-Amz-Expires=3600&X-Amz-Signature=46ecd2b9e5fe47ed71dc981d6b1b091dbce727672c16b2ba3ed2ce17950406b3&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/14-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/14-getVariantAnalysis.json new file mode 100644 index 00000000000..84e5c40d94a --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/14-getVariantAnalysis.json @@ -0,0 +1,145 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120400Z&X-Amz-Expires=3600&X-Amz-Signature=82be4605ffe607c0845d7cf36dbf2af7ffb824327d080991533dbc5cc8c53faa&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "failed", + "failure_message": "The GitHub Actions workflow failed or was cancelled." + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/15-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/15-getVariantAnalysis.json new file mode 100644 index 00000000000..f44c6f421e7 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/15-getVariantAnalysis.json @@ -0,0 +1,146 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120405Z&X-Amz-Expires=3600&X-Amz-Signature=d24386120eb42d852b2fd5275fbc548bd93eab66a41578485b52c2dbf219aa9c&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "succeeded", + "completed_at": "2022-10-27T12:04:03Z", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "failed", + "failure_message": "There was a problem when running the query." + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/2-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/2-getVariantAnalysis.json new file mode 100644 index 00000000000..5365c6304bc --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/2-getVariantAnalysis.json @@ -0,0 +1,142 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120033Z&X-Amz-Expires=3600&X-Amz-Signature=6ccb3e4a41667c3672debd55d1e9f056dde3c9bdda1bca2c194cc6daccef4440&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/3-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/3-getVariantAnalysis.json new file mode 100644 index 00000000000..fee8ba7fedf --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/3-getVariantAnalysis.json @@ -0,0 +1,142 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120054Z&X-Amz-Expires=3600&X-Amz-Signature=8ee8a4e0c30214ddd05e76917552c849718d970cf4e7f49db69336911a33fc7f&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "pending" + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "pending" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/4-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/4-getVariantAnalysis.json new file mode 100644 index 00000000000..2b9b07d1cfe --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/4-getVariantAnalysis.json @@ -0,0 +1,142 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120100Z&X-Amz-Expires=3600&X-Amz-Signature=d188e7d8059a6a1b12ac82a7d2232ded89644866cc30f016d98410826272a581&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/5-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/5-getVariantAnalysis.json new file mode 100644 index 00000000000..ce06f10d07e --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/5-getVariantAnalysis.json @@ -0,0 +1,142 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120105Z&X-Amz-Expires=3600&X-Amz-Signature=60a003ef46673c65134ae19950cc92a3b1518df97435b9d4aa3f287a64f1abb8&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/6-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/6-getVariantAnalysis.json new file mode 100644 index 00000000000..20890e77002 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/6-getVariantAnalysis.json @@ -0,0 +1,142 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120144Z&X-Amz-Expires=3600&X-Amz-Signature=97225026e4eaa2fd6bf1954315a6be8278b284f6f501074e66dfceeb7b4f4474&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/7-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/7-getVariantAnalysis.json new file mode 100644 index 00000000000..d88438bb32f --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/7-getVariantAnalysis.json @@ -0,0 +1,142 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120239Z&X-Amz-Expires=3600&X-Amz-Signature=b8c886ae812947d1e02cdf50c9fac9b388bfdeabb0e97774f2c4e3cdc4d5bd61&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/8-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/8-getVariantAnalysis.json new file mode 100644 index 00000000000..613f13d46ee --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/8-getVariantAnalysis.json @@ -0,0 +1,142 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120244Z&X-Amz-Expires=3600&X-Amz-Signature=c310fb55d5098fe34f453605fa01788f45536af818b73d167ad7d88441a9c471&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "in_progress" + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/9-getVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/9-getVariantAnalysis.json new file mode 100644 index 00000000000..d13dc8b1c4d --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-query-failure/9-getVariantAnalysis.json @@ -0,0 +1,144 @@ +{ + "request": { + "kind": "getVariantAnalysis" + }, + "response": { + "status": 200, + "body": { + "id": 155, + "controller_repo": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments" + }, + "actor": { + "login": "charisk", + "id": 311693, + "node_id": "MDQ6VXNlcjMxMTY5Mw==", + "avatar_url": "https://avatars.githubusercontent.com/u/311693?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/charisk", + "html_url": "https://github.com/charisk", + "followers_url": "https://api.github.com/users/charisk/followers", + "following_url": "https://api.github.com/users/charisk/following{/other_user}", + "gists_url": "https://api.github.com/users/charisk/gists{/gist_id}", + "starred_url": "https://api.github.com/users/charisk/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/charisk/subscriptions", + "organizations_url": "https://api.github.com/users/charisk/orgs", + "repos_url": "https://api.github.com/users/charisk/repos", + "events_url": "https://api.github.com/users/charisk/events{/privacy}", + "received_events_url": "https://api.github.com/users/charisk/received_events", + "type": "User", + "site_admin": true + }, + "query_language": "javascript", + "query_pack_url": "https://objects-origin.githubusercontent.com/codeql-query-console/variant_analyses/155/query_pack?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=queryconsoleprod%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T120250Z&X-Amz-Expires=3600&X-Amz-Signature=609bbdcd9d73bbf321a65f468fa44ddf0475521cc01d6b6157c1313481822b4b&X-Amz-SignedHeaders=host", + "created_at": "2022-10-27T12:00:27Z", + "updated_at": "2022-10-27T12:00:30Z", + "actions_workflow_run_id": 3337181325, + "status": "in_progress", + "scanned_repositories": [ + { + "repository": { + "id": 23418517, + "name": "hadoop", + "full_name": "apache/hadoop", + "private": false, + "stargazers_count": 13030, + "updated_at": "2022-11-02T08:23:58Z" + }, + "analysis_status": "succeeded", + "artifact_size_in_bytes": 66895, + "result_count": 3 + }, + { + "repository": { + "id": 105590837, + "name": "amplify-js", + "full_name": "aws-amplify/amplify-js", + "private": false, + "stargazers_count": 8969, + "updated_at": "2022-11-02T09:55:27Z" + }, + "analysis_status": "in_progress" + } + ], + "skipped_repositories": { + "access_mismatch_repos": { + "repository_count": 0, + "repositories": [] + }, + "no_codeql_db_repos": { + "repository_count": 0, + "repositories": [] + }, + "over_limit_repos": { + "repository_count": 0, + "repositories": [] + } + } + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-submission-failure/0-getRepo.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-submission-failure/0-getRepo.json new file mode 100644 index 00000000000..a1fa60a031e --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-submission-failure/0-getRepo.json @@ -0,0 +1,159 @@ +{ + "request": { + "kind": "getRepo" + }, + "response": { + "status": 200, + "body": { + "id": 557804416, + "node_id": "R_kgDOIT9rgA", + "name": "mrva-demo-controller-repo", + "full_name": "github/mrva-demo-controller-repo", + "private": true, + "owner": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/github/mrva-demo-controller-repo", + "description": null, + "fork": false, + "url": "https://api.github.com/repos/github/mrva-demo-controller-repo", + "forks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/forks", + "keys_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/teams", + "hooks_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/hooks", + "issue_events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/events{/number}", + "events_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/events", + "assignees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/assignees{/user}", + "branches_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/branches{/branch}", + "tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/tags", + "blobs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/statuses/{sha}", + "languages_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/languages", + "stargazers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/stargazers", + "contributors_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contributors", + "subscribers_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscribers", + "subscription_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/subscription", + "commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/contents/{+path}", + "compare_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/merges", + "archive_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/downloads", + "issues_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/issues{/number}", + "pulls_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/pulls{/number}", + "milestones_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/milestones{/number}", + "notifications_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/labels{/name}", + "releases_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/releases{/id}", + "deployments_url": "https://api.github.com/repos/github/mrva-demo-controller-repo/deployments", + "created_at": "2022-10-26T10:37:59Z", + "updated_at": "2022-10-26T10:37:59Z", + "pushed_at": "2022-10-26T10:38:02Z", + "git_url": "git://github.com/github/mrva-demo-controller-repo.git", + "ssh_url": "git@github.com:github/mrva-demo-controller-repo.git", + "clone_url": "https://github.com/github/mrva-demo-controller-repo.git", + "svn_url": "https://github.com/github/mrva-demo-controller-repo", + "homepage": null, + "size": 0, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": null, + "allow_forking": false, + "is_template": false, + "web_commit_signoff_required": false, + "topics": [], + "visibility": "private", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main", + "permissions": { + "admin": true, + "maintain": true, + "push": true, + "triage": true, + "pull": true + }, + "temp_clone_token": "AACMDDJSXFX6QQXTSB4YQCDDLEWP4", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "allow_auto_merge": false, + "delete_branch_on_merge": false, + "allow_update_branch": false, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE", + "organization": { + "login": "github", + "id": 9919, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github", + "html_url": "https://github.com/github", + "followers_url": "https://api.github.com/users/github/followers", + "following_url": "https://api.github.com/users/github/following{/other_user}", + "gists_url": "https://api.github.com/users/github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github/subscriptions", + "organizations_url": "https://api.github.com/users/github/orgs", + "repos_url": "https://api.github.com/users/github/repos", + "events_url": "https://api.github.com/users/github/events{/privacy}", + "received_events_url": "https://api.github.com/users/github/received_events", + "type": "Organization", + "site_admin": false + }, + "security_and_analysis": { + "advanced_security": { + "status": "enabled" + }, + "secret_scanning": { + "status": "enabled" + }, + "secret_scanning_push_protection": { + "status": "enabled" + } + }, + "network_count": 0, + "subscribers_count": 0 + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-submission-failure/1-submitVariantAnalysis.json b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-submission-failure/1-submitVariantAnalysis.json new file mode 100644 index 00000000000..8646cfd3508 --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/scenarios/mrva-submission-failure/1-submitVariantAnalysis.json @@ -0,0 +1,11 @@ +{ + "request": { + "kind": "submitVariantAnalysis" + }, + "response": { + "status": 422, + "body": { + "message": "Unable to trigger a variant analysis. None of the requested repositories could be found." + } + } +} diff --git a/extensions/ql-vscode/src/common/mock-gh-api/vscode/vscode-mock-gh-api-server.ts b/extensions/ql-vscode/src/common/mock-gh-api/vscode/vscode-mock-gh-api-server.ts new file mode 100644 index 00000000000..8e1e04e9daa --- /dev/null +++ b/extensions/ql-vscode/src/common/mock-gh-api/vscode/vscode-mock-gh-api-server.ts @@ -0,0 +1,281 @@ +import { pathExists } from "fs-extra"; +import type { QuickPickItem } from "vscode"; +import { env, Uri, window } from "vscode"; + +import { + getMockGitHubApiServerScenariosPath, + MockGitHubApiConfigListener, +} from "../../../config"; +import { DisposableObject } from "../../disposable-object"; +import { MockGitHubApiServer } from "../mock-gh-api-server"; +import type { MockGitHubApiServerCommands } from "../../commands"; +import type { App } from "../../app"; +import { AppMode } from "../../app"; +import path from "path"; + +/** + * "Interface" to the mock GitHub API server which implements VSCode interactions, such as + * listening for config changes, asking for scenario names, etc. + * + * This should not be used in tests. For tests, use the `MockGitHubApiServer` class directly. + */ +export class VSCodeMockGitHubApiServer extends DisposableObject { + private readonly server: MockGitHubApiServer; + private readonly config: MockGitHubApiConfigListener; + + constructor(private readonly app: App) { + super(); + this.server = new MockGitHubApiServer(); + this.config = new MockGitHubApiConfigListener(); + + this.setupConfigListener(); + } + + public getCommands(): MockGitHubApiServerCommands { + return { + "codeQL.mockGitHubApiServer.startRecording": + this.startRecording.bind(this), + "codeQL.mockGitHubApiServer.saveScenario": this.saveScenario.bind(this), + "codeQL.mockGitHubApiServer.cancelRecording": + this.cancelRecording.bind(this), + "codeQL.mockGitHubApiServer.loadScenario": this.loadScenario.bind(this), + "codeQL.mockGitHubApiServer.unloadScenario": + this.unloadScenario.bind(this), + }; + } + + public async startServer(): Promise { + this.server.startServer(); + } + + public async stopServer(): Promise { + this.server.stopServer(); + + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.scenarioLoaded", + false, + ); + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.recording", + false, + ); + } + + public async loadScenario(scenario?: string): Promise { + const scenariosPath = await this.getScenariosPath(); + if (!scenariosPath) { + return; + } + + let scenarioName = scenario; + if (!scenarioName) { + const scenarioNames = await this.server.getScenarioNames(scenariosPath); + const scenarioQuickPickItems = scenarioNames.map((s) => ({ label: s })); + const quickPickOptions = { + placeHolder: "Select a scenario to load", + }; + const selectedScenario = await window.showQuickPick( + scenarioQuickPickItems, + quickPickOptions, + ); + if (!selectedScenario) { + return; + } + + scenarioName = selectedScenario.label; + } + + if (!this.server.isListening && this.app.mode === AppMode.Test) { + await this.startServer(); + } + + await this.server.loadScenario(scenarioName, scenariosPath); + + // Set a value in the context to track whether we have a scenario loaded. + // This allows us to use this to show/hide commands (see package.json) + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.scenarioLoaded", + true, + ); + + void window.showInformationMessage(`Loaded scenario '${scenarioName}'`); + } + + public async unloadScenario(): Promise { + if (!this.server.isScenarioLoaded) { + void window.showInformationMessage("No scenario currently loaded"); + } else { + await this.server.unloadScenario(); + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.scenarioLoaded", + false, + ); + void window.showInformationMessage("Unloaded scenario"); + } + + if (this.server.isListening && this.app.mode === AppMode.Test) { + await this.stopServer(); + } + } + + public async startRecording(): Promise { + if (this.server.isRecording) { + void window.showErrorMessage( + 'A scenario is already being recorded. Use the "Save Scenario" or "Cancel Scenario" commands to finish recording.', + ); + return; + } + + if (this.server.isScenarioLoaded) { + await this.server.unloadScenario(); + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.scenarioLoaded", + false, + ); + void window.showInformationMessage( + "A scenario was loaded so it has been unloaded", + ); + } + + await this.server.startRecording(); + // Set a value in the context to track whether we are recording. This allows us to use this to show/hide commands (see package.json) + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.recording", + true, + ); + + void window.showInformationMessage( + 'Recording scenario. To save the scenario, use the "CodeQL Mock GitHub API Server: Save Scenario" command.', + ); + } + + public async saveScenario(): Promise { + const scenariosPath = await this.getScenariosPath(); + if (!scenariosPath) { + return; + } + + // Set a value in the context to track whether we are recording. This allows us to use this to show/hide commands (see package.json) + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.recording", + false, + ); + + if (!this.server.isRecording) { + void window.showErrorMessage("No scenario is currently being recorded."); + return; + } + if (!this.server.anyRequestsRecorded) { + void window.showWarningMessage( + "No requests were recorded. Cancelling scenario.", + ); + + await this.stopRecording(); + + return; + } + + const name = await window.showInputBox({ + title: "Save scenario", + prompt: "Enter a name for the scenario.", + placeHolder: "successful-run", + }); + if (!name) { + return; + } + + const filePath = await this.server.saveScenario(name, scenariosPath); + + await this.stopRecording(); + + const action = await window.showInformationMessage( + `Scenario saved to ${filePath}`, + "Open directory", + ); + if (action === "Open directory") { + await env.openExternal(Uri.file(filePath)); + } + } + + public async cancelRecording(): Promise { + if (!this.server.isRecording) { + void window.showErrorMessage("No scenario is currently being recorded."); + return; + } + + await this.stopRecording(); + + void window.showInformationMessage("Recording cancelled."); + } + + private async stopRecording(): Promise { + // Set a value in the context to track whether we are recording. This allows us to use this to show/hide commands (see package.json) + await this.app.commands.execute( + "setContext", + "codeQL.mockGitHubApiServer.recording", + false, + ); + + await this.server.stopRecording(); + } + + private async getScenariosPath(): Promise { + const scenariosPath = getMockGitHubApiServerScenariosPath(); + if (scenariosPath) { + return scenariosPath; + } + + if ( + this.app.mode === AppMode.Development || + this.app.mode === AppMode.Test + ) { + const developmentScenariosPath = path.join( + this.app.extensionPath, + "src/common/mock-gh-api/scenarios", + ); + if (await pathExists(developmentScenariosPath)) { + return developmentScenariosPath; + } + } + + const directories = await window.showOpenDialog({ + canSelectFolders: true, + canSelectFiles: false, + canSelectMany: false, + openLabel: "Select scenarios directory", + title: "Select scenarios directory", + }); + if (directories === undefined || directories.length === 0) { + void window.showErrorMessage("No scenarios directory selected."); + return undefined; + } + + // Unfortunately, we cannot save the directory in the configuration because that requires + // the configuration to be registered. If we do that, it would be visible to all users; there + // is no "when" clause that would allow us to only show it to users who have enabled the feature flag. + + return directories[0].fsPath; + } + + private setupConfigListener(): void { + // The config "changes" from the default at startup, so we need to call onConfigChange() to ensure the server is + // started if required. + void this.onConfigChange(); + this.config.onDidChangeConfiguration(() => void this.onConfigChange()); + } + + private async onConfigChange(): Promise { + if (this.config.mockServerEnabled && !this.server.isListening) { + await this.startServer(); + } else if (!this.config.mockServerEnabled && this.server.isListening) { + await this.stopServer(); + } + } +} diff --git a/extensions/ql-vscode/src/common/model-pack-details.ts b/extensions/ql-vscode/src/common/model-pack-details.ts new file mode 100644 index 00000000000..5bd8b158841 --- /dev/null +++ b/extensions/ql-vscode/src/common/model-pack-details.ts @@ -0,0 +1,4 @@ +export interface ModelPackDetails { + name: string; + path: string; +} diff --git a/extensions/ql-vscode/src/common/mutable.ts b/extensions/ql-vscode/src/common/mutable.ts new file mode 100644 index 00000000000..d52d7d9c7ef --- /dev/null +++ b/extensions/ql-vscode/src/common/mutable.ts @@ -0,0 +1,6 @@ +/** + * Remove all readonly modifiers from a type. + */ +export type Mutable = { + -readonly [P in keyof T]: T[P]; +}; diff --git a/extensions/ql-vscode/src/common/number.ts b/extensions/ql-vscode/src/common/number.ts new file mode 100644 index 00000000000..c6b9231f81e --- /dev/null +++ b/extensions/ql-vscode/src/common/number.ts @@ -0,0 +1,15 @@ +/* + * Contains an assortment of helper constants and functions for working with numbers. + */ + +const numberFormatter = new Intl.NumberFormat("en-US"); + +/** + * Formats a number to be human-readable with decimal places and thousands separators. + * + * @param value The number to format. + * @returns The formatted number. For example, "10,000", "1,000,000", or "1,000,000,000". + */ +export function formatDecimal(value: number): string { + return numberFormatter.format(value); +} diff --git a/extensions/ql-vscode/src/common/octokit.ts b/extensions/ql-vscode/src/common/octokit.ts new file mode 100644 index 00000000000..f3717c5b2e9 --- /dev/null +++ b/extensions/ql-vscode/src/common/octokit.ts @@ -0,0 +1,13 @@ +import { Octokit } from "@octokit/rest"; +import { retry } from "@octokit/plugin-retry"; + +export const AppOctokit = Octokit.defaults({ + request: { + // MSW replaces the global fetch object, so we can't just pass a reference to the + // fetch object at initialization time. Instead, we pass a function that will + // always call the global fetch object. + fetch: (input: string | URL | Request, init?: RequestInit) => + fetch(input, init), + }, + retry, +}); diff --git a/extensions/ql-vscode/src/common/path.ts b/extensions/ql-vscode/src/common/path.ts new file mode 100644 index 00000000000..46ea15f833e --- /dev/null +++ b/extensions/ql-vscode/src/common/path.ts @@ -0,0 +1,29 @@ +// Returns the basename of a path. Trailing directory separators are ignored. +// Works for both POSIX and Windows paths. +export const basename = (path: string): string => { + // If the path contains a forward slash, that means it's a POSIX path. Windows does not allow + // forward slashes in file names. + if (path.includes("/")) { + // Trim trailing slashes + path = path.replace(/\/+$/, ""); + + const index = path.lastIndexOf("/"); + return index === -1 ? path : path.slice(index + 1); + } + + // Otherwise, it's a Windows path. We can use the backslash as a separator. + + // Trim trailing slashes + path = path.replace(/\\+$/, ""); + + const index = path.lastIndexOf("\\"); + return index === -1 ? path : path.slice(index + 1); +}; + +// Returns the extension of a path, including the leading dot. +export const extname = (path: string): string => { + const name = basename(path); + + const index = name.lastIndexOf("."); + return index === -1 ? "" : name.slice(index); +}; diff --git a/extensions/ql-vscode/src/common/ql.ts b/extensions/ql-vscode/src/common/ql.ts new file mode 100644 index 00000000000..eac0102709d --- /dev/null +++ b/extensions/ql-vscode/src/common/ql.ts @@ -0,0 +1,54 @@ +import { dirname, join, parse } from "path"; +import { pathExists } from "fs-extra"; + +export const QLPACK_FILENAMES = ["qlpack.yml", "codeql-pack.yml"]; +export const QLPACK_LOCK_FILENAMES = [ + "qlpack.lock.yml", + "codeql-pack.lock.yml", +]; +export const FALLBACK_QLPACK_FILENAME = QLPACK_FILENAMES[0]; + +/** + * Gets the path to the QL pack file (a qlpack.yml or + * codeql-pack.yml). + * @param packRoot The root of the pack. + * @returns The path to the qlpack file, or undefined if it doesn't exist. + */ +export async function getQlPackFilePath( + packRoot: string, +): Promise { + for (const filename of QLPACK_FILENAMES) { + const path = join(packRoot, filename); + + if (await pathExists(path)) { + return path; + } + } + + return undefined; +} + +/** + * Recursively find the directory containing qlpack.yml or codeql-pack.yml. If + * no such directory is found, the directory containing the query file is returned. + * @param queryFile The query file to start from. + * @returns The path to the pack root or undefined if it doesn't exist. + */ +export async function findPackRoot( + queryFile: string, +): Promise { + let dir = dirname(queryFile); + while (!(await getQlPackFilePath(dir))) { + dir = dirname(dir); + if (isFileSystemRoot(dir)) { + return undefined; + } + } + + return dir; +} + +function isFileSystemRoot(dir: string): boolean { + const pathObj = parse(dir); + return pathObj.root === dir && pathObj.base === ""; +} diff --git a/extensions/ql-vscode/src/common/qlpack-language.ts b/extensions/ql-vscode/src/common/qlpack-language.ts new file mode 100644 index 00000000000..01144b99ad2 --- /dev/null +++ b/extensions/ql-vscode/src/common/qlpack-language.ts @@ -0,0 +1,26 @@ +import { QueryLanguage } from "./query-language"; +import { loadQlpackFile } from "../packaging/qlpack-file-loader"; + +/** + * @param qlpackPath The path to the `qlpack.yml` or `codeql-pack.yml` file. + * @return the language of the given qlpack file, or undefined if the file is + * not a valid qlpack file or does not contain exactly one language. + */ +export async function getQlPackLanguage( + qlpackPath: string, +): Promise { + const qlPack = await loadQlpackFile(qlpackPath); + const dependencies = qlPack?.dependencies; + if (!dependencies) { + return; + } + + const matchingLanguages = Object.values(QueryLanguage).filter( + (language) => `codeql/${language}-all` in dependencies, + ); + if (matchingLanguages.length !== 1) { + return undefined; + } + + return matchingLanguages[0]; +} diff --git a/extensions/ql-vscode/src/common/query-language.ts b/extensions/ql-vscode/src/common/query-language.ts new file mode 100644 index 00000000000..03feb4b1353 --- /dev/null +++ b/extensions/ql-vscode/src/common/query-language.ts @@ -0,0 +1,88 @@ +export enum QueryLanguage { + Actions = "actions", + CSharp = "csharp", + Cpp = "cpp", + Go = "go", + Java = "java", + Javascript = "javascript", + Python = "python", + Ruby = "ruby", + Rust = "rust", + Swift = "swift", +} + +export function getLanguageDisplayName(language: string): string { + switch (language as QueryLanguage) { + case QueryLanguage.Actions: + return "Actions"; + case QueryLanguage.CSharp: + return "C#"; + case QueryLanguage.Cpp: + return "C / C++"; + case QueryLanguage.Go: + return "Go"; + case QueryLanguage.Java: + return "Java"; + case QueryLanguage.Javascript: + return "JavaScript"; + case QueryLanguage.Python: + return "Python"; + case QueryLanguage.Ruby: + return "Ruby"; + case QueryLanguage.Rust: + return "Rust"; + case QueryLanguage.Swift: + return "Swift"; + default: + return language; + } +} + +export const PACKS_BY_QUERY_LANGUAGE = { + [QueryLanguage.Actions]: ["codeql/actions-queries"], + [QueryLanguage.Cpp]: ["codeql/cpp-queries"], + [QueryLanguage.CSharp]: [ + "codeql/csharp-queries", + "codeql/csharp-solorigate-queries", + ], + [QueryLanguage.Go]: ["codeql/go-queries"], + [QueryLanguage.Java]: ["codeql/java-queries"], + [QueryLanguage.Javascript]: ["codeql/javascript-queries"], + [QueryLanguage.Python]: ["codeql/python-queries"], + [QueryLanguage.Ruby]: ["codeql/ruby-queries"], + [QueryLanguage.Rust]: ["codeql/rust-queries"], +}; + +export const dbSchemeToLanguage: Record = { + "semmlecode.javascript.dbscheme": QueryLanguage.Javascript, // This can also be QueryLanguage.Actions + "semmlecode.cpp.dbscheme": QueryLanguage.Cpp, + "semmlecode.dbscheme": QueryLanguage.Java, + "semmlecode.python.dbscheme": QueryLanguage.Python, + "semmlecode.csharp.dbscheme": QueryLanguage.CSharp, + "go.dbscheme": QueryLanguage.Go, + "ruby.dbscheme": QueryLanguage.Ruby, + "rust.dbscheme": QueryLanguage.Rust, + "swift.dbscheme": QueryLanguage.Swift, +}; + +export const languageToDbScheme = Object.entries(dbSchemeToLanguage).reduce( + (acc, [k, v]) => { + acc[v] = k; + return acc; + }, + {} as { [k: string]: string }, +); + +// Actions dbscheme is the same as Javascript dbscheme +languageToDbScheme[QueryLanguage.Actions] = + languageToDbScheme[QueryLanguage.Javascript]; + +export function isQueryLanguage(language: string): language is QueryLanguage { + return Object.values(QueryLanguage).includes(language as QueryLanguage); +} + +export function tryGetQueryLanguage( + language: string, +): QueryLanguage | undefined { + return isQueryLanguage(language) ? language : undefined; +} diff --git a/extensions/ql-vscode/src/common/query-metadata.ts b/extensions/ql-vscode/src/common/query-metadata.ts new file mode 100644 index 00000000000..69c416a4a3e --- /dev/null +++ b/extensions/ql-vscode/src/common/query-metadata.ts @@ -0,0 +1,17 @@ +export const SARIF_RESULTS_QUERY_KINDS = [ + "problem", + "alert", + "path-problem", + "path-alert", +]; + +/** + * Returns whether this query kind supports producing SARIF results. + */ +export function isSarifResultsQueryKind(kind: string | undefined): boolean { + if (!kind) { + return false; + } + + return SARIF_RESULTS_QUERY_KINDS.includes(kind); +} diff --git a/extensions/ql-vscode/src/common/raw-result-types.ts b/extensions/ql-vscode/src/common/raw-result-types.ts new file mode 100644 index 00000000000..4b5a03e243d --- /dev/null +++ b/extensions/ql-vscode/src/common/raw-result-types.ts @@ -0,0 +1,97 @@ +export enum ColumnKind { + String = "string", + Float = "float", + Integer = "integer", + Boolean = "boolean", + Date = "date", + Entity = "entity", + BigInt = "bigint", +} + +export type Column = { + name?: string; + kind: ColumnKind; +}; + +type UrlValueString = { + type: "string"; + value: string; +}; + +export type UrlValueWholeFileLocation = { + type: "wholeFileLocation"; + uri: string; +}; + +export type UrlValueLineColumnLocation = { + type: "lineColumnLocation"; + uri: string; + startLine: number; + startColumn: number; + endLine: number; + endColumn: number; +}; + +export type UrlValueResolvable = + | UrlValueWholeFileLocation + | UrlValueLineColumnLocation; + +export function isUrlValueResolvable( + value: UrlValue, +): value is UrlValueResolvable { + return ( + value.type === "wholeFileLocation" || value.type === "lineColumnLocation" + ); +} + +export type UrlValue = UrlValueString | UrlValueResolvable; + +export type EntityValue = { + url?: UrlValue; + label?: string; + id?: number; +}; + +type CellValueEntity = { + type: "entity"; + value: EntityValue; +}; + +type CellValueNumber = { + type: "number"; + value: number; +}; + +type CellValueBigInt = { + type: "number"; + value: number; +}; + +type CellValueString = { + type: "string"; + value: string; +}; + +type CellValueBoolean = { + type: "boolean"; + value: boolean; +}; + +export type CellValue = + | CellValueEntity + | CellValueNumber + | CellValueString + | CellValueBoolean + | CellValueBigInt; + +export type Row = CellValue[]; + +export type RawResultSet = { + name: string; + totalRowCount: number; + + columns: Column[]; + rows: Row[]; + + nextPageOffset?: number; +}; diff --git a/extensions/ql-vscode/src/common/readonly.ts b/extensions/ql-vscode/src/common/readonly.ts new file mode 100644 index 00000000000..e202bea52bd --- /dev/null +++ b/extensions/ql-vscode/src/common/readonly.ts @@ -0,0 +1,15 @@ +export type DeepReadonly = + T extends Array + ? DeepReadonlyArray + : // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + T extends Function + ? T + : T extends object + ? DeepReadonlyObject + : T; + +type DeepReadonlyArray = ReadonlyArray>; + +type DeepReadonlyObject = { + readonly [P in keyof T]: DeepReadonly; +}; diff --git a/extensions/ql-vscode/src/common/sarif-parser.ts b/extensions/ql-vscode/src/common/sarif-parser.ts new file mode 100644 index 00000000000..7221bc13144 --- /dev/null +++ b/extensions/ql-vscode/src/common/sarif-parser.ts @@ -0,0 +1,64 @@ +import type { Log } from "sarif"; +import { createReadStream } from "fs-extra"; +import { connectTo } from "stream-json/Assembler"; +import { getErrorMessage } from "./helpers-pure"; +import { withParser } from "stream-json/filters/Ignore"; + +export async function sarifParser( + interpretedResultsPath: string, +): Promise { + try { + // Parse the SARIF file into token streams, filtering out some of the larger subtrees that we + // don't need. + const pipeline = createReadStream(interpretedResultsPath).pipe( + withParser({ + // We don't need to run's `artifacts` property, nor the driver's `notifications` property. + filter: /^runs\.\d+\.(artifacts|tool\.driver\.notifications)/, + }), + ); + + // Creates JavaScript objects from the token stream + const asm = connectTo(pipeline); + + // Returns a constructed Log object with the results of an empty array if no results were found. + // If the parser fails for any reason, it will reject the promise. + return await new Promise((resolve, reject) => { + let alreadyDone = false; + pipeline.on("error", (error) => { + reject(error); + }); + + // If the parser pipeline completes before the assembler, we've reached end of file and have not found any results. + pipeline.on("end", () => { + if (!alreadyDone) { + reject( + new Error( + "Invalid SARIF file: expecting at least one run with result.", + ), + ); + } + }); + + asm.on("done", (asm) => { + const log = asm.current; + + // Do some trivial validation. This isn't a full validation of the SARIF file, but it's at + // least enough to ensure that we're not trying to parse complete garbage later. + if (log.runs === undefined || log.runs.length < 1) { + reject( + new Error( + "Invalid SARIF file: expecting at least one run with result.", + ), + ); + } + + resolve(log); + alreadyDone = true; + }); + }); + } catch (e) { + throw new Error( + `Parsing output of interpretation failed: ${getErrorMessage(e)}`, + ); + } +} diff --git a/extensions/ql-vscode/src/common/sarif-utils.ts b/extensions/ql-vscode/src/common/sarif-utils.ts new file mode 100644 index 00000000000..95b60cbb0cb --- /dev/null +++ b/extensions/ql-vscode/src/common/sarif-utils.ts @@ -0,0 +1,303 @@ +import type { Location, Region, Result } from "sarif"; +import type { HighlightedRegion } from "../variant-analysis/shared/analysis-result"; +import type { UrlValueResolvable } from "./raw-result-types"; +import { isEmptyPath } from "./bqrs-utils"; + +export interface SarifLink { + dest: number; + text: string; +} + +// The type of a result that has no associated location. +// hint is a string intended for display to the user +// that explains why there is no location. +interface NoLocation { + hint: string; +} + +type ParsedSarifLocation = + | (UrlValueResolvable & { + userVisibleFile: string; + }) + // Resolvable locations have a `uri` field, but it will sometimes include + // a source location prefix, which contains build-specific information the user + // doesn't really need to see. We ensure that `userVisibleFile` will not contain + // that, and is appropriate for display in the UI. + | NoLocation; + +type SarifMessageComponent = string | SarifLink; + +/** + * Unescape "[", "]" and "\\" like in sarif plain text messages + */ +export function unescapeSarifText(message: string): string { + return message + .replace(/\\\[/g, "[") + .replace(/\\\]/g, "]") + .replace(/\\\\/g, "\\"); +} + +export function parseSarifPlainTextMessage( + message: string, +): SarifMessageComponent[] { + const results: SarifMessageComponent[] = []; + + // We want something like "[linkText](4)", except that "[" and "]" may be escaped. The lookbehind asserts + // that the initial [ is not escaped. Then we parse a link text with "[" and "]" escaped. Then we parse the numerical target. + // Technically we could have any uri in the target but we don't output that yet. + // The possibility of escaping outside the link is not mentioned in the sarif spec but we always output sartif this way. + const linkRegex = + /(?<=(?([^\\\][]|\\\\|\\\]|\\\[)*)\]\((?[0-9]+)\)/g; + let result: RegExpExecArray | null; + let curIndex = 0; + while ((result = linkRegex.exec(message)) !== null) { + results.push(unescapeSarifText(message.substring(curIndex, result.index))); + const linkText = result.groups!["linkText"]; + const linkTarget = +result.groups!["linkTarget"]; + results.push({ dest: linkTarget, text: unescapeSarifText(linkText) }); + curIndex = result.index + result[0].length; + } + results.push(unescapeSarifText(message.substring(curIndex, message.length))); + return results; +} + +/** + * Computes a path normalized to reflect conventional normalization + * of windows paths into zip archive paths. + * @param sourceLocationPrefix The source location prefix of a database. May be + * unix style `/foo/bar/baz` or windows-style `C:\foo\bar\baz`. + * @param sarifRelativeUri A uri relative to sourceLocationPrefix. + * + * @returns A URI string that is valid for the `.file` field of a `FivePartLocation`: + * directory separators are normalized, but drive letters `C:` may appear. + */ +export function getPathRelativeToSourceLocationPrefix( + sourceLocationPrefix: string, + sarifRelativeUri: string, +) { + // convert a platform specific path into encoded path uri segments + // need to be careful about drive letters and ensure that there + // is a starting '/' + let prefix = ""; + if (sourceLocationPrefix[1] === ":") { + // assume this is a windows drive separator + prefix = sourceLocationPrefix.substring(0, 2); + sourceLocationPrefix = sourceLocationPrefix.substring(2); + } + const normalizedSourceLocationPrefix = + prefix + + sourceLocationPrefix + .replace(/\\/g, "/") + .split("/") + .map(encodeURIComponent) + .join("/"); + const slashPrefix = normalizedSourceLocationPrefix.startsWith("/") ? "" : "/"; + return `file:${ + slashPrefix + normalizedSourceLocationPrefix + }/${sarifRelativeUri}`; +} + +/** + * + * @param loc specifies the database-relative location of the source location + * @param sourceLocationPrefix a file path (usually a full path) to the database containing the source location. + */ +export function parseSarifLocation( + loc: Location, + sourceLocationPrefix: string, +): ParsedSarifLocation { + const physicalLocation = loc.physicalLocation; + if (physicalLocation === undefined) { + return { hint: "no physical location" }; + } + if (physicalLocation.artifactLocation === undefined) { + return { hint: "no artifact location" }; + } + if (physicalLocation.artifactLocation.uri === undefined) { + return { hint: "artifact location has no uri" }; + } + if (isEmptyPath(physicalLocation.artifactLocation.uri)) { + return { hint: "artifact location has empty uri" }; + } + + // This is not necessarily really an absolute uri; it could either be a + // file uri or a relative uri. + const uri = physicalLocation.artifactLocation.uri; + + const fileUriRegex = /^file:/; + const hasFilePrefix = uri.match(fileUriRegex); + const effectiveLocation = hasFilePrefix + ? uri + : getPathRelativeToSourceLocationPrefix(sourceLocationPrefix, uri); + const userVisibleFile = decodeURIComponent( + hasFilePrefix ? uri.replace(fileUriRegex, "") : uri, + ); + + if (physicalLocation.region === undefined) { + // If the region property is absent, the physicalLocation object refers to the entire file. + // Source: https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Toc16012638. + return { + type: "wholeFileLocation", + uri: effectiveLocation, + userVisibleFile, + } as ParsedSarifLocation; + } else { + const region = parseSarifRegion(physicalLocation.region); + + return { + type: "lineColumnLocation", + uri: effectiveLocation, + userVisibleFile, + ...region, + }; + } +} + +export function parseSarifRegion(region: Region): { + startLine: number; + endLine: number; + startColumn: number; + endColumn: number; +} { + // The SARIF we're given should have a startLine, but we + // fall back to 1, just in case something has gone wrong. + const startLine = region.startLine ?? 1; + + // These defaults are from SARIF 2.1.0 spec, section 3.30.2, "Text Regions" + // https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Ref493492556 + const endLine = region.endLine === undefined ? startLine : region.endLine; + const startColumn = region.startColumn === undefined ? 1 : region.startColumn; + + // Our tools should always supply `endColumn` field, which is fortunate, since + // the SARIF spec says that it defaults to the end of the line, whose + // length we don't know at this point in the code. We fall back to 1, + // just in case something has gone wrong. + // + // It is off by one with respect to the way vscode counts columns in selections. + const endColumn = (region.endColumn ?? 1) - 1; + + return { + startLine, + startColumn, + endLine, + endColumn, + }; +} + +export function isNoLocation(loc: ParsedSarifLocation): loc is NoLocation { + return "hint" in loc; +} + +// Some helpers for highlighting specific regions from a SARIF code snippet + +/** + * Checks whether a particular line (determined by its line number in the original file) + * is part of the highlighted region of a SARIF code snippet. + */ +export function shouldHighlightLine( + lineNumber: number, + highlightedRegion: HighlightedRegion, +): boolean { + if (lineNumber < highlightedRegion.startLine) { + return false; + } + + if (highlightedRegion.endLine === undefined) { + return lineNumber === highlightedRegion.startLine; + } + + return lineNumber <= highlightedRegion.endLine; +} + +/** + * A line of code split into: plain text before the highlighted section, the highlighted + * text itself, and plain text after the highlighted section. + */ +interface PartiallyHighlightedLine { + plainSection1: string; + highlightedSection: string; + plainSection2: string; +} + +/** + * Splits a line of code into the highlighted and non-highlighted sections. + */ +export function parseHighlightedLine( + line: string, + lineNumber: number, + highlightedRegion: HighlightedRegion, +): PartiallyHighlightedLine { + const isSingleLineHighlight = highlightedRegion.endLine === undefined; + const isFirstHighlightedLine = lineNumber === highlightedRegion.startLine; + const isLastHighlightedLine = lineNumber === highlightedRegion.endLine; + + const highlightStartColumn = isSingleLineHighlight + ? highlightedRegion.startColumn + : isFirstHighlightedLine + ? highlightedRegion.startColumn + : 0; + + const highlightEndColumn = isSingleLineHighlight + ? highlightedRegion.endColumn + : isLastHighlightedLine + ? highlightedRegion.endColumn + : line.length + 1; + + const plainSection1 = line.substring(0, highlightStartColumn - 1); + const highlightedSection = line.substring( + highlightStartColumn - 1, + highlightEndColumn - 1, + ); + const plainSection2 = line.substring(highlightEndColumn - 1, line.length); + + return { plainSection1, highlightedSection, plainSection2 }; +} + +/** + * Normalizes a file URI to a plain path for comparison purposes. + * Strips the `file:` scheme prefix and decodes URI components. + */ +export function normalizeFileUri(uri: string): string { + try { + const path = uri.replace(/^file:\/*/, "/"); + return decodeURIComponent(path); + } catch { + return uri.replace(/^file:\/*/, "/"); + } +} + +interface ParsedResultLocation { + uri: string; + startLine?: number; + endLine?: number; +} + +/** + * Extracts all locations from a SARIF result, including relatedLocations. + */ +export function getLocationsFromSarifResult( + result: Result, + sourceLocationPrefix: string, +): ParsedResultLocation[] { + const sarifLocations: Location[] = [ + ...(result.locations ?? []), + ...(result.relatedLocations ?? []), + ]; + const parsed: ParsedResultLocation[] = []; + for (const loc of sarifLocations) { + const p = parseSarifLocation(loc, sourceLocationPrefix); + if ("hint" in p) { + continue; + } + if (p.type === "wholeFileLocation") { + parsed.push({ uri: p.uri }); + } else if (p.type === "lineColumnLocation") { + parsed.push({ + uri: p.uri, + startLine: p.startLine, + endLine: p.endLine, + }); + } + } + return parsed; +} diff --git a/extensions/ql-vscode/src/common/short-paths.ts b/extensions/ql-vscode/src/common/short-paths.ts new file mode 100644 index 00000000000..3f6698d7ec6 --- /dev/null +++ b/extensions/ql-vscode/src/common/short-paths.ts @@ -0,0 +1,178 @@ +import { arch, platform } from "os"; +import { basename, dirname, join, normalize, resolve } from "path"; +import { lstat, readdir } from "fs/promises"; +import type { BaseLogger } from "./logging"; +import type { KoffiFunction } from "koffi"; +import { getErrorMessage } from "./helpers-pure"; + +/** + * Expands a path that potentially contains 8.3 short names (e.g. "C:\PROGRA~1" instead of "C:\Program Files"). + * + * See https://en.wikipedia.org/wiki/8.3_filename if you're not familiar with Windows 8.3 short names. + * + * @param shortPath The path to expand. + * @returns A normalized, absolute path, with any short components expanded. + */ +export async function expandShortPaths( + shortPath: string, + logger: BaseLogger, +): Promise { + const absoluteShortPath = normalize(resolve(shortPath)); + if (platform() !== "win32") { + // POSIX doesn't have short paths. + return absoluteShortPath; + } + + void logger.log(`Expanding short paths in: ${absoluteShortPath}`); + // A quick check to see if there might be any short components. + // There might be a case where a short component doesn't contain a `~`, but if there is, I haven't + // found it. + // This may find long components that happen to have a '~', but that's OK. + if (absoluteShortPath.indexOf("~") < 0) { + // No short components to expand. + void logger.log(`Skipping due to no short components`); + return absoluteShortPath; + } + + const longPath = await expandShortPathRecursive(absoluteShortPath, logger); + if (longPath.indexOf("~") < 0) { + return longPath; + } + + void logger.log( + "Short path was not resolved to long path, using native method", + ); + + try { + return await expandShortPathNative(absoluteShortPath, logger); + } catch (e) { + void logger.log( + `Failed to expand short path using native method: ${getErrorMessage(e)}`, + ); + return longPath; + } +} + +/** + * Expand a single short path component + * @param dir The absolute path of the directory containing the short path component. + * @param shortBase The shot path component to expand. + * @returns The expanded path component. + */ +async function expandShortPathComponent( + dir: string, + shortBase: string, + logger: BaseLogger, +): Promise { + void logger.log(`Expanding short path component: ${shortBase}`); + + const fullPath = join(dir, shortBase); + + // Use `lstat` instead of `stat` to avoid following symlinks. + const stats = await lstat(fullPath, { bigint: true }); + if (stats.dev === BigInt(0) || stats.ino === BigInt(0)) { + // No inode info, so we won't be able to find this in the directory listing. + void logger.log(`No inode info available. Skipping.`); + return shortBase; + } + void logger.log(`dev/inode: ${stats.dev}/${stats.ino}`); + + try { + // Enumerate the children of the parent directory, and try to find one with the same dev/inode. + const children = await readdir(dir); + for (const child of children) { + void logger.log(`considering child: ${child}`); + try { + const childStats = await lstat(join(dir, child), { bigint: true }); + void logger.log(`child dev/inode: ${childStats.dev}/${childStats.ino}`); + if (childStats.dev === stats.dev && childStats.ino === stats.ino) { + // Found a match. + void logger.log(`Found a match: ${child}`); + return child; + } + } catch (e) { + // Can't read stats for the child, so skip it. + void logger.log(`Error reading stats for child: ${getErrorMessage(e)}`); + } + } + } catch (e) { + // Can't read the directory, so we won't be able to find this in the directory listing. + void logger.log(`Error reading directory: ${getErrorMessage(e)}`); + return shortBase; + } + + void logger.log(`No match found. Returning original.`); + return shortBase; +} + +/** + * Expand the short path components in a path, including those in ancestor directories. + * @param shortPath The path to expand. + * @returns The expanded path. + */ +async function expandShortPathRecursive( + shortPath: string, + logger: BaseLogger, +): Promise { + const shortBase = basename(shortPath); + if (shortBase.length === 0) { + // We've reached the root. + return shortPath; + } + + const dir = await expandShortPathRecursive(dirname(shortPath), logger); + void logger.log(`dir: ${dir}`); + void logger.log(`base: ${shortBase}`); + if (shortBase.indexOf("~") < 0) { + // This component doesn't have a short name, so just append it to the (long) parent. + void logger.log(`Component is not a short name`); + return join(dir, shortBase); + } + + // This component looks like it has a short name, so try to expand it. + const longBase = await expandShortPathComponent(dir, shortBase, logger); + return join(dir, longBase); +} + +let GetLongPathNameW: KoffiFunction | undefined; + +async function expandShortPathNative(shortPath: string, logger: BaseLogger) { + if (platform() !== "win32") { + throw new Error("expandShortPathNative is only supported on Windows"); + } + + if (arch() !== "x64") { + throw new Error( + "expandShortPathNative is only supported on x64 architecture", + ); + } + + if (GetLongPathNameW === undefined) { + // We are using koffi/indirect here to avoid including the native addon for all + // platforms in the bundle since this is only used on Windows. Instead, the + // native addon is included in the Gulpfile. + const koffi = await import("koffi/indirect"); + + const lib = koffi.load("kernel32.dll"); + GetLongPathNameW = lib.func("__stdcall", "GetLongPathNameW", "uint32", [ + "str16", + "str16", + "uint32", + ]); + } + + const MAX_PATH = 32767; + const buffer = Buffer.alloc(MAX_PATH * 2, 0); + + const result = GetLongPathNameW(shortPath, buffer, MAX_PATH); + + if (result === 0) { + throw new Error("Failed to get long path name"); + } + + const longPath = buffer.toString("utf16le", 0, result * 2); + + void logger.log(`Expanded short path ${shortPath} to ${longPath}`); + + return longPath; +} diff --git a/extensions/ql-vscode/src/common/split-stream.ts b/extensions/ql-vscode/src/common/split-stream.ts new file mode 100644 index 00000000000..fd7373a09be --- /dev/null +++ b/extensions/ql-vscode/src/common/split-stream.ts @@ -0,0 +1,125 @@ +import type { Readable } from "stream"; +import { StringDecoder } from "string_decoder"; + +/** + * Buffer to hold state used when splitting a text stream into lines. + */ +export class SplitBuffer { + private readonly decoder = new StringDecoder("utf8"); + private readonly maxSeparatorLength: number; + private buffer = ""; + private searchIndex = 0; + private ended = false; + + constructor(private readonly separators: readonly string[]) { + this.maxSeparatorLength = separators + .map((s) => s.length) + .reduce((a, b) => Math.max(a, b), 0); + } + + /** + * Append new text data to the buffer. + * @param chunk The chunk of data to append. + */ + public addChunk(chunk: Buffer): void { + this.buffer += this.decoder.write(chunk); + } + + /** + * Signal that the end of the input stream has been reached. + */ + public end(): void { + this.buffer += this.decoder.end(); + this.ended = true; + } + + /** + * A version of startsWith that isn't overriden by a broken version of ms-python. + * + * The definition comes from + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + * which is CC0/public domain + * + * See https://github.com/github/vscode-codeql/issues/802 for more context as to why we need it. + */ + private static startsWith( + s: string, + searchString: string, + position: number, + ): boolean { + const pos = position > 0 ? position | 0 : 0; + return s.substring(pos, pos + searchString.length) === searchString; + } + + /** + * Extract the next full line from the buffer, if one is available. + * @returns The text of the next available full line (without the separator), or `undefined` if no + * line is available. + */ + public getNextLine(): string | undefined { + // If we haven't received all of the input yet, don't search too close to the end of the buffer, + // or we could match a separator that's split across two chunks. For example, we could see "\r" + // at the end of the buffer and match that, even though we were about to receive a "\n" right + // after it. + const maxSearchIndex = this.ended + ? this.buffer.length - 1 + : this.buffer.length - this.maxSeparatorLength; + while (this.searchIndex <= maxSearchIndex) { + for (const separator of this.separators) { + if (SplitBuffer.startsWith(this.buffer, separator, this.searchIndex)) { + const line = this.buffer.slice(0, this.searchIndex); + this.buffer = this.buffer.slice(this.searchIndex + separator.length); + this.searchIndex = 0; + return line; + } + } + this.searchIndex++; + } + + if (this.ended && this.buffer.length > 0) { + // If we still have some text left in the buffer, return it as the last line. + const line = this.buffer; + this.buffer = ""; + this.searchIndex = 0; + return line; + } else { + return undefined; + } + } +} + +/** + * Splits a text stream into lines based on a list of valid line separators. + * @param stream The text stream to split. This stream will be fully consumed. + * @param separators The list of strings that act as line separators. + * @returns A sequence of lines (not including separators). + */ +export async function* splitStreamAtSeparators( + stream: Readable, + separators: string[], +): AsyncGenerator { + const buffer = new SplitBuffer(separators); + for await (const chunk of stream) { + buffer.addChunk(chunk); + let line: string | undefined; + do { + line = buffer.getNextLine(); + if (line !== undefined) { + yield line; + } + } while (line !== undefined); + } + buffer.end(); + let line: string | undefined; + do { + line = buffer.getNextLine(); + if (line !== undefined) { + yield line; + } + } while (line !== undefined); +} + +/** + * Standard line endings for splitting human-readable text. + */ +export const LINE_ENDINGS = ["\r\n", "\r", "\n"]; diff --git a/extensions/ql-vscode/src/common/telemetry.ts b/extensions/ql-vscode/src/common/telemetry.ts new file mode 100644 index 00000000000..fb5308360ba --- /dev/null +++ b/extensions/ql-vscode/src/common/telemetry.ts @@ -0,0 +1,10 @@ +import type { RedactableError } from "./errors"; + +export interface AppTelemetry { + sendCommandUsage(name: string, executionTime: number, error?: Error): void; + sendUIInteraction(name: string): void; + sendError( + error: RedactableError, + extraProperties?: { [key: string]: string }, + ): void; +} diff --git a/extensions/ql-vscode/src/common/text-utils.ts b/extensions/ql-vscode/src/common/text-utils.ts new file mode 100644 index 00000000000..dad1f608534 --- /dev/null +++ b/extensions/ql-vscode/src/common/text-utils.ts @@ -0,0 +1,41 @@ +const CONTROL_CODE = "\u001F".codePointAt(0)!; +const CONTROL_LABEL = "\u2400".codePointAt(0)!; + +/** + * Converts the given text so that any non-printable characters are replaced. + * @param label The text to convert. + * @returns The converted text. + */ +export function convertNonPrintableChars(label: string | undefined) { + // If the label was empty, use a placeholder instead, so the link is still clickable. + if (!label) { + return "[empty string]"; + } else if (label.match(/^\s+$/)) { + return `[whitespace: "${label}"]`; + } else { + /** + * If the label contains certain non-printable characters, loop through each + * character and replace it with the cooresponding unicode control label. + */ + const convertedLabelArray: string[] = []; + for (let i = 0; i < label.length; i++) { + const labelCheck = label.codePointAt(i)!; + if (labelCheck <= CONTROL_CODE) { + convertedLabelArray[i] = String.fromCodePoint( + labelCheck + CONTROL_LABEL, + ); + } else { + convertedLabelArray[i] = label.charAt(i); + } + } + return convertedLabelArray.join(""); + } +} + +export function findDuplicateStrings(strings: string[]): string[] { + const dups = strings.filter( + (string, index, strings) => strings.indexOf(string) !== index, + ); + + return [...new Set(dups)]; +} diff --git a/extensions/ql-vscode/src/common/time.ts b/extensions/ql-vscode/src/common/time.ts new file mode 100644 index 00000000000..7c2e4804bc0 --- /dev/null +++ b/extensions/ql-vscode/src/common/time.ts @@ -0,0 +1,111 @@ +/* + * Contains an assortment of helper constants and functions for working with time, dates, and durations. + */ + +const ONE_SECOND_IN_MS = 1000; +const ONE_MINUTE_IN_MS = ONE_SECOND_IN_MS * 60; +export const ONE_HOUR_IN_MS = ONE_MINUTE_IN_MS * 60; +export const TWO_HOURS_IN_MS = ONE_HOUR_IN_MS * 2; +export const THREE_HOURS_IN_MS = ONE_HOUR_IN_MS * 3; +export const ONE_DAY_IN_MS = ONE_HOUR_IN_MS * 24; + +// These are approximations +const ONE_MONTH_IN_MS = ONE_DAY_IN_MS * 30; +const ONE_YEAR_IN_MS = ONE_DAY_IN_MS * 365; + +const durationFormatter = new Intl.RelativeTimeFormat("en", { + numeric: "auto", +}); + +/** + * Converts a number of milliseconds into a human-readable string with units, indicating a relative time in the past or future. + * + * @param relativeTimeMillis The duration in milliseconds. A negative number indicates a duration in the past. And a positive number is + * the future. + * @returns A humanized duration. For example, "in 2 minutes", "2 minutes ago", "yesterday", or "tomorrow". + */ +export function humanizeRelativeTime(relativeTimeMillis?: number) { + if (relativeTimeMillis === undefined) { + return ""; + } + + // If the time is in the past, we need -3_600_035 to be formatted as "1 hour ago" instead of "2 hours ago" + const round = relativeTimeMillis < 0 ? Math.ceil : Math.floor; + + if (Math.abs(relativeTimeMillis) < ONE_HOUR_IN_MS) { + return durationFormatter.format( + round(relativeTimeMillis / ONE_MINUTE_IN_MS), + "minute", + ); + } else if (Math.abs(relativeTimeMillis) < ONE_DAY_IN_MS) { + return durationFormatter.format( + round(relativeTimeMillis / ONE_HOUR_IN_MS), + "hour", + ); + } else if (Math.abs(relativeTimeMillis) < ONE_MONTH_IN_MS) { + return durationFormatter.format( + round(relativeTimeMillis / ONE_DAY_IN_MS), + "day", + ); + } else if (Math.abs(relativeTimeMillis) < ONE_YEAR_IN_MS) { + return durationFormatter.format( + round(relativeTimeMillis / ONE_MONTH_IN_MS), + "month", + ); + } else { + return durationFormatter.format( + round(relativeTimeMillis / ONE_YEAR_IN_MS), + "year", + ); + } +} + +/** + * Converts a number of milliseconds into a human-readable string with units, indicating an amount of time. + * Negative numbers have no meaning and are considered to be "Less than a second". + * + * @param millis The number of milliseconds to convert. + * @returns A humanized duration. For example, "2 seconds", "2 minutes", "2 hours", "2 days", or "2 months". + */ +export function humanizeUnit(millis?: number): string { + // assume a blank or empty string is a zero + // assume anything less than 0 is a zero + if (!millis || millis < ONE_SECOND_IN_MS) { + return "Less than a second"; + } + let unit: string; + let unitDiff: number; + if (millis < ONE_MINUTE_IN_MS) { + unit = "second"; + unitDiff = Math.floor(millis / ONE_SECOND_IN_MS); + } else if (millis < ONE_HOUR_IN_MS) { + unit = "minute"; + unitDiff = Math.floor(millis / ONE_MINUTE_IN_MS); + } else if (millis < ONE_DAY_IN_MS) { + unit = "hour"; + unitDiff = Math.floor(millis / ONE_HOUR_IN_MS); + } else if (millis < ONE_MONTH_IN_MS) { + unit = "day"; + unitDiff = Math.floor(millis / ONE_DAY_IN_MS); + } else if (millis < ONE_YEAR_IN_MS) { + unit = "month"; + unitDiff = Math.floor(millis / ONE_MONTH_IN_MS); + } else { + unit = "year"; + unitDiff = Math.floor(millis / ONE_YEAR_IN_MS); + } + + return createFormatter(unit).format(unitDiff); +} + +function createFormatter(unit: string) { + return Intl.NumberFormat("en-US", { + style: "unit", + unit, + unitDisplay: "long", + }); +} + +export async function sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/extensions/ql-vscode/src/common/unzip-concurrently.ts b/extensions/ql-vscode/src/common/unzip-concurrently.ts new file mode 100644 index 00000000000..2a8136a53d3 --- /dev/null +++ b/extensions/ql-vscode/src/common/unzip-concurrently.ts @@ -0,0 +1,23 @@ +import { availableParallelism } from "os"; +import type { UnzipProgressCallback } from "./unzip"; +import { unzipToDirectory } from "./unzip"; +import PQueue from "p-queue"; + +export async function unzipToDirectoryConcurrently( + archivePath: string, + destinationPath: string, + progress?: UnzipProgressCallback, +): Promise { + const queue = new PQueue({ + concurrency: availableParallelism(), + }); + + return unzipToDirectory( + archivePath, + destinationPath, + progress, + async (tasks) => { + await queue.addAll(tasks); + }, + ); +} diff --git a/extensions/ql-vscode/src/common/unzip.ts b/extensions/ql-vscode/src/common/unzip.ts new file mode 100644 index 00000000000..9a35eedad38 --- /dev/null +++ b/extensions/ql-vscode/src/common/unzip.ts @@ -0,0 +1,265 @@ +import type { Entry as ZipEntry, Options as ZipOptions, ZipFile } from "yauzl"; +import { open } from "yauzl"; +import type { Readable } from "stream"; +import { Transform } from "stream"; +import { dirname, join } from "path"; +import type { WriteStream } from "fs"; +import { createWriteStream, ensureDir } from "fs-extra"; +import { asError } from "./helpers-pure"; + +// We can't use promisify because it picks up the wrong overload. +export function openZip( + path: string, + options: ZipOptions = {}, +): Promise { + return new Promise((resolve, reject) => { + open(path, options, (err, zipFile) => { + if (err) { + reject(err); + return; + } + + resolve(zipFile); + }); + }); +} + +export function excludeDirectories(entries: ZipEntry[]): ZipEntry[] { + return entries.filter((entry) => !/\/$/.test(entry.fileName)); +} + +function calculateTotalUncompressedByteSize(entries: ZipEntry[]): number { + return entries.reduce((total, entry) => total + entry.uncompressedSize, 0); +} + +export function readZipEntries(zipFile: ZipFile): Promise { + return new Promise((resolve, reject) => { + const files: ZipEntry[] = []; + + zipFile.readEntry(); + zipFile.on("entry", (entry: ZipEntry) => { + files.push(entry); + + zipFile.readEntry(); + }); + + zipFile.on("end", () => { + resolve(files); + }); + + zipFile.on("error", (err) => { + reject(asError(err)); + }); + }); +} + +function openZipReadStream( + zipFile: ZipFile, + entry: ZipEntry, +): Promise { + return new Promise((resolve, reject) => { + zipFile.openReadStream(entry, (err, readStream) => { + if (err) { + reject(err); + return; + } + + resolve(readStream); + }); + }); +} + +export async function openZipBuffer( + zipFile: ZipFile, + entry: ZipEntry, +): Promise { + const readable = await openZipReadStream(zipFile, entry); + return new Promise((resolve, reject) => { + const chunks: Buffer[] = []; + readable.on("data", (chunk) => { + chunks.push(chunk); + }); + readable.on("error", (err) => { + reject(err); + }); + readable.on("end", () => { + resolve(Buffer.concat(chunks)); + }); + }); +} + +async function copyStream( + readable: Readable, + writeStream: WriteStream, + bytesExtractedCallback?: (bytesExtracted: number) => void, +): Promise { + return new Promise((resolve, reject) => { + readable.on("error", (err) => { + reject(err); + }); + readable.on("end", () => { + resolve(); + }); + + readable + .pipe( + new Transform({ + transform(chunk, _encoding, callback) { + bytesExtractedCallback?.(chunk.length); + this.push(chunk); + callback(); + }, + }), + ) + .pipe(writeStream); + }); +} + +type UnzipProgress = { + filesExtracted: number; + totalFiles: number; + + bytesExtracted: number; + totalBytes: number; +}; + +export type UnzipProgressCallback = (progress: UnzipProgress) => void; + +/** + * Unzips a single file from a zip archive. + * + * @param zipFile + * @param entry + * @param rootDestinationPath + * @param bytesExtractedCallback Called when bytes are extracted. + * @return The number of bytes extracted. + */ +async function unzipFile( + zipFile: ZipFile, + entry: ZipEntry, + rootDestinationPath: string, + bytesExtractedCallback?: (bytesExtracted: number) => void, +): Promise { + const path = join(rootDestinationPath, entry.fileName); + + if (/\/$/.test(entry.fileName)) { + // Directory file names end with '/' + + await ensureDir(path); + + return 0; + } else { + // Ensure the directory exists + await ensureDir(dirname(path)); + + const readable = await openZipReadStream(zipFile, entry); + + let mode: number | undefined = entry.externalFileAttributes >>> 16; + if (mode <= 0) { + mode = undefined; + } + + const writeStream = createWriteStream(path, { + autoClose: true, + mode, + }); + + await copyStream(readable, writeStream, bytesExtractedCallback); + + return entry.uncompressedSize; + } +} + +/** + * Unzips all files from a zip archive. Please use + * `unzipToDirectoryConcurrently` or `unzipToDirectorySequentially` instead + * of this function. + * + * @param archivePath + * @param destinationPath + * @param taskRunner A function that runs the tasks (either sequentially or concurrently). + * @param progress + */ +export async function unzipToDirectory( + archivePath: string, + destinationPath: string, + progress: UnzipProgressCallback | undefined, + taskRunner: (tasks: Array<() => Promise>) => Promise, +): Promise { + const zipFile = await openZip(archivePath, { + autoClose: false, + strictFileNames: true, + lazyEntries: true, + }); + + try { + const entries = await readZipEntries(zipFile); + + let filesExtracted = 0; + const totalFiles = entries.length; + let bytesExtracted = 0; + const totalBytes = calculateTotalUncompressedByteSize(entries); + + const reportProgress = () => { + progress?.({ + filesExtracted, + totalFiles, + bytesExtracted, + totalBytes, + }); + }; + + reportProgress(); + + await taskRunner( + entries.map((entry) => async () => { + let entryBytesExtracted = 0; + + const totalEntryBytesExtracted = await unzipFile( + zipFile, + entry, + destinationPath, + (thisBytesExtracted) => { + entryBytesExtracted += thisBytesExtracted; + bytesExtracted += thisBytesExtracted; + reportProgress(); + }, + ); + + // Should be 0, but just in case. + bytesExtracted += -entryBytesExtracted + totalEntryBytesExtracted; + + filesExtracted++; + reportProgress(); + }), + ); + } finally { + zipFile.close(); + } +} + +/** + * Sequentially unzips all files from a zip archive. Please use + * `unzipToDirectoryConcurrently` if you can. This function is only + * provided because Jest cannot import `p-queue`. + * + * @param archivePath + * @param destinationPath + * @param progress + */ +export async function unzipToDirectorySequentially( + archivePath: string, + destinationPath: string, + progress?: UnzipProgressCallback, +): Promise { + return unzipToDirectory( + archivePath, + destinationPath, + progress, + async (tasks) => { + for (const task of tasks) { + await task(); + } + }, + ); +} diff --git a/extensions/ql-vscode/src/common/value-result.ts b/extensions/ql-vscode/src/common/value-result.ts new file mode 100644 index 00000000000..8d42490be07 --- /dev/null +++ b/extensions/ql-vscode/src/common/value-result.ts @@ -0,0 +1,51 @@ +/** + * Represents a result that can be either a value or some errors. + */ +export class ValueResult { + private constructor( + private readonly errs: TError[], + private readonly val?: TValue, + ) {} + + public static ok(value: TValue): ValueResult { + if (value === undefined) { + throw new Error("Value must be set for successful result"); + } + + return new ValueResult([], value); + } + + public static fail( + errors: TError[], + ): ValueResult { + if (errors.length === 0) { + throw new Error("At least one error must be set for a failed result"); + } + + return new ValueResult(errors, undefined); + } + + public get isOk(): boolean { + return this.errs.length === 0; + } + + public get isFailure(): boolean { + return this.errs.length > 0; + } + + public get errors(): TError[] { + if (!this.errs) { + throw new Error("Cannot get error for successful result"); + } + + return this.errs; + } + + public get value(): TValue { + if (this.val === undefined) { + throw new Error("Cannot get value for unsuccessful result"); + } + + return this.val; + } +} diff --git a/extensions/ql-vscode/src/common/vscode/abstract-webview-view-provider.ts b/extensions/ql-vscode/src/common/vscode/abstract-webview-view-provider.ts new file mode 100644 index 00000000000..37181e5c549 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/abstract-webview-view-provider.ts @@ -0,0 +1,83 @@ +import type { WebviewView, WebviewViewProvider } from "vscode"; +import { Uri } from "vscode"; +import type { WebviewKind, WebviewMessage } from "./webview-html"; +import { getHtmlForWebview } from "./webview-html"; +import type { Disposable } from "../disposable-object"; +import type { App } from "../app"; +import type { DeepReadonly } from "../readonly"; + +export abstract class AbstractWebviewViewProvider< + ToMessage extends WebviewMessage, + FromMessage extends WebviewMessage, +> implements WebviewViewProvider +{ + protected webviewView: WebviewView | undefined = undefined; + private disposables: Disposable[] = []; + + constructor( + protected readonly app: App, + private readonly webviewKind: WebviewKind, + ) {} + + /** + * This is called when a view first becomes visible. This may happen when the view is + * first loaded or when the user hides and then shows a view again. + */ + public resolveWebviewView(webviewView: WebviewView) { + webviewView.webview.options = { + enableScripts: true, + localResourceRoots: [Uri.file(this.app.extensionPath)], + }; + + const html = getHtmlForWebview( + this.app, + webviewView.webview, + this.webviewKind, + { + allowInlineStyles: true, + allowWasmEval: false, + }, + ); + + webviewView.webview.html = html; + + this.webviewView = webviewView; + + webviewView.webview.onDidReceiveMessage(async (msg) => this.onMessage(msg)); + webviewView.onDidDispose(() => this.dispose()); + } + + protected get isShowingView() { + return this.webviewView?.visible ?? false; + } + + protected async postMessage(msg: DeepReadonly): Promise { + await this.webviewView?.webview.postMessage(msg); + } + + protected dispose() { + while (this.disposables.length > 0) { + const disposable = this.disposables.pop()!; + disposable.dispose(); + } + + this.webviewView = undefined; + } + + protected push(obj: T): T { + if (obj !== undefined) { + this.disposables.push(obj); + } + return obj; + } + + protected abstract onMessage(msg: FromMessage): Promise; + + /** + * This is called when a view first becomes visible. This may happen when the view is + * first loaded or when the user hides and then shows a view again. + */ + protected onWebViewLoaded(): void { + // Do nothing by default. + } +} diff --git a/extensions/ql-vscode/src/common/vscode/abstract-webview.ts b/extensions/ql-vscode/src/common/vscode/abstract-webview.ts new file mode 100644 index 00000000000..87c0583af1d --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/abstract-webview.ts @@ -0,0 +1,192 @@ +import type { + WebviewPanel, + ViewColumn, + WebviewPanelOptions, + WebviewOptions, +} from "vscode"; +import { window as Window, Uri } from "vscode"; +import { join } from "path"; + +import type { App } from "../app"; +import type { Disposable } from "../disposable-object"; +import { tmpDir } from "../../tmp-dir"; +import type { WebviewMessage, WebviewKind } from "./webview-html"; +import { getHtmlForWebview } from "./webview-html"; +import type { DeepReadonly } from "../readonly"; +import { runWithErrorHandling } from "./error-handling"; +import { telemetryListener } from "./telemetry"; + +export type WebviewPanelConfig = { + viewId: string; + title: string; + viewColumn: ViewColumn; + view: WebviewKind; + preserveFocus?: boolean; + iconPath?: Uri | { dark: Uri; light: Uri }; + additionalOptions?: WebviewPanelOptions & WebviewOptions; + allowWasmEval?: boolean; +}; + +export abstract class AbstractWebview< + ToMessage extends WebviewMessage, + FromMessage extends WebviewMessage, +> { + protected panel: WebviewPanel | undefined; + protected panelLoaded = false; + protected panelLoadedCallBacks: Array<() => void> = []; + + private panelResolves?: Array<(panel: WebviewPanel) => void>; + + private disposables: Disposable[] = []; + + constructor(protected readonly app: App) {} + + public hidePanel() { + if (this.panel !== undefined) { + this.panel.dispose(); + this.panel = undefined; + } + } + + public async restoreView(panel: WebviewPanel): Promise { + this.panel = panel; + const config = await this.getPanelConfig(); + this.setupPanel(panel, config); + } + + protected get isShowingPanel() { + return !!this.panel; + } + + protected async getPanel(): Promise { + if (this.panel === undefined) { + // This is an async method, so in theory this method can be called concurrently. To ensure that we don't + // create two panels, we use a promise that resolves when the panel is created. This way, if the panel is + // being created, the promise will resolve when it is done. + if (this.panelResolves !== undefined) { + return new Promise((resolve) => { + if (this.panel !== undefined) { + resolve(this.panel); + return; + } + + this.panelResolves?.push(resolve); + }); + } + this.panelResolves = []; + + const config = await this.getPanelConfig(); + + const panel = Window.createWebviewPanel( + config.viewId, + config.title, + { viewColumn: config.viewColumn, preserveFocus: config.preserveFocus }, + { + enableScripts: true, + enableFindWidget: true, + retainContextWhenHidden: true, + ...config.additionalOptions, + localResourceRoots: [ + ...(config.additionalOptions?.localResourceRoots ?? []), + Uri.file(tmpDir.name), + Uri.file(join(this.app.extensionPath, "out")), + ], + }, + ); + this.panel = panel; + + this.panel.iconPath = config.iconPath; + + this.setupPanel(panel, config); + + this.panelResolves.forEach((resolve) => resolve(panel)); + this.panelResolves = undefined; + } + return this.panel; + } + + protected setupPanel(panel: WebviewPanel, config: WebviewPanelConfig): void { + this.push( + panel.onDidDispose(() => { + this.panel = undefined; + this.panelLoaded = false; + this.onPanelDispose(); + this.disposeAll(); + }, null), + ); + + panel.webview.html = getHtmlForWebview( + this.app, + panel.webview, + config.view, + { + allowInlineStyles: true, + allowWasmEval: !!config.allowWasmEval, + }, + ); + this.push( + panel.webview.onDidReceiveMessage( + async (e) => + runWithErrorHandling( + () => this.onMessage(e), + this.app.logger, + telemetryListener, + ), + undefined, + ), + ); + } + + protected abstract getPanelConfig(): + | WebviewPanelConfig + | Promise; + + protected abstract onPanelDispose(): void; + + protected abstract onMessage(msg: FromMessage): Promise; + + protected waitForPanelLoaded(): Promise { + return new Promise((resolve) => { + if (this.panelLoaded) { + resolve(); + } else { + this.panelLoadedCallBacks.push(resolve); + } + }); + } + + protected onWebViewLoaded(): void { + this.panelLoaded = true; + this.panelLoadedCallBacks.forEach((cb) => cb()); + this.panelLoadedCallBacks = []; + } + + protected async postMessage(msg: DeepReadonly): Promise { + const panel = await this.getPanel(); + return panel.webview.postMessage(msg); + } + + public dispose() { + this.panel?.dispose(); + this.disposeAll(); + } + + private disposeAll() { + while (this.disposables.length > 0) { + const disposable = this.disposables.pop()!; + disposable.dispose(); + } + } + + /** + * Adds `obj` to a list of objects to dispose when the panel is disposed. Objects added by `push` are + * disposed in reverse order of being added. + * @param obj The object to take ownership of. + */ + protected push(obj: T): T { + if (obj !== undefined) { + this.disposables.push(obj); + } + return obj; + } +} diff --git a/extensions/ql-vscode/src/common/vscode/archive-filesystem-provider.ts b/extensions/ql-vscode/src/common/vscode/archive-filesystem-provider.ts new file mode 100644 index 00000000000..1ee61468c36 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/archive-filesystem-provider.ts @@ -0,0 +1,395 @@ +import { pathExists } from "fs-extra"; +import type { Entry as ZipEntry, ZipFile } from "yauzl"; +import type { + Event, + ExtensionContext, + FileChangeEvent, + FileStat, + FileSystemProvider, +} from "vscode"; +import { + Disposable, + EventEmitter, + FileSystemError, + FileType, + Uri, + workspace, +} from "vscode"; +import { extLogger } from "../logging/vscode"; +import { + excludeDirectories, + openZip, + openZipBuffer, + readZipEntries, +} from "../unzip"; + +// All path operations in this file must be on paths *within* the zip +// archive. +import { posix } from "path"; +import { DatabaseEventKind } from "../../databases/local-databases/database-events"; +import type { DatabaseManager } from "../../databases/local-databases/database-manager"; + +const path = posix; + +class File implements FileStat { + type: FileType; + ctime: number; + mtime: number; + size: number; + + constructor( + public name: string, + public data: Uint8Array, + ) { + this.type = FileType.File; + this.ctime = Date.now(); + this.mtime = Date.now(); + this.size = data.length; + this.name = name; + } +} + +class Directory implements FileStat { + type: FileType; + ctime: number; + mtime: number; + size: number; + entries: Map = new Map(); + + constructor(public name: string) { + this.type = FileType.Directory; + this.ctime = Date.now(); + this.mtime = Date.now(); + this.size = 0; + } +} + +type Entry = File | Directory; + +/** + * A map containing directory hierarchy information in a convenient form. + * + * For example, if dirMap : DirectoryHierarchyMap, and /foo/bar/baz.c is a file in the + * directory structure being represented, then + * + * dirMap['/foo'] = {'bar': vscode.FileType.Directory} + * dirMap['/foo/bar'] = {'baz': vscode.FileType.File} + */ +type DirectoryHierarchyMap = Map>; + +export type ZipFileReference = { + sourceArchiveZipPath: string; + pathWithinSourceArchive: string; +}; + +/** Encodes a reference to a source file within a zipped source archive into a single URI. */ +export function encodeSourceArchiveUri(ref: ZipFileReference): Uri { + const { sourceArchiveZipPath, pathWithinSourceArchive } = ref; + + // These two paths are put into a single URI with a custom scheme. + // The path and authority components of the URI encode the two paths. + + // The path component of the URI contains both paths, joined by a slash. + let encodedPath = path.join(sourceArchiveZipPath, pathWithinSourceArchive); + + // If a URI contains an authority component, then the path component + // must either be empty or begin with a slash ("/") character. + // (Source: https://tools.ietf.org/html/rfc3986#section-3.3) + // Since we will use an authority component, we add a leading slash if necessary + // (paths on Windows usually start with the drive letter). + let sourceArchiveZipPathStartIndex: number; + if (encodedPath.startsWith("/")) { + sourceArchiveZipPathStartIndex = 0; + } else { + encodedPath = `/${encodedPath}`; + sourceArchiveZipPathStartIndex = 1; + } + + // The authority component of the URI records the 0-based inclusive start and exclusive end index + // of the source archive zip path within the path component of the resulting URI. + // This lets us separate the paths, ignoring the leading slash if we added one. + const sourceArchiveZipPathEndIndex = + sourceArchiveZipPathStartIndex + sourceArchiveZipPath.length; + const authority = `${sourceArchiveZipPathStartIndex}-${sourceArchiveZipPathEndIndex}`; + return Uri.parse(`${zipArchiveScheme}:/`, true).with({ + path: encodedPath, + authority, + }); +} + +/** + * Convenience method to create a codeql-zip-archive with a path to the root + * archive + * + * @param pathToArchive the filesystem path to the root of the archive + */ +export function encodeArchiveBasePath(sourceArchiveZipPath: string) { + return encodeSourceArchiveUri({ + sourceArchiveZipPath, + pathWithinSourceArchive: "", + }); +} + +const sourceArchiveUriAuthorityPattern = /^(\d+)-(\d+)$/; + +class InvalidSourceArchiveUriError extends Error { + constructor(uri: Uri) { + super( + `Can't decode uri ${uri.toString()}: authority should be of the form startIndex-endIndex (where both indices are integers).`, + ); + } +} + +/** Decodes an encoded source archive URI into its corresponding paths. Inverse of `encodeSourceArchiveUri`. */ +export function decodeSourceArchiveUri(uri: Uri): ZipFileReference { + if (!uri.authority) { + // Uri is malformed, but this is recoverable + void extLogger.log( + `Warning: ${new InvalidSourceArchiveUriError(uri).message}`, + ); + return { + pathWithinSourceArchive: "/", + sourceArchiveZipPath: uri.path, + }; + } + const match = sourceArchiveUriAuthorityPattern.exec(uri.authority); + if (match === null) { + throw new InvalidSourceArchiveUriError(uri); + } + const zipPathStartIndex = parseInt(match[1]); + const zipPathEndIndex = parseInt(match[2]); + if (isNaN(zipPathStartIndex) || isNaN(zipPathEndIndex)) { + throw new InvalidSourceArchiveUriError(uri); + } + return { + pathWithinSourceArchive: uri.path.substring(zipPathEndIndex) || "/", + sourceArchiveZipPath: uri.path.substring( + zipPathStartIndex, + zipPathEndIndex, + ), + }; +} + +/** + * Make sure `file` and all of its parent directories are represented in `map`. + */ +function ensureFile(map: DirectoryHierarchyMap, file: string) { + const dirname = path.dirname(file); + if (dirname === ".") { + const error = `Ill-formed path ${file} in zip archive (expected absolute path)`; + void extLogger.log(error); + throw new Error(error); + } + ensureDir(map, dirname); + map.get(dirname)!.set(path.basename(file), FileType.File); +} + +/** + * Make sure `dir` and all of its parent directories are represented in `map`. + */ +function ensureDir(map: DirectoryHierarchyMap, dir: string) { + const parent = path.dirname(dir); + if (!map.has(dir)) { + map.set(dir, new Map()); + if (dir !== parent) { + // not the root directory + ensureDir(map, parent); + map.get(parent)!.set(path.basename(dir), FileType.Directory); + } + } +} + +type Archive = { + zipFile: ZipFile; + entries: ZipEntry[]; + dirMap: DirectoryHierarchyMap; +}; + +async function parse_zip(zipPath: string): Promise { + if (!(await pathExists(zipPath))) { + throw FileSystemError.FileNotFound(zipPath); + } + const zipFile = await openZip(zipPath, { + lazyEntries: true, + autoClose: false, + strictFileNames: true, + }); + + const entries = excludeDirectories(await readZipEntries(zipFile)); + + const archive: Archive = { + zipFile, + entries, + dirMap: new Map(), + }; + + entries.forEach((f) => { + ensureFile(archive.dirMap, path.resolve("/", f.fileName)); + }); + return archive; +} + +export class ArchiveFileSystemProvider implements FileSystemProvider { + private readOnlyError = FileSystemError.NoPermissions( + "write operation attempted, but source archive filesystem is readonly", + ); + private archives: Map> = new Map(); + + private async getArchive(zipPath: string): Promise { + if (!this.archives.has(zipPath)) { + this.archives.set(zipPath, parse_zip(zipPath)); + } + return await this.archives.get(zipPath)!; + } + + root = new Directory(""); + + flushCache(zipPath: string) { + this.archives.delete(zipPath); + } + + // metadata + + async stat(uri: Uri): Promise { + return await this._lookup(uri); + } + + async readDirectory(uri: Uri): Promise> { + const ref = decodeSourceArchiveUri(uri); + const archive = await this.getArchive(ref.sourceArchiveZipPath); + const contents = archive.dirMap.get(ref.pathWithinSourceArchive); + const result = + contents === undefined ? undefined : Array.from(contents.entries()); + if (result === undefined) { + throw FileSystemError.FileNotFound(uri); + } + return result; + } + + // file contents + + async readFile(uri: Uri): Promise { + const data = (await this._lookupAsFile(uri)).data; + if (data) { + return data; + } + throw FileSystemError.FileNotFound(); + } + + // write operations, all disabled + + writeFile( + _uri: Uri, + _content: Uint8Array, + _options: { create: boolean; overwrite: boolean }, + ): void { + throw this.readOnlyError; + } + + rename(_oldUri: Uri, _newUri: Uri, _options: { overwrite: boolean }): void { + throw this.readOnlyError; + } + + delete(_uri: Uri): void { + throw this.readOnlyError; + } + + createDirectory(_uri: Uri): void { + throw this.readOnlyError; + } + + // content lookup + + private async _lookup(uri: Uri): Promise { + const ref = decodeSourceArchiveUri(uri); + const archive = await this.getArchive(ref.sourceArchiveZipPath); + + // this is a path inside the archive, so don't use `.fsPath`, and + // use '/' as path separator throughout + const reqPath = ref.pathWithinSourceArchive; + + const file = archive.entries.find((f) => { + const absolutePath = path.resolve("/", f.fileName); + return ( + absolutePath === reqPath || + absolutePath === path.join("/src_archive", reqPath) + ); + }); + if (file !== undefined) { + const buffer = await openZipBuffer(archive.zipFile, file); + return new File(reqPath, buffer); + } + if (archive.dirMap.has(reqPath)) { + return new Directory(reqPath); + } + throw FileSystemError.FileNotFound( + `uri '${uri.toString()}', interpreted as '${reqPath}' in archive '${ + ref.sourceArchiveZipPath + }'`, + ); + } + + private async _lookupAsFile(uri: Uri): Promise { + const entry = await this._lookup(uri); + if (entry instanceof File) { + return entry; + } + throw FileSystemError.FileIsADirectory(uri); + } + + // file events + + private _emitter = new EventEmitter(); + + readonly onDidChangeFile: Event = this._emitter.event; + + watch(_resource: Uri): Disposable { + // ignore, fires for all changes... + return new Disposable(() => { + /**/ + }); + } +} + +/** + * Custom uri scheme for referring to files inside zip archives stored + * in the filesystem. See `encodeSourceArchiveUri`/`decodeSourceArchiveUri` for + * how these uris are constructed. + * + * (cf. https://www.ietf.org/rfc/rfc2396.txt (Appendix A, page 26) for + * the fact that hyphens are allowed in uri schemes) + */ +export const zipArchiveScheme = "codeql-zip-archive"; + +export function activate(ctx: ExtensionContext, dbm?: DatabaseManager) { + const afsp = new ArchiveFileSystemProvider(); + if (dbm) { + ctx.subscriptions.push( + dbm.onDidChangeDatabaseItem(async ({ kind, item: db }) => { + if (kind === DatabaseEventKind.Remove) { + if (db?.sourceArchive) { + afsp.flushCache(db.sourceArchive.fsPath); + } + } + }), + ); + } + + ctx.subscriptions.push( + // When a file system archive is removed from the workspace, we should + // also remove it from our cache. + workspace.onDidChangeWorkspaceFolders((event) => { + for (const removed of event.removed) { + const zipPath = removed.uri.fsPath; + afsp.flushCache(zipPath); + } + }), + ); + + ctx.subscriptions.push( + workspace.registerFileSystemProvider(zipArchiveScheme, afsp, { + isCaseSensitive: true, + isReadonly: true, + }), + ); +} diff --git a/extensions/ql-vscode/src/common/vscode/authentication.ts b/extensions/ql-vscode/src/common/vscode/authentication.ts new file mode 100644 index 00000000000..b78b8a4888a --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/authentication.ts @@ -0,0 +1,60 @@ +import { authentication } from "vscode"; +import type { Octokit } from "@octokit/rest"; +import type { Credentials } from "../authentication"; +import { AppOctokit } from "../octokit"; +import { hasGhecDrUri } from "../../config"; +import { getOctokitBaseUrl } from "./octokit"; + +// We need 'repo' scope for triggering workflows, 'gist' scope for exporting results to Gist, +// and 'read:packages' for reading private CodeQL packages. +// For a comprehensive list of scopes, see: +// https://docs.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps +const SCOPES = ["repo", "gist", "read:packages"]; + +/** + * Handles authentication to GitHub, using the VS Code [authentication API](https://code.visualstudio.com/api/references/vscode-api#authentication). + */ +export class VSCodeCredentials implements Credentials { + /** + * Creates or returns an instance of Octokit. The returned instance should + * not be stored and reused, as it may become out-of-date with the current + * authentication session. + * + * @returns An instance of Octokit. + */ + async getOctokit(): Promise { + const accessToken = await this.getAccessToken(); + + return new AppOctokit({ + auth: accessToken, + baseUrl: getOctokitBaseUrl(), + }); + } + + async getAccessToken(): Promise { + const session = await authentication.getSession( + this.authProviderId, + SCOPES, + { createIfNone: true }, + ); + + return session.accessToken; + } + + async getExistingAccessToken(): Promise { + const session = await authentication.getSession( + this.authProviderId, + SCOPES, + { createIfNone: false }, + ); + + return session?.accessToken; + } + + public get authProviderId(): string { + if (hasGhecDrUri()) { + return "github-enterprise"; + } + return "github"; + } +} diff --git a/extensions/ql-vscode/src/common/vscode/commands.ts b/extensions/ql-vscode/src/common/vscode/commands.ts new file mode 100644 index 00000000000..be6d57ca3c9 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/commands.ts @@ -0,0 +1,65 @@ +import type { Disposable } from "vscode"; +import { commands } from "vscode"; +import type { CommandFunction } from "../../packages/commands"; +import { CommandManager } from "../../packages/commands"; +import type { NotificationLogger } from "../logging"; +import { extLogger } from "../logging/vscode"; +import { telemetryListener } from "./telemetry"; +import type { AppTelemetry } from "../telemetry"; +import { runWithErrorHandling } from "./error-handling"; + +/** + * Create a command manager for VSCode, wrapping registerCommandWithErrorHandling + * and vscode.executeCommand. + */ +export function createVSCodeCommandManager< + Commands extends Record, +>( + logger?: NotificationLogger, + telemetry?: AppTelemetry, +): CommandManager { + return new CommandManager((commandId, task) => { + return registerCommandWithErrorHandling(commandId, task, logger, telemetry); + }, wrapExecuteCommand); +} + +/** + * A wrapper for command registration. This wrapper adds uniform error handling for commands. + * + * @param commandId The ID of the command to register. + * @param task The task to run. It is passed directly to `commands.registerCommand`. Any + * arguments to the command handler are passed on to the task. + * @param logger The logger to use for error reporting. + * @param telemetry The telemetry listener to use for error reporting. + */ +export function registerCommandWithErrorHandling< + T extends (...args: unknown[]) => Promise, +>( + commandId: string, + task: T, + logger: NotificationLogger = extLogger, + telemetry: AppTelemetry | undefined = telemetryListener, +): Disposable { + return commands.registerCommand(commandId, async (...args: Parameters) => + runWithErrorHandling(task, logger, telemetry, commandId, ...args), + ); +} + +/** + * wrapExecuteCommand wraps commands.executeCommand to satisfy that the + * type is a Promise. Type script does not seem to be smart enough + * to figure out that `ReturnType` is actually + * a Promise, so we need to add a second layer of wrapping and unwrapping + * (The `Promise, + CommandName extends keyof Commands & string = keyof Commands & string, +>( + commandName: CommandName, + ...args: Parameters +): Promise>> { + return await commands.executeCommand< + Awaited> + >(commandName, ...args); +} diff --git a/extensions/ql-vscode/src/common/vscode/dialog.ts b/extensions/ql-vscode/src/common/vscode/dialog.ts new file mode 100644 index 00000000000..f580ea5f340 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/dialog.ts @@ -0,0 +1,91 @@ +import { window } from "vscode"; + +/** + * Opens a modal dialog for the user to make a yes/no choice. + * + * @param message The message to show. + * @param modal If true (the default), show a modal dialog box, otherwise dialog is non-modal and can + * be closed even if the user does not make a choice. + * @param yesTitle The text in the box indicating the affirmative choice. + * @param noTitle The text in the box indicating the negative choice. + * + * @return + * `true` if the user clicks 'Yes', + * `false` if the user clicks 'No' or cancels the dialog, + * `undefined` if the dialog is closed without the user making a choice. + */ +export async function showBinaryChoiceDialog( + message: string, + modal = true, + yesTitle = "Yes", + noTitle = "No", +): Promise { + const yesItem = { title: yesTitle, isCloseAffordance: false }; + const noItem = { title: noTitle, isCloseAffordance: true }; + const chosenItem = await window.showInformationMessage( + message, + { modal }, + yesItem, + noItem, + ); + if (!chosenItem) { + return undefined; + } + return chosenItem?.title === yesItem.title; +} + +/** + * Show an information message with a customisable action. + * @param message The message to show. + * @param actionMessage The call to action message. + * + * @return `true` if the user clicks the action, `false` if the user cancels the dialog. + */ +export async function showInformationMessageWithAction( + message: string, + actionMessage: string, +): Promise { + const actionItem = { title: actionMessage, isCloseAffordance: false }; + const chosenItem = await window.showInformationMessage(message, actionItem); + return chosenItem === actionItem; +} + +/** + * Opens a modal dialog for the user to make a choice between yes/no/never be asked again. + * + * @param message The message to show. + * @param modal If true (the default), show a modal dialog box, otherwise dialog is non-modal and can + * be closed even if the user does not make a choice. + * @param yesTitle The text in the box indicating the affirmative choice. + * @param noTitle The text in the box indicating the negative choice. + * @param neverTitle The text in the box indicating the opt out choice. + * + * @return + * `Yes` if the user clicks 'Yes', + * `No` if the user clicks 'No' or cancels the dialog, + * `No, and never ask me again` if the user clicks 'No, and never ask me again', + * `undefined` if the dialog is closed without the user making a choice. + */ +export async function showNeverAskAgainDialog( + message: string, + modal = true, + yesTitle = "Yes", + noTitle = "No", + neverAskAgainTitle = "No, and never ask me again", +): Promise { + const yesItem = { title: yesTitle, isCloseAffordance: true }; + const noItem = { title: noTitle, isCloseAffordance: false }; + const neverAskAgainItem = { + title: neverAskAgainTitle, + isCloseAffordance: false, + }; + const chosenItem = await window.showInformationMessage( + message, + { modal }, + yesItem, + noItem, + neverAskAgainItem, + ); + + return chosenItem?.title; +} diff --git a/extensions/ql-vscode/src/common/vscode/environment-context.ts b/extensions/ql-vscode/src/common/vscode/environment-context.ts new file mode 100644 index 00000000000..75f17703079 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/environment-context.ts @@ -0,0 +1,8 @@ +import { env } from "vscode"; +import type { EnvironmentContext } from "../app"; + +export class AppEnvironmentContext implements EnvironmentContext { + public get language(): string { + return env.language; + } +} diff --git a/extensions/ql-vscode/src/common/vscode/error-handling.ts b/extensions/ql-vscode/src/common/vscode/error-handling.ts new file mode 100644 index 00000000000..9074244742c --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/error-handling.ts @@ -0,0 +1,81 @@ +import { + showAndLogWarningMessage, + showAndLogExceptionWithTelemetry, +} from "../logging"; +import type { NotificationLogger } from "../logging"; +import { extLogger } from "../logging/vscode"; +import type { AppTelemetry } from "../telemetry"; +import { telemetryListener } from "./telemetry"; +import { asError, getErrorMessage } from "../helpers-pure"; +import { redactableError } from "../errors"; +import { UserCancellationException } from "./progress"; +import { CliError } from "../../codeql-cli/cli-errors"; +import { EOL } from "os"; + +/** + * Executes a task with error handling. It provides a uniform way to handle errors. + * + * @template T - A function type that takes an unknown number of arguments and returns a Promise. + * @param {T} task - The task to be executed. + * @param {NotificationLogger} [logger=extLogger] - The logger to use for error reporting. + * @param {AppTelemetry | undefined} [telemetry=telemetryListener] - The telemetry listener to use for error reporting. + * @param {string} [commandId] - The optional command id associated with the task. + * @param {...unknown} args - The arguments to be passed to the task. + * @returns {Promise} The result of the task, or undefined if an error occurred. + * @throws {Error} If an error occurs during the execution of the task. + */ +export async function runWithErrorHandling< + T extends (...args: unknown[]) => Promise, +>( + task: T, + logger: NotificationLogger = extLogger, + telemetry: AppTelemetry | undefined = telemetryListener, + commandId?: string, + ...args: unknown[] +): Promise { + const startTime = Date.now(); + let error: Error | undefined; + + try { + return await task(...args); + } catch (e) { + error = asError(e); + const errorMessage = redactableError(error)`${ + getErrorMessage(e) || e + }${commandId ? ` (${commandId})` : ""}`; + + const extraTelemetryProperties = commandId + ? { command: commandId } + : undefined; + + if (e instanceof UserCancellationException) { + // User has cancelled this action manually + if (e.silent) { + void logger.log(errorMessage.fullMessage); + } else { + void showAndLogWarningMessage(logger, errorMessage.fullMessage); + } + } else if (e instanceof CliError) { + const fullMessage = `${e.commandDescription} failed with args:${EOL} ${e.commandArgs.join(" ")}${EOL}${ + e.stderr ?? e.cause + }`; + void showAndLogExceptionWithTelemetry(logger, telemetry, errorMessage, { + fullMessage, + extraTelemetryProperties, + }); + } else { + // Include the full stack in the error log only. + const fullMessage = errorMessage.fullMessageWithStack; + void showAndLogExceptionWithTelemetry(logger, telemetry, errorMessage, { + fullMessage, + extraTelemetryProperties, + }); + } + return undefined; + } finally { + if (commandId) { + const executionTime = Date.now() - startTime; + telemetryListener?.sendCommandUsage(commandId, executionTime, error); + } + } +} diff --git a/extensions/ql-vscode/src/common/vscode/events.ts b/extensions/ql-vscode/src/common/vscode/events.ts new file mode 100644 index 00000000000..65e84f1cf75 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/events.ts @@ -0,0 +1,6 @@ +import { EventEmitter } from "vscode"; +import type { AppEventEmitter } from "../events"; + +export class VSCodeAppEventEmitter + extends EventEmitter + implements AppEventEmitter {} diff --git a/extensions/ql-vscode/src/common/vscode/extension-app.ts b/extensions/ql-vscode/src/common/vscode/extension-app.ts new file mode 100644 index 00000000000..ef1c05e4b7e --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/extension-app.ts @@ -0,0 +1,76 @@ +import type { ExtensionContext } from "vscode"; +import { ExtensionMode } from "vscode"; +import { VSCodeCredentials } from "./authentication"; +import type { Disposable } from "../disposable-object"; +import type { App, EnvironmentContext } from "../app"; +import { AppMode } from "../app"; +import type { AppEventEmitter } from "../events"; +import type { NotificationLogger } from "../logging"; +import { extLogger, queryServerLogger } from "../logging/vscode"; +import type { Memento } from "../memento"; +import { VSCodeAppEventEmitter } from "./events"; +import type { AppCommandManager, QueryServerCommandManager } from "../commands"; +import { createVSCodeCommandManager } from "./commands"; +import { AppEnvironmentContext } from "./environment-context"; +import type { AppTelemetry } from "../telemetry"; +import { telemetryListener } from "./telemetry"; + +export class ExtensionApp implements App { + public readonly credentials: VSCodeCredentials; + public readonly commands: AppCommandManager; + public readonly queryServerCommands: QueryServerCommandManager; + + public constructor(public readonly extensionContext: ExtensionContext) { + this.credentials = new VSCodeCredentials(); + this.commands = createVSCodeCommandManager(); + this.queryServerCommands = createVSCodeCommandManager(queryServerLogger); + extensionContext.subscriptions.push(this.commands); + } + + public get extensionPath(): string { + return this.extensionContext.extensionPath; + } + + public get globalStoragePath(): string { + return this.extensionContext.globalStorageUri.fsPath; + } + + public get workspaceStoragePath(): string | undefined { + return this.extensionContext.storageUri?.fsPath; + } + + public get workspaceState(): Memento { + return this.extensionContext.workspaceState; + } + + public get subscriptions(): Disposable[] { + return this.extensionContext.subscriptions; + } + + public get mode(): AppMode { + switch (this.extensionContext.extensionMode) { + case ExtensionMode.Development: + return AppMode.Development; + case ExtensionMode.Test: + return AppMode.Test; + default: + return AppMode.Production; + } + } + + public get logger(): NotificationLogger { + return extLogger; + } + + public get telemetry(): AppTelemetry | undefined { + return telemetryListener; + } + + public createEventEmitter(): AppEventEmitter { + return new VSCodeAppEventEmitter(); + } + + public get environment(): EnvironmentContext { + return new AppEnvironmentContext(); + } +} diff --git a/extensions/ql-vscode/src/common/vscode/extension/git.ts b/extensions/ql-vscode/src/common/vscode/extension/git.ts new file mode 100644 index 00000000000..489bfc01d4e --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/extension/git.ts @@ -0,0 +1,436 @@ +// From https://github.com/microsoft/vscode/blob/5e27a2845a87be4b4bede3e51073f94609445e51/extensions/git/src/api/git.d.ts + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import type { + Uri, + Event, + Disposable, + ProviderResult, + Command, + CancellationToken, + ThemeIcon, +} from "vscode"; + +interface Git { + readonly path: string; +} + +interface InputBox { + value: string; +} + +const enum ForcePushMode { + Force, + ForceWithLease, + ForceWithLeaseIfIncludes, +} + +const enum RefType { + Head, + RemoteHead, + Tag, +} + +interface Ref { + readonly type: RefType; + readonly name?: string; + readonly commit?: string; + readonly remote?: string; +} + +interface UpstreamRef { + readonly remote: string; + readonly name: string; +} + +interface Branch extends Ref { + readonly upstream?: UpstreamRef; + readonly ahead?: number; + readonly behind?: number; +} + +interface Commit { + readonly hash: string; + readonly message: string; + readonly parents: string[]; + readonly authorDate?: Date; + readonly authorName?: string; + readonly authorEmail?: string; + readonly commitDate?: Date; +} + +interface Submodule { + readonly name: string; + readonly path: string; + readonly url: string; +} + +interface Remote { + readonly name: string; + readonly fetchUrl?: string; + readonly pushUrl?: string; + readonly isReadOnly: boolean; +} + +const enum Status { + INDEX_MODIFIED, + INDEX_ADDED, + INDEX_DELETED, + INDEX_RENAMED, + INDEX_COPIED, + + MODIFIED, + DELETED, + UNTRACKED, + IGNORED, + INTENT_TO_ADD, + INTENT_TO_RENAME, + TYPE_CHANGED, + + ADDED_BY_US, + ADDED_BY_THEM, + DELETED_BY_US, + DELETED_BY_THEM, + BOTH_ADDED, + BOTH_DELETED, + BOTH_MODIFIED, +} + +interface Change { + /** + * Returns either `originalUri` or `renameUri`, depending + * on whether this change is a rename change. When + * in doubt always use `uri` over the other two alternatives. + */ + readonly uri: Uri; + readonly originalUri: Uri; + readonly renameUri: Uri | undefined; + readonly status: Status; +} + +interface RepositoryState { + readonly HEAD: Branch | undefined; + readonly refs: Ref[]; + readonly remotes: Remote[]; + readonly submodules: Submodule[]; + readonly rebaseCommit: Commit | undefined; + + readonly mergeChanges: Change[]; + readonly indexChanges: Change[]; + readonly workingTreeChanges: Change[]; + + readonly onDidChange: Event; +} + +interface RepositoryUIState { + readonly selected: boolean; + readonly onDidChange: Event; +} + +/** + * Log options. + */ +interface LogOptions { + /** Max number of log entries to retrieve. If not specified, the default is 32. */ + readonly maxEntries?: number; + readonly path?: string; + /** A commit range, such as "0a47c67f0fb52dd11562af48658bc1dff1d75a38..0bb4bdea78e1db44d728fd6894720071e303304f" */ + readonly range?: string; + readonly reverse?: boolean; + readonly sortByAuthorDate?: boolean; +} + +interface CommitOptions { + all?: boolean | "tracked"; + amend?: boolean; + signoff?: boolean; + signCommit?: boolean; + empty?: boolean; + noVerify?: boolean; + requireUserConfig?: boolean; + useEditor?: boolean; + verbose?: boolean; + /** + * string - execute the specified command after the commit operation + * undefined - execute the command specified in git.postCommitCommand + * after the commit operation + * null - do not execute any command after the commit operation + */ + postCommitCommand?: string | null; +} + +interface FetchOptions { + remote?: string; + ref?: string; + all?: boolean; + prune?: boolean; + depth?: number; +} + +interface InitOptions { + defaultBranch?: string; +} + +interface RefQuery { + readonly contains?: string; + readonly count?: number; + readonly pattern?: string; + readonly sort?: "alphabetically" | "committerdate"; +} + +interface BranchQuery extends RefQuery { + readonly remote?: boolean; +} + +export interface Repository { + readonly rootUri: Uri; + readonly inputBox: InputBox; + readonly state: RepositoryState; + readonly ui: RepositoryUIState; + + getConfigs(): Promise>; + getConfig(key: string): Promise; + setConfig(key: string, value: string): Promise; + getGlobalConfig(key: string): Promise; + + getObjectDetails( + treeish: string, + path: string, + ): Promise<{ mode: string; object: string; size: number }>; + detectObjectType( + object: string, + ): Promise<{ mimetype: string; encoding?: string }>; + buffer(ref: string, path: string): Promise; + show(ref: string, path: string): Promise; + getCommit(ref: string): Promise; + + add(paths: string[]): Promise; + revert(paths: string[]): Promise; + clean(paths: string[]): Promise; + + apply(patch: string, reverse?: boolean): Promise; + diff(cached?: boolean): Promise; + diffWithHEAD(): Promise; + diffWithHEAD(path: string): Promise; + diffWith(ref: string): Promise; + diffWith(ref: string, path: string): Promise; + diffIndexWithHEAD(): Promise; + diffIndexWithHEAD(path: string): Promise; + diffIndexWith(ref: string): Promise; + diffIndexWith(ref: string, path: string): Promise; + diffBlobs(object1: string, object2: string): Promise; + diffBetween(ref1: string, ref2: string): Promise; + diffBetween(ref1: string, ref2: string, path: string): Promise; + + hashObject(data: string): Promise; + + createBranch(name: string, checkout: boolean, ref?: string): Promise; + deleteBranch(name: string, force?: boolean): Promise; + getBranch(name: string): Promise; + getBranches( + query: BranchQuery, + cancellationToken?: CancellationToken, + ): Promise; + getBranchBase(name: string): Promise; + setBranchUpstream(name: string, upstream: string): Promise; + + getRefs( + query: RefQuery, + cancellationToken?: CancellationToken, + ): Promise; + + getMergeBase(ref1: string, ref2: string): Promise; + + tag(name: string, upstream: string): Promise; + deleteTag(name: string): Promise; + + status(): Promise; + checkout(treeish: string): Promise; + + addRemote(name: string, url: string): Promise; + removeRemote(name: string): Promise; + renameRemote(name: string, newName: string): Promise; + + fetch(options?: FetchOptions): Promise; + fetch(remote?: string, ref?: string, depth?: number): Promise; + pull(unshallow?: boolean): Promise; + push( + remoteName?: string, + branchName?: string, + setUpstream?: boolean, + force?: ForcePushMode, + ): Promise; + + blame(path: string): Promise; + log(options?: LogOptions): Promise; + + commit(message: string, opts?: CommitOptions): Promise; +} + +interface RemoteSource { + readonly name: string; + readonly description?: string; + readonly url: string | string[]; +} + +interface RemoteSourceProvider { + readonly name: string; + readonly icon?: string; // codicon name + readonly supportsQuery?: boolean; + getRemoteSources(query?: string): ProviderResult; + getBranches?(url: string): ProviderResult; + publishRepository?(repository: Repository): Promise; +} + +interface RemoteSourcePublisher { + readonly name: string; + readonly icon?: string; // codicon name + publishRepository(repository: Repository): Promise; +} + +interface Credentials { + readonly username: string; + readonly password: string; +} + +interface CredentialsProvider { + getCredentials(host: Uri): ProviderResult; +} + +interface PostCommitCommandsProvider { + getCommands(repository: Repository): Command[]; +} + +interface PushErrorHandler { + handlePushError( + repository: Repository, + remote: Remote, + refspec: string, + error: Error & { gitErrorCode: GitErrorCodes }, + ): Promise; +} + +interface BranchProtection { + readonly remote: string; + readonly rules: BranchProtectionRule[]; +} + +interface BranchProtectionRule { + readonly include?: string[]; + readonly exclude?: string[]; +} + +interface BranchProtectionProvider { + onDidChangeBranchProtection: Event; + provideBranchProtection(): BranchProtection[]; +} + +interface CommitMessageProvider { + readonly title: string; + readonly icon?: Uri | { light: Uri; dark: Uri } | ThemeIcon; + provideCommitMessage( + repository: Repository, + changes: string[], + cancellationToken?: CancellationToken, + ): Promise; +} + +type APIState = "uninitialized" | "initialized"; + +interface PublishEvent { + repository: Repository; + branch?: string; +} + +export interface API { + readonly state: APIState; + readonly onDidChangeState: Event; + readonly onDidPublish: Event; + readonly git: Git; + readonly repositories: Repository[]; + readonly onDidOpenRepository: Event; + readonly onDidCloseRepository: Event; + + toGitUri(uri: Uri, ref: string): Uri; + getRepository(uri: Uri): Repository | null; + init(root: Uri, options?: InitOptions): Promise; + openRepository(root: Uri): Promise; + + registerRemoteSourcePublisher(publisher: RemoteSourcePublisher): Disposable; + registerRemoteSourceProvider(provider: RemoteSourceProvider): Disposable; + registerCredentialsProvider(provider: CredentialsProvider): Disposable; + registerPostCommitCommandsProvider( + provider: PostCommitCommandsProvider, + ): Disposable; + registerPushErrorHandler(handler: PushErrorHandler): Disposable; + registerBranchProtectionProvider( + root: Uri, + provider: BranchProtectionProvider, + ): Disposable; + registerCommitMessageProvider(provider: CommitMessageProvider): Disposable; +} + +export interface GitExtension { + readonly enabled: boolean; + readonly onDidChangeEnablement: Event; + + /** + * Returns a specific API version. + * + * Throws error if git extension is disabled. You can listen to the + * [GitExtension.onDidChangeEnablement](#GitExtension.onDidChangeEnablement) event + * to know when the extension becomes enabled/disabled. + * + * @param version Version number. + * @returns API instance + */ + getAPI(version: 1): API; +} + +const enum GitErrorCodes { + BadConfigFile = "BadConfigFile", + AuthenticationFailed = "AuthenticationFailed", + NoUserNameConfigured = "NoUserNameConfigured", + NoUserEmailConfigured = "NoUserEmailConfigured", + NoRemoteRepositorySpecified = "NoRemoteRepositorySpecified", + NotAGitRepository = "NotAGitRepository", + NotAtRepositoryRoot = "NotAtRepositoryRoot", + Conflict = "Conflict", + StashConflict = "StashConflict", + UnmergedChanges = "UnmergedChanges", + PushRejected = "PushRejected", + ForcePushWithLeaseRejected = "ForcePushWithLeaseRejected", + ForcePushWithLeaseIfIncludesRejected = "ForcePushWithLeaseIfIncludesRejected", + RemoteConnectionError = "RemoteConnectionError", + DirtyWorkTree = "DirtyWorkTree", + CantOpenResource = "CantOpenResource", + GitNotFound = "GitNotFound", + CantCreatePipe = "CantCreatePipe", + PermissionDenied = "PermissionDenied", + CantAccessRemote = "CantAccessRemote", + RepositoryNotFound = "RepositoryNotFound", + RepositoryIsLocked = "RepositoryIsLocked", + BranchNotFullyMerged = "BranchNotFullyMerged", + NoRemoteReference = "NoRemoteReference", + InvalidBranchName = "InvalidBranchName", + BranchAlreadyExists = "BranchAlreadyExists", + NoLocalChanges = "NoLocalChanges", + NoStashFound = "NoStashFound", + LocalChangesOverwritten = "LocalChangesOverwritten", + NoUpstreamBranch = "NoUpstreamBranch", + IsInSubmodule = "IsInSubmodule", + WrongCase = "WrongCase", + CantLockRef = "CantLockRef", + CantRebaseMultipleBranches = "CantRebaseMultipleBranches", + PatchDoesNotApply = "PatchDoesNotApply", + NoPathFound = "NoPathFound", + UnknownPath = "UnknownPath", + EmptyCommitMessage = "EmptyCommitMessage", + BranchFastForwardRejected = "BranchFastForwardRejected", + BranchNotYetBorn = "BranchNotYetBorn", + TagConflict = "TagConflict", +} diff --git a/extensions/ql-vscode/src/common/vscode/external-files.ts b/extensions/ql-vscode/src/common/vscode/external-files.ts new file mode 100644 index 00000000000..2f9a78c0f82 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/external-files.ts @@ -0,0 +1,58 @@ +import { Uri, window } from "vscode"; +import type { AppCommandManager } from "../commands"; +import { showBinaryChoiceDialog } from "./dialog"; +import { redactableError } from "../../common/errors"; +import { + asError, + getErrorMessage, + getErrorStack, +} from "../../common/helpers-pure"; +import { showAndLogExceptionWithTelemetry } from "../logging"; +import { extLogger } from "../logging/vscode"; +import { telemetryListener } from "./telemetry"; + +export async function tryOpenExternalFile( + commandManager: AppCommandManager, + fileLocation: string, +) { + const uri = Uri.file(fileLocation); + try { + await window.showTextDocument(uri, { preview: false }); + } catch (e) { + const msg = getErrorMessage(e); + if ( + msg.includes("Files above 50MB cannot be synchronized with extensions") || + msg.includes("too large to open") + ) { + const res = await showBinaryChoiceDialog( + `VS Code does not allow extensions to open files >50MB. This file +exceeds that limit. Do you want to open it outside of VS Code? + +You can also try manually opening it inside VS Code by selecting +the file in the file explorer and dragging it into the workspace.`, + ); + if (res) { + try { + await commandManager.execute("revealFileInOS", uri); + } catch (e) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(e), + )`Failed to reveal file in OS: ${getErrorMessage(e)}`, + ); + } + } + } else { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError(asError(e))`Could not open file ${fileLocation}`, + { + fullMessage: `${getErrorMessage(e)}\n${getErrorStack(e)}`, + }, + ); + } + } +} diff --git a/extensions/ql-vscode/src/common/vscode/file-path-discovery.ts b/extensions/ql-vscode/src/common/vscode/file-path-discovery.ts new file mode 100644 index 00000000000..c196786a009 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/file-path-discovery.ts @@ -0,0 +1,266 @@ +import { Discovery } from "../discovery"; +import type { Event, Uri, WorkspaceFoldersChangeEvent } from "vscode"; +import { EventEmitter, RelativePattern, workspace } from "vscode"; +import { MultiFileSystemWatcher } from "./multi-file-system-watcher"; +import type { AppEventEmitter } from "../events"; +import { extLogger } from "../logging/vscode"; +import { lstat } from "fs-extra"; +import { containsPath, isIOError } from "../files"; +import { + getOnDiskWorkspaceFolders, + getOnDiskWorkspaceFoldersObjects, +} from "./workspace-folders"; +import { getErrorMessage } from "../../common/helpers-pure"; + +interface PathData { + path: string; +} + +/** + * Discovers and watches for changes to all files matching a given filter + * contained in the workspace. Also allows computing extra data about each + * file path, and only recomputing the data when the file changes. + * + * Scans the whole workspace on startup, and then watches for changes to files + * to do the minimum work to keep up with changes. + * + * Can configure which changes it watches for, which files are considered + * relevant, and what extra data to compute for each file. + */ +export abstract class FilePathDiscovery extends Discovery { + /** + * Has `discover` been called. This allows distinguishing between + * "no paths found" and not having scanned yet. + */ + private discoverHasCompletedOnce = false; + + /** The set of known paths and associated data that we are tracking */ + private pathData: T[] = []; + + /** Event that fires whenever the contents of `pathData` changes */ + private readonly onDidChangePathDataEmitter: AppEventEmitter; + + /** + * The set of file paths that may have changed on disk since the last time + * refresh was run. Whenever a watcher reports some change to a file we add + * it to this set, and then during the next refresh we will process all + * file paths from this set and update our internal state to match whatever + * we find on disk (i.e. the file exists, doesn't exist, computed data has + * changed). + */ + private readonly changedFilePaths = new Set(); + + /** + * Watches for changes to files and directories in all workspace folders. + */ + private readonly watcher: MultiFileSystemWatcher = this.push( + new MultiFileSystemWatcher(), + ); + + /** + * @param name Name of the discovery operation, for logging purposes. + * @param fileWatchPattern Passed to `vscode.RelativePattern` to determine the files to watch for changes to. + */ + constructor( + name: string, + private readonly fileWatchPattern: string, + ) { + super(name, extLogger); + + this.onDidChangePathDataEmitter = this.push(new EventEmitter()); + this.push( + workspace.onDidChangeWorkspaceFolders( + this.workspaceFoldersChanged.bind(this), + ), + ); + this.push(this.watcher.onDidChange(this.fileChanged.bind(this))); + } + + protected getPathData(): ReadonlyArray> | undefined { + if (!this.discoverHasCompletedOnce) { + return undefined; + } + return this.pathData; + } + + protected get onDidChangePathData(): Event { + return this.onDidChangePathDataEmitter.event; + } + + /** + * Compute any extra data to be stored regarding the given path. + */ + protected abstract getDataForPath(path: string): Promise; + + /** + * Is the given path relevant to this discovery operation? + */ + protected abstract pathIsRelevant(path: string): boolean; + + /** + * Should the given new data overwrite the existing data we have stored? + */ + protected abstract shouldOverwriteExistingData( + newData: T, + existingData: T, + ): boolean; + + /** + * Update the data for every path by calling `getDataForPath`. + */ + protected async recomputeAllData() { + this.pathData = await Promise.all( + this.pathData.map((p) => this.getDataForPath(p.path)), + ); + this.onDidChangePathDataEmitter.fire(); + } + + /** + * Do the initial scan of the entire workspace and set up watchers for future changes. + */ + public async initialRefresh() { + getOnDiskWorkspaceFolders().forEach((workspaceFolder) => { + this.changedFilePaths.add(workspaceFolder); + }); + + this.updateWatchers(); + await this.refresh(); + this.onDidChangePathDataEmitter.fire(); + } + + private workspaceFoldersChanged(event: WorkspaceFoldersChangeEvent) { + event.added.forEach((workspaceFolder) => { + this.changedFilePaths.add(workspaceFolder.uri.fsPath); + }); + event.removed.forEach((workspaceFolder) => { + this.changedFilePaths.add(workspaceFolder.uri.fsPath); + }); + + this.updateWatchers(); + void this.refresh(); + } + + private updateWatchers() { + this.watcher.clear(); + for (const workspaceFolder of getOnDiskWorkspaceFoldersObjects()) { + // Watch for changes to individual files + this.watcher.addWatch( + new RelativePattern(workspaceFolder, this.fileWatchPattern), + ); + // need to explicitly watch for changes to directories themselves. + this.watcher.addWatch(new RelativePattern(workspaceFolder, "**/")); + } + } + + private fileChanged(uri: Uri) { + this.changedFilePaths.add(uri.fsPath); + void this.refresh(); + } + + protected async discover() { + let pathsUpdated = false; + for (const path of this.changedFilePaths) { + try { + this.changedFilePaths.delete(path); + if (await this.handleChangedPath(path)) { + pathsUpdated = true; + } + } catch (e) { + // If we get an error while processing a path, just log it and continue. + // There aren't any network operations happening here or anything else + // that's likely to succeed on a retry, so don't bother adding it back + // to the changedFilePaths set. + void extLogger.log( + `${ + this.name + } failed while processing path "${path}": ${getErrorMessage(e)}`, + ); + } + } + + this.discoverHasCompletedOnce = true; + if (pathsUpdated) { + this.onDidChangePathDataEmitter.fire(); + } + } + + private async handleChangedPath(path: string): Promise { + try { + // If the path is not in the workspace then we don't want to be + // tracking or displaying it, so treat it as if it doesn't exist. + if (!this.pathIsInWorkspace(path)) { + return this.handleRemovedPath(path); + } + + if ((await lstat(path)).isDirectory()) { + return await this.handleChangedDirectory(path); + } else { + return this.handleChangedFile(path); + } + } catch (e) { + if (isIOError(e) && e.code === "ENOENT") { + return this.handleRemovedPath(path); + } + throw e; + } + } + + private pathIsInWorkspace(path: string): boolean { + return getOnDiskWorkspaceFolders().some((workspaceFolder) => + containsPath(workspaceFolder, path), + ); + } + + private handleRemovedPath(path: string): boolean { + const oldLength = this.pathData.length; + this.pathData = this.pathData.filter( + (existingPathData) => !containsPath(path, existingPathData.path), + ); + return this.pathData.length !== oldLength; + } + + private async handleChangedDirectory(path: string): Promise { + const newPaths = await workspace.findFiles( + new RelativePattern(path, this.fileWatchPattern), + ); + + let pathsUpdated = false; + for (const path of newPaths) { + if (await this.addOrUpdatePath(path.fsPath)) { + pathsUpdated = true; + } + } + return pathsUpdated; + } + + private async handleChangedFile(path: string): Promise { + if (this.pathIsRelevant(path)) { + return await this.addOrUpdatePath(path); + } else { + return false; + } + } + + private async addOrUpdatePath(path: string): Promise { + const data = await this.getDataForPath(path); + const existingPathDataIndex = this.pathData.findIndex( + (existingPathData) => existingPathData.path === path, + ); + if (existingPathDataIndex !== -1) { + if ( + this.shouldOverwriteExistingData( + data, + this.pathData[existingPathDataIndex], + ) + ) { + this.pathData.splice(existingPathDataIndex, 1, data); + return true; + } else { + return false; + } + } else { + this.pathData.push(data); + return true; + } + } +} diff --git a/extensions/ql-vscode/src/common/vscode/multi-cancellation-token.ts b/extensions/ql-vscode/src/common/vscode/multi-cancellation-token.ts new file mode 100644 index 00000000000..8917d2289ca --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/multi-cancellation-token.ts @@ -0,0 +1,24 @@ +import type { CancellationToken, Disposable } from "vscode"; +import { DisposableObject } from "../disposable-object"; + +/** + * A cancellation token that cancels when any of its constituent + * cancellation tokens are cancelled. + */ +export class MultiCancellationToken implements CancellationToken { + private readonly tokens: CancellationToken[]; + + constructor(...tokens: CancellationToken[]) { + this.tokens = tokens; + } + + get isCancellationRequested(): boolean { + return this.tokens.some((t) => t.isCancellationRequested); + } + + onCancellationRequested(listener: (e: T) => void): Disposable { + return new DisposableObject( + ...this.tokens.map((t) => t.onCancellationRequested(listener)), + ); + } +} diff --git a/extensions/ql-vscode/src/vscode-utils/multi-file-system-watcher.ts b/extensions/ql-vscode/src/common/vscode/multi-file-system-watcher.ts similarity index 76% rename from extensions/ql-vscode/src/vscode-utils/multi-file-system-watcher.ts rename to extensions/ql-vscode/src/common/vscode/multi-file-system-watcher.ts index 32b1e60d45c..8fdbad76ac5 100644 --- a/extensions/ql-vscode/src/vscode-utils/multi-file-system-watcher.ts +++ b/extensions/ql-vscode/src/common/vscode/multi-file-system-watcher.ts @@ -1,5 +1,6 @@ -import { DisposableObject } from '../pure/disposable-object'; -import { EventEmitter, Event, Uri, GlobPattern, workspace } from 'vscode'; +import { DisposableObject } from "../disposable-object"; +import type { Event, Uri, GlobPattern } from "vscode"; +import { EventEmitter, workspace } from "vscode"; /** * A collection of `FileSystemWatcher` objects. Disposing this object disposes all of the individual @@ -17,11 +18,11 @@ class WatcherCollection extends DisposableObject { * deleted. * @param thisArgs The `this` argument for the event listener. */ - public addWatcher(pattern: GlobPattern, listener: (e: Uri) => any, thisArgs: any): void { + public addWatcher(pattern: GlobPattern, listener: (e: Uri) => void): void { const watcher = workspace.createFileSystemWatcher(pattern); - this.push(watcher.onDidCreate(listener, thisArgs)); - this.push(watcher.onDidChange(listener, thisArgs)); - this.push(watcher.onDidDelete(listener, thisArgs)); + this.push(watcher.onDidCreate(listener)); + this.push(watcher.onDidChange(listener)); + this.push(watcher.onDidDelete(listener)); } } @@ -40,14 +41,16 @@ export class MultiFileSystemWatcher extends DisposableObject { /** * Event to be fired when any watched file is created, changed, or deleted. */ - public get onDidChange(): Event { return this._onDidChange.event; } + public get onDidChange(): Event { + return this._onDidChange.event; + } /** * Adds a new pattern to watch. * @param pattern The pattern to watch. */ public addWatch(pattern: GlobPattern): void { - this.watchers.addWatcher(pattern, this.handleDidChange, this); + this.watchers.addWatcher(pattern, this.handleDidChange.bind(this)); } /** diff --git a/extensions/ql-vscode/src/common/vscode/octokit.ts b/extensions/ql-vscode/src/common/vscode/octokit.ts new file mode 100644 index 00000000000..71ff98c10cd --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/octokit.ts @@ -0,0 +1,15 @@ +import { getGitHubInstanceApiUrl } from "../../config"; + +/** + * Returns the Octokit base URL to use based on the GitHub instance URL. + * + * This is necessary because the Octokit base URL should not have a trailing + * slash, but this is included by default in a URL. + */ +export function getOctokitBaseUrl(): string { + let apiUrl = getGitHubInstanceApiUrl().toString(); + if (apiUrl.endsWith("/")) { + apiUrl = apiUrl.slice(0, -1); + } + return apiUrl; +} diff --git a/extensions/ql-vscode/src/common/vscode/progress.ts b/extensions/ql-vscode/src/common/vscode/progress.ts new file mode 100644 index 00000000000..baf3b2c4f28 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/progress.ts @@ -0,0 +1,137 @@ +import type { + CancellationToken, + ProgressOptions as VSCodeProgressOptions, +} from "vscode"; +import { ProgressLocation, window as Window } from "vscode"; +import { readableBytesMb } from "../bytes"; + +export class UserCancellationException extends Error { + /** + * @param message The error message + * @param silent If silent is true, then this exception will avoid showing a warning message to the user. + */ + constructor( + message?: string, + public readonly silent = false, + ) { + super(message); + } +} + +export interface ProgressUpdate { + /** + * The current step + */ + step: number; + /** + * The maximum step. This *should* be constant for a single job. + */ + maxStep: number; + /** + * The current progress message + */ + message: string; +} + +export function progressUpdate( + step: number, + maxStep: number, + message: string, +): ProgressUpdate { + return { step, maxStep, message }; +} + +export type ProgressCallback = (p: ProgressUpdate) => void; + +// Make certain properties within a type optional +type Optional = Pick, K> & Omit; + +type ProgressOptions = Optional; + +/** + * A task that reports progress. + * + * @param progress a progress handler function. Call this + * function with a `ProgressUpdate` instance in order to + * denote some progress being achieved on this task. + * @param token a cancellation token + */ +type ProgressTask = ( + progress: ProgressCallback, + token: CancellationToken, +) => Thenable; + +/** + * This mediates between the kind of progress callbacks we want to + * write (where we *set* current progress position and give + * `maxSteps`) and the kind vscode progress api expects us to write + * (which increment progress by a certain amount out of 100%). + */ +export function withProgress( + task: ProgressTask, + { + location = ProgressLocation.Notification, + title, + cancellable, + }: ProgressOptions = {}, +): Thenable { + let progressAchieved = 0; + return Window.withProgress( + { + location, + title, + cancellable, + }, + (progress, token) => { + return task((p) => { + const { message, step, maxStep } = p; + const increment = (100 * (step - progressAchieved)) / maxStep; + progressAchieved = step; + progress.report({ message, increment }); + }, token); + }, + ); +} + +/** + * Displays a progress monitor that indicates how much progess has been made + * reading from a stream. + * + * @param messagePrefix A prefix for displaying the message + * @param totalNumBytes Total number of bytes in this stream + * @param progress The progress callback used to set messages + */ +export function reportStreamProgress( + messagePrefix: string, + totalNumBytes?: number, + progress?: ProgressCallback, +): (bytesRead: number) => void { + if (progress && totalNumBytes) { + let numBytesDownloaded = 0; + const updateProgress = () => { + progress({ + step: numBytesDownloaded, + maxStep: totalNumBytes, + message: `${messagePrefix} [${readableBytesMb( + numBytesDownloaded, + )} of ${readableBytesMb(totalNumBytes)}]`, + }); + }; + + // Display the progress straight away rather than waiting for the first chunk. + updateProgress(); + + return (bytesRead: number) => { + numBytesDownloaded += bytesRead; + updateProgress(); + }; + } else if (progress) { + progress({ + step: 1, + maxStep: 2, + message: `${messagePrefix} (Size unknown)`, + }); + } + + return () => {}; +} diff --git a/extensions/ql-vscode/src/common/vscode/selection-commands.ts b/extensions/ql-vscode/src/common/vscode/selection-commands.ts new file mode 100644 index 00000000000..bfe107ff0a3 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/selection-commands.ts @@ -0,0 +1,52 @@ +import type { + ExplorerSelectionCommandFunction, + TreeViewContextMultiSelectionCommandFunction, + TreeViewContextSingleSelectionCommandFunction, +} from "../commands"; +import type { NotArray } from "../helpers-pure"; +import type { NotificationLogger } from "../logging"; +import { showAndLogErrorMessage } from "../logging"; + +// A way to get the type system to help assert that one type is a supertype of another. +type CreateSupertypeOf = Sub; + +// This asserts that SelectionCommand is assignable to all of the different types of +// SelectionCommand defined in commands.ts. The intention is the output from the helpers +// in this file can be used with any of the select command types and can handle any of +// the inputs. +type SelectionCommand = CreateSupertypeOf< + TreeViewContextMultiSelectionCommandFunction & + TreeViewContextSingleSelectionCommandFunction & + ExplorerSelectionCommandFunction, + (singleItem: T, multiSelect?: T[]) => Promise +>; + +export function createSingleSelectionCommand( + logger: NotificationLogger, + f: (argument: T) => Promise, + itemName: string, +): SelectionCommand { + return async (singleItem, multiSelect) => { + if (multiSelect === undefined || multiSelect.length === 1) { + return f(singleItem); + } else { + void showAndLogErrorMessage( + logger, + `Please select a single ${itemName}.`, + ); + return; + } + }; +} + +export function createMultiSelectionCommand( + f: (argument: T[]) => Promise, +): SelectionCommand { + return async (singleItem, multiSelect) => { + if (multiSelect !== undefined && multiSelect.length > 0) { + return f(multiSelect); + } else { + return f([singleItem]); + } + }; +} diff --git a/extensions/ql-vscode/src/common/vscode/telemetry.ts b/extensions/ql-vscode/src/common/vscode/telemetry.ts new file mode 100644 index 00000000000..d8c6f54c6c8 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/telemetry.ts @@ -0,0 +1,239 @@ +import type { Extension, ExtensionContext } from "vscode"; +import { ConfigurationTarget, env, Uri, window } from "vscode"; +import TelemetryReporter from "vscode-extension-telemetry"; +import { ENABLE_TELEMETRY, isCanary, LOG_TELEMETRY } from "../../config"; +import type { TelemetryClient } from "applicationinsights"; +import { extLogger } from "../logging/vscode"; +import { UserCancellationException } from "./progress"; +import type { RedactableError } from "../errors"; +import type { SemVer } from "semver"; +import type { AppTelemetry } from "../telemetry"; +import type { EnvelopeTelemetry } from "applicationinsights/out/Declarations/Contracts"; +import type { Disposable } from "../disposable-object"; + +// Key is injected at build time through the APP_INSIGHTS_KEY environment variable. +const key = "REPLACE-APP-INSIGHTS-KEY"; + +enum CommandCompletion { + Success = "Success", + Failed = "Failed", + Cancelled = "Cancelled", +} + +// Avoid sending the following data to App insights since we don't need it. +const tagsToRemove = [ + "ai.application.ver", + "ai.device.id", + "ai.cloud.roleInstance", + "ai.cloud.role", + "ai.device.id", + "ai.device.osArchitecture", + "ai.device.osPlatform", + "ai.device.osVersion", + "ai.internal.sdkVersion", + "ai.session.id", +]; + +const baseDataPropertiesToRemove = [ + "common.os", + "common.platformversion", + "common.remotename", + "common.uikind", + "common.vscodesessionid", +]; + +const NOT_SET_CLI_VERSION = "not-set"; + +export class ExtensionTelemetryListener implements AppTelemetry, Disposable { + private readonly reporter: TelemetryReporter; + + private cliVersionStr = NOT_SET_CLI_VERSION; + + constructor(id: string, version: string, key: string) { + // We can always initialize this and send events using it because the vscode-extension-telemetry will check + // whether the `telemetry.telemetryLevel` setting is enabled. + this.reporter = new TelemetryReporter( + id, + version, + key, + /* anonymize stack traces */ true, + ); + + this.addTelemetryProcessor(); + } + + private addTelemetryProcessor() { + // The appInsightsClient field is private but we want to access it anyway + const client = this.reporter["appInsightsClient"] as TelemetryClient; + if (client) { + // add a telemetry processor to delete unwanted properties + client.addTelemetryProcessor((envelope: EnvelopeTelemetry) => { + tagsToRemove.forEach((tag) => delete envelope.tags[tag]); + const baseDataProperties = envelope.data.baseData?.properties; + if (baseDataProperties) { + baseDataPropertiesToRemove.forEach( + (prop) => delete baseDataProperties[prop], + ); + } + + if (LOG_TELEMETRY.getValue()) { + void extLogger.log(`Telemetry: ${JSON.stringify(envelope)}`); + } + return true; + }); + } + } + + dispose() { + void this.reporter.dispose(); + } + + sendCommandUsage(name: string, executionTime: number, error?: Error): void { + const status = !error + ? CommandCompletion.Success + : error instanceof UserCancellationException + ? CommandCompletion.Cancelled + : CommandCompletion.Failed; + + this.reporter.sendTelemetryEvent( + "command-usage", + { + name, + status, + isCanary: isCanary().toString(), + cliVersion: this.cliVersionStr, + }, + { executionTime }, + ); + } + + sendUIInteraction(name: string): void { + this.reporter.sendTelemetryEvent( + "ui-interaction", + { + name, + isCanary: isCanary().toString(), + cliVersion: this.cliVersionStr, + }, + {}, + ); + } + + sendError( + error: RedactableError, + extraProperties?: { [key: string]: string }, + ): void { + const properties: { [key: string]: string } = { + isCanary: isCanary().toString(), + cliVersion: this.cliVersionStr, + message: error.redactedMessage, + ...extraProperties, + }; + if (error.stack && error.stack !== "") { + properties.stack = error.stack; + } + + this.reporter.sendTelemetryErrorEvent("error", properties, {}); + } + + sendConfigInformation(config: Record): void { + this.reporter.sendTelemetryEvent( + "config", + { + ...config, + isCanary: isCanary().toString(), + cliVersion: this.cliVersionStr, + }, + {}, + ); + } + + /** + * Exposed for testing + */ + get _reporter() { + return this.reporter; + } + + set cliVersion(version: SemVer | undefined) { + this.cliVersionStr = version ? version.toString() : NOT_SET_CLI_VERSION; + } +} + +async function notifyTelemetryChange() { + const continueItem = { title: "Continue", isCloseAffordance: false }; + const vsCodeTelemetryItem = { + title: "More Information about VS Code Telemetry", + isCloseAffordance: false, + }; + const codeqlTelemetryItem = { + title: "More Information about CodeQL Telemetry", + isCloseAffordance: false, + }; + let chosenItem; + + do { + chosenItem = await window.showInformationMessage( + "The CodeQL extension now follows VS Code's telemetry settings. VS Code telemetry is currently enabled. Learn how to update your telemetry settings by clicking the links below.", + { modal: true }, + continueItem, + vsCodeTelemetryItem, + codeqlTelemetryItem, + ); + if (chosenItem === vsCodeTelemetryItem) { + await env.openExternal( + Uri.parse( + "https://code.visualstudio.com/docs/getstarted/telemetry", + true, + ), + ); + } + if (chosenItem === codeqlTelemetryItem) { + await env.openExternal( + Uri.parse( + "https://docs.github.com/en/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/telemetry-in-codeql-for-visual-studio-code", + true, + ), + ); + } + } while (chosenItem !== continueItem); +} + +/** + * The global Telemetry instance + */ +// eslint-disable-next-line import/no-mutable-exports +export let telemetryListener: ExtensionTelemetryListener | undefined; + +export async function initializeTelemetry( + extension: Extension, + ctx: ExtensionContext, +): Promise { + if (telemetryListener !== undefined) { + throw new Error("Telemetry is already initialized"); + } + + if (ENABLE_TELEMETRY.getValue() === false) { + if (env.isTelemetryEnabled) { + // Await this so that the user is notified before any telemetry is sent + await notifyTelemetryChange(); + } + + // Remove the deprecated telemetry setting + ENABLE_TELEMETRY.updateValue(undefined, ConfigurationTarget.Global); + ENABLE_TELEMETRY.updateValue(undefined, ConfigurationTarget.Workspace); + ENABLE_TELEMETRY.updateValue( + undefined, + ConfigurationTarget.WorkspaceFolder, + ); + } + + telemetryListener = new ExtensionTelemetryListener( + extension.id, + extension.packageJSON.version, + key, + ); + ctx.subscriptions.push(telemetryListener); + + return telemetryListener; +} diff --git a/extensions/ql-vscode/src/common/vscode/unzip-progress.ts b/extensions/ql-vscode/src/common/vscode/unzip-progress.ts new file mode 100644 index 00000000000..86c3609f44f --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/unzip-progress.ts @@ -0,0 +1,18 @@ +import { readableBytesMb } from "../bytes"; +import type { UnzipProgressCallback } from "../unzip"; +import type { ProgressCallback } from "./progress"; + +export function reportUnzipProgress( + messagePrefix: string, + progress: ProgressCallback, +): UnzipProgressCallback { + return ({ bytesExtracted, totalBytes }) => { + progress({ + step: bytesExtracted, + maxStep: totalBytes, + message: `${messagePrefix} [${readableBytesMb( + bytesExtracted, + )} of ${readableBytesMb(totalBytes)}]`, + }); + }; +} diff --git a/extensions/ql-vscode/src/common/vscode/webview-html.ts b/extensions/ql-vscode/src/common/vscode/webview-html.ts new file mode 100644 index 00000000000..e1eac40024c --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/webview-html.ts @@ -0,0 +1,109 @@ +import type { Webview } from "vscode"; +import { Uri } from "vscode"; +import { randomBytes } from "crypto"; +import { EOL } from "os"; +import type { App } from "../app"; + +export type WebviewKind = + | "results" + | "compare" + | "compare-performance" + | "variant-analysis" + | "data-flow-paths" + | "model-editor" + | "method-modeling" + | "model-alerts"; + +export interface WebviewMessage { + t: string; +} + +/** + * Returns HTML to populate the given webview. + * Uses a content security policy that only loads the given script. + */ +export function getHtmlForWebview( + app: App, + webview: Webview, + view: WebviewKind, + { + allowInlineStyles, + allowWasmEval, + }: { + allowInlineStyles?: boolean; + allowWasmEval?: boolean; + } = { + allowInlineStyles: false, + allowWasmEval: false, + }, +): string { + const scriptUriOnDisk = Uri.joinPath( + Uri.file(app.extensionPath), + "out/webview.js", + ); + + const stylesheetUrisOnDisk = [ + Uri.joinPath(Uri.file(app.extensionPath), "out/webview.css"), + ]; + + // Convert the on-disk URIs into webview URIs. + const scriptWebviewUri = webview.asWebviewUri(scriptUriOnDisk); + const stylesheetWebviewUris = stylesheetUrisOnDisk.map( + (stylesheetUriOnDisk) => webview.asWebviewUri(stylesheetUriOnDisk), + ); + + // Use a nonce in the content security policy to uniquely identify the above resources. + const nonce = getNonce(); + + const stylesheetsHtmlLines = allowInlineStyles + ? stylesheetWebviewUris.map((uri) => createStylesLinkWithoutNonce(uri)) + : stylesheetWebviewUris.map((uri) => createStylesLinkWithNonce(nonce, uri)); + + const styleSrc = allowInlineStyles + ? `${webview.cspSource} vscode-file: 'unsafe-inline'` + : `'nonce-${nonce}'`; + + const fontSrc = webview.cspSource; + + /* + * Content security policy: + * default-src: allow nothing by default. + * script-src: + * - allow the given script, using the nonce. + * - 'wasm-unsafe-eval: allow loading WebAssembly modules if necessary. + * style-src: allow only the given stylesheet, using the nonce. + * connect-src: only allow fetch calls to webview resource URIs + * (this is used to load BQRS result files). + */ + return ` + + + + ${stylesheetsHtmlLines.join(` ${EOL}`)} + + +
+
+ + +`; +} + +/** Gets a nonce string created with 128 bits of entropy. */ +function getNonce(): string { + return randomBytes(16).toString("base64"); +} + +function createStylesLinkWithNonce(nonce: string, uri: Uri): string { + return ``; +} + +function createStylesLinkWithoutNonce(uri: Uri): string { + return ``; +} diff --git a/extensions/ql-vscode/src/common/vscode/workspace-folders.ts b/extensions/ql-vscode/src/common/vscode/workspace-folders.ts new file mode 100644 index 00000000000..5f5f926f233 --- /dev/null +++ b/extensions/ql-vscode/src/common/vscode/workspace-folders.ts @@ -0,0 +1,67 @@ +import { dirname, join } from "path"; +import type { WorkspaceFolder } from "vscode"; +import { workspace } from "vscode"; + +/** Returns true if the specified workspace folder is on the file system. */ +export function isWorkspaceFolderOnDisk( + workspaceFolder: WorkspaceFolder, +): boolean { + return workspaceFolder.uri.scheme === "file"; +} + +/** Gets all active workspace folders that are on the filesystem. */ +export function getOnDiskWorkspaceFoldersObjects() { + const workspaceFolders = workspace.workspaceFolders ?? []; + return workspaceFolders.filter(isWorkspaceFolderOnDisk); +} + +/** Gets all active workspace folders that are on the filesystem. */ +export function getOnDiskWorkspaceFolders() { + return getOnDiskWorkspaceFoldersObjects().map((folder) => folder.uri.fsPath); +} + +/** Check if folder is already present in workspace */ +export function isFolderAlreadyInWorkspace(folderName: string) { + const workspaceFolders = workspace.workspaceFolders || []; + + return !!workspaceFolders.find( + (workspaceFolder) => workspaceFolder.name === folderName, + ); +} + +/** + * Returns the path of the first folder in the workspace. + * This is used to decide where to create skeleton QL packs. + * + * If the first folder is a QL pack, then the parent folder is returned. + * This is because the vscode-codeql-starter repo contains a ql pack in + * the first folder. + * + * This is a temporary workaround until we can retire the + * vscode-codeql-starter repo. + */ +export function getFirstWorkspaceFolder() { + const workspaceFolders = getOnDiskWorkspaceFolders(); + + if (!workspaceFolders || workspaceFolders.length === 0) { + throw new Error( + "No workspace folders found. Please open a folder or workspace in VS Code.", + ); + } + + const firstFolderFsPath = workspaceFolders[0]; + + // For the vscode-codeql-starter repo, the first folder will be a ql pack + // so we need to get the parent folder + if ( + firstFolderFsPath.includes( + join("vscode-codeql-starter", "codeql-custom-queries"), + ) + ) { + // return the parent folder + return dirname(firstFolderFsPath); + } else { + // if the first folder is not a ql pack, then we are in a normal workspace + return firstFolderFsPath; + } +} diff --git a/extensions/ql-vscode/src/common/word.ts b/extensions/ql-vscode/src/common/word.ts new file mode 100644 index 00000000000..01e453b667d --- /dev/null +++ b/extensions/ql-vscode/src/common/word.ts @@ -0,0 +1,15 @@ +/** + * Pluralizes a word. + * Example: Returns "N repository" if N is one, "N repositories" otherwise. + */ + +export function pluralize( + numItems: number | undefined, + singular: string, + plural: string, + numberFormatter: (value: number) => string = (value) => value.toString(), +): string { + return numItems !== undefined + ? `${numberFormatter(numItems)} ${numItems === 1 ? singular : plural}` + : ""; +} diff --git a/extensions/ql-vscode/src/common/zlib.ts b/extensions/ql-vscode/src/common/zlib.ts new file mode 100644 index 00000000000..deb0ecf6518 --- /dev/null +++ b/extensions/ql-vscode/src/common/zlib.ts @@ -0,0 +1,7 @@ +import { promisify } from "util"; +import { gunzip } from "zlib"; + +/** + * Promisified version of zlib.gunzip + */ +export const gzipDecode = promisify(gunzip); diff --git a/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts b/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts new file mode 100644 index 00000000000..17d0399f3ac --- /dev/null +++ b/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts @@ -0,0 +1,154 @@ +import { statSync } from "fs"; +import { ViewColumn } from "vscode"; + +import type { App } from "../common/app"; +import { redactableError } from "../common/errors"; +import type { + FromComparePerformanceViewMessage, + ToComparePerformanceViewMessage, +} from "../common/interface-types"; +import type { Logger } from "../common/logging"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import { extLogger } from "../common/logging/vscode"; +import type { WebviewPanelConfig } from "../common/vscode/abstract-webview"; +import { AbstractWebview } from "../common/vscode/abstract-webview"; +import { withProgress } from "../common/vscode/progress"; +import { telemetryListener } from "../common/vscode/telemetry"; +import type { HistoryItemLabelProvider } from "../query-history/history-item-label-provider"; +import { PerformanceOverviewScanner } from "../log-insights/performance-comparison"; +import type { ResultsView } from "../local-queries"; +import { readJsonlFile } from "../common/jsonl-reader"; +import type { SummaryEvent } from "../log-insights/log-summary"; +import type { CompletedLocalQueryInfo } from "../query-results"; + +export class ComparePerformanceView extends AbstractWebview< + ToComparePerformanceViewMessage, + FromComparePerformanceViewMessage +> { + constructor( + app: App, + public logger: Logger, + public labelProvider: HistoryItemLabelProvider, + private resultsView: ResultsView, + ) { + super(app); + } + + async showResults( + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo | undefined, + ) { + if (to === undefined) { + // For single-run comparisons, the performance viewer considers the 'from' side to be missing. + return this.showResultsAux(undefined, from); + } else { + return this.showResultsAux(from, to); + } + } + + private async showResultsAux( + from: CompletedLocalQueryInfo | undefined, + to: CompletedLocalQueryInfo, + ) { + const fromJsonLog = + from === undefined ? "" : from.evaluatorLogPaths?.jsonSummary; + const toJsonLog = to.evaluatorLogPaths?.jsonSummary; + + if (fromJsonLog === undefined || toJsonLog === undefined) { + return extLogger.showWarningMessage( + `Cannot compare performance as the structured logs are missing. Did the queries complete normally?`, + ); + } + await extLogger.log( + `Comparing performance of ${from?.getQueryName() ?? "baseline"} and ${to?.getQueryName()}`, + ); + + const panel = await this.getPanel(); + panel.reveal(undefined, false); + + // Close the results viewer as it will have opened when the user clicked the query in the history view + // (which they must do as part of the UI interaction for opening the performance view). + // The performance view generally needs a lot of width so it's annoying to have the result viewer open. + this.resultsView.hidePanel(); + + await this.waitForPanelLoaded(); + + function scanLogWithProgress(log: string, logDescription: string) { + const bytes = statSync(log).size; + return withProgress( + async (progress) => { + progress?.({ + // all scans have step 1 - the backing progress tracker allows increments instead of + // steps - but for now we are happy with a tiny UI that says what is happening + message: `Scanning ...`, + step: 1, + maxStep: 2, + }); + const scanner = new PerformanceOverviewScanner(); + await readJsonlFile(log, async (obj) => { + scanner.onEvent(obj); + }); + return scanner; + }, + + { + title: `Scanning evaluator log ${logDescription} (${(bytes / 1024 / 1024).toFixed(1)} MB)`, + }, + ); + } + + const [fromPerf, toPerf] = await Promise.all([ + fromJsonLog === "" + ? new PerformanceOverviewScanner() + : scanLogWithProgress(fromJsonLog, "1/2"), + scanLogWithProgress(toJsonLog, fromJsonLog === "" ? "1/1" : "2/2"), + ]); + + const fromName = + from === undefined ? "" : this.labelProvider.getLabel(from); + const toName = this.labelProvider.getLabel(to); + + await this.postMessage({ + t: "setPerformanceComparison", + from: { name: fromName, data: fromPerf.getData() }, + to: { name: toName, data: toPerf.getData() }, + comparison: fromJsonLog !== "", + }); + } + + protected getPanelConfig(): WebviewPanelConfig { + return { + viewId: "comparePerformanceView", + title: "Compare CodeQL Performance", + viewColumn: ViewColumn.Active, + preserveFocus: true, + view: "compare-performance", + }; + } + + protected onPanelDispose(): void {} + + protected async onMessage( + msg: FromComparePerformanceViewMessage, + ): Promise { + switch (msg.t) { + case "viewLoaded": + this.onWebViewLoaded(); + break; + + case "telemetry": + telemetryListener?.sendUIInteraction(msg.action); + break; + + case "unhandledError": + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + msg.error, + )`Unhandled error in performance comparison view: ${msg.error.message}`, + ); + break; + } + } +} diff --git a/extensions/ql-vscode/src/compare/compare-interface.ts b/extensions/ql-vscode/src/compare/compare-interface.ts deleted file mode 100644 index eb328c85cb7..00000000000 --- a/extensions/ql-vscode/src/compare/compare-interface.ts +++ /dev/null @@ -1,277 +0,0 @@ -import { DisposableObject } from '../pure/disposable-object'; -import { - WebviewPanel, - ExtensionContext, - window as Window, - ViewColumn, - Uri, -} from 'vscode'; -import * as path from 'path'; - -import { tmpDir } from '../helpers'; -import { - FromCompareViewMessage, - ToCompareViewMessage, - QueryCompareResult, -} from '../pure/interface-types'; -import { Logger } from '../logging'; -import { CodeQLCliServer } from '../cli'; -import { DatabaseManager } from '../databases'; -import { getHtmlForWebview, jumpToLocation } from '../interface-utils'; -import { transformBqrsResultSet, RawResultSet, BQRSInfo } from '../pure/bqrs-cli-types'; -import resultsDiff from './resultsDiff'; -import { CompletedLocalQueryInfo } from '../query-results'; -import { getErrorMessage } from '../pure/helpers-pure'; -import { HistoryItemLabelProvider } from '../history-item-label-provider'; - -interface ComparePair { - from: CompletedLocalQueryInfo; - to: CompletedLocalQueryInfo; -} - -export class CompareInterfaceManager extends DisposableObject { - private comparePair: ComparePair | undefined; - private panel: WebviewPanel | undefined; - private panelLoaded = false; - private panelLoadedCallBacks: (() => void)[] = []; - - constructor( - private ctx: ExtensionContext, - private databaseManager: DatabaseManager, - private cliServer: CodeQLCliServer, - private logger: Logger, - private labelProvider: HistoryItemLabelProvider, - private showQueryResultsCallback: ( - item: CompletedLocalQueryInfo - ) => Promise - ) { - super(); - } - - async showResults( - from: CompletedLocalQueryInfo, - to: CompletedLocalQueryInfo, - selectedResultSetName?: string - ) { - this.comparePair = { from, to }; - this.getPanel().reveal(undefined, true); - - await this.waitForPanelLoaded(); - const [ - commonResultSetNames, - currentResultSetName, - fromResultSet, - toResultSet, - ] = await this.findCommonResultSetNames( - from, - to, - selectedResultSetName - ); - if (currentResultSetName) { - let rows: QueryCompareResult | undefined; - let message: string | undefined; - try { - rows = this.compareResults(fromResultSet, toResultSet); - } catch (e) { - message = getErrorMessage(e); - } - - await this.postMessage({ - t: 'setComparisons', - stats: { - fromQuery: { - // since we split the description into several rows - // only run interpolation if the label is user-defined - // otherwise we will wind up with duplicated rows - name: this.labelProvider.getShortLabel(from), - status: from.completedQuery.statusString, - time: from.startTime, - }, - toQuery: { - name: this.labelProvider.getShortLabel(to), - status: to.completedQuery.statusString, - time: to.startTime, - }, - }, - columns: fromResultSet.schema.columns, - commonResultSetNames, - currentResultSetName: currentResultSetName, - rows, - message, - databaseUri: to.initialInfo.databaseInfo.databaseUri, - }); - } - } - - getPanel(): WebviewPanel { - if (this.panel == undefined) { - const { ctx } = this; - const panel = (this.panel = Window.createWebviewPanel( - 'compareView', - 'Compare CodeQL Query Results', - { viewColumn: ViewColumn.Active, preserveFocus: true }, - { - enableScripts: true, - enableFindWidget: true, - retainContextWhenHidden: true, - localResourceRoots: [ - Uri.file(tmpDir.name), - Uri.file(path.join(this.ctx.extensionPath, 'out')), - ], - } - )); - this.push(this.panel.onDidDispose( - () => { - this.panel = undefined; - this.comparePair = undefined; - }, - null, - ctx.subscriptions - )); - - const scriptPathOnDisk = Uri.file( - ctx.asAbsolutePath('out/compareView.js') - ); - - const stylesheetPathOnDisk = Uri.file( - ctx.asAbsolutePath('out/view/resultsView.css') - ); - - panel.webview.html = getHtmlForWebview( - panel.webview, - scriptPathOnDisk, - [stylesheetPathOnDisk], - false - ); - this.push(panel.webview.onDidReceiveMessage( - async (e) => this.handleMsgFromView(e), - undefined, - ctx.subscriptions - )); - } - return this.panel; - } - - private waitForPanelLoaded(): Promise { - return new Promise((resolve) => { - if (this.panelLoaded) { - resolve(); - } else { - this.panelLoadedCallBacks.push(resolve); - } - }); - } - - private async handleMsgFromView( - msg: FromCompareViewMessage - ): Promise { - switch (msg.t) { - case 'compareViewLoaded': - this.panelLoaded = true; - this.panelLoadedCallBacks.forEach((cb) => cb()); - this.panelLoadedCallBacks = []; - break; - - case 'changeCompare': - await this.changeTable(msg.newResultSetName); - break; - - case 'viewSourceFile': - await jumpToLocation(msg, this.databaseManager, this.logger); - break; - - case 'openQuery': - await this.openQuery(msg.kind); - break; - } - } - - private postMessage(msg: ToCompareViewMessage): Thenable { - return this.getPanel().webview.postMessage(msg); - } - - private async findCommonResultSetNames( - from: CompletedLocalQueryInfo, - to: CompletedLocalQueryInfo, - selectedResultSetName: string | undefined - ): Promise<[string[], string, RawResultSet, RawResultSet]> { - const fromSchemas = await this.cliServer.bqrsInfo( - from.completedQuery.query.resultsPaths.resultsPath - ); - const toSchemas = await this.cliServer.bqrsInfo( - to.completedQuery.query.resultsPaths.resultsPath - ); - const fromSchemaNames = fromSchemas['result-sets'].map( - (schema) => schema.name - ); - const toSchemaNames = toSchemas['result-sets'].map( - (schema) => schema.name - ); - const commonResultSetNames = fromSchemaNames.filter((name) => - toSchemaNames.includes(name) - ); - const currentResultSetName = - selectedResultSetName || commonResultSetNames[0]; - const fromResultSet = await this.getResultSet( - fromSchemas, - currentResultSetName, - from.completedQuery.query.resultsPaths.resultsPath - ); - const toResultSet = await this.getResultSet( - toSchemas, - currentResultSetName, - to.completedQuery.query.resultsPaths.resultsPath - ); - return [ - commonResultSetNames, - currentResultSetName, - fromResultSet, - toResultSet, - ]; - } - - private async changeTable(newResultSetName: string) { - if (!this.comparePair?.from || !this.comparePair.to) { - return; - } - await this.showResults( - this.comparePair.from, - this.comparePair.to, - newResultSetName - ); - } - - private async getResultSet( - bqrsInfo: BQRSInfo, - resultSetName: string, - resultsPath: string - ): Promise { - const schema = bqrsInfo['result-sets'].find( - (schema) => schema.name === resultSetName - ); - if (!schema) { - throw new Error(`Schema ${resultSetName} not found.`); - } - const chunk = await this.cliServer.bqrsDecode( - resultsPath, - resultSetName - ); - return transformBqrsResultSet(schema, chunk); - } - - private compareResults( - fromResults: RawResultSet, - toResults: RawResultSet - ): QueryCompareResult { - // Only compare columns that have the same name - return resultsDiff(fromResults, toResults); - } - - private async openQuery(kind: 'from' | 'to') { - const toOpen = - kind === 'from' ? this.comparePair?.from : this.comparePair?.to; - if (toOpen) { - await this.showQueryResultsCallback(toOpen); - } - } -} diff --git a/extensions/ql-vscode/src/compare/compare-view.ts b/extensions/ql-vscode/src/compare/compare-view.ts new file mode 100644 index 00000000000..4ab42794d33 --- /dev/null +++ b/extensions/ql-vscode/src/compare/compare-view.ts @@ -0,0 +1,538 @@ +import { Uri, ViewColumn } from "vscode"; +import { join } from "path"; + +import type { + FromCompareViewMessage, + InterpretedQueryCompareResult, + QueryCompareResult, + RawQueryCompareResult, + ToCompareViewMessage, +} from "../common/interface-types"; +import { + ALERTS_TABLE_NAME, + SELECT_TABLE_NAME, +} from "../common/interface-types"; +import type { Logger } from "../common/logging"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import { extLogger } from "../common/logging/vscode"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { DatabaseManager } from "../databases/local-databases"; +import { jumpToLocation } from "../databases/local-databases/locations"; +import type { BqrsInfo, BqrsResultSetSchema } from "../common/bqrs-cli-types"; +// eslint-disable-next-line import/no-deprecated +import resultsDiff from "./resultsDiff"; +import type { CompletedLocalQueryInfo } from "../query-results"; +import { assertNever, getErrorMessage } from "../common/helpers-pure"; +import type { HistoryItemLabelProvider } from "../query-history/history-item-label-provider"; +import type { WebviewPanelConfig } from "../common/vscode/abstract-webview"; +import { AbstractWebview } from "../common/vscode/abstract-webview"; +import { telemetryListener } from "../common/vscode/telemetry"; +import { redactableError } from "../common/errors"; +import type { App } from "../common/app"; +import { bqrsToResultSet } from "../common/bqrs-raw-results-mapper"; +import type { RawResultSet } from "../common/raw-result-types"; +import type { CompareQueryInfo } from "./result-set-names"; +import { + findCommonResultSetNames, + findResultSetNames, + getResultSetNames, +} from "./result-set-names"; +import { isCanary } from "../config"; +import { nanoid } from "nanoid"; + +interface ComparePair { + from: CompletedLocalQueryInfo; + fromInfo: CompareQueryInfo; + to: CompletedLocalQueryInfo; + toInfo: CompareQueryInfo; + + commonResultSetNames: readonly string[]; +} + +function findSchema(info: BqrsInfo, name: string) { + const schema = info["result-sets"].find((schema) => schema.name === name); + if (schema === undefined) { + throw new Error(`Schema ${name} not found.`); + } + return schema; +} + +/** + * Check that `fromInfo` and `toInfo` have comparable schemas for the given + * result set names and get them if so. + */ +function getComparableSchemas( + fromInfo: CompareQueryInfo, + toInfo: CompareQueryInfo, + fromResultSetName: string, + toResultSetName: string, +): { fromSchema: BqrsResultSetSchema; toSchema: BqrsResultSetSchema } { + const fromSchema = findSchema(fromInfo.schemas, fromResultSetName); + const toSchema = findSchema(toInfo.schemas, toResultSetName); + + if (fromSchema.columns.length !== toSchema.columns.length) { + throw new Error("CodeQL Compare: Columns do not match."); + } + if (fromSchema.rows === 0) { + throw new Error("CodeQL Compare: Source query has no results."); + } + if (toSchema.rows === 0) { + throw new Error("CodeQL Compare: Target query has no results."); + } + return { fromSchema, toSchema }; +} + +export class CompareView extends AbstractWebview< + ToCompareViewMessage, + FromCompareViewMessage +> { + private comparePair: ComparePair | undefined; + + constructor( + app: App, + private databaseManager: DatabaseManager, + private cliServer: CodeQLCliServer, + private logger: Logger, + private labelProvider: HistoryItemLabelProvider, + private showQueryResultsCallback: ( + item: CompletedLocalQueryInfo, + ) => Promise, + ) { + super(app); + } + + async showResults( + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo, + selectedResultSetName?: string, + ) { + const [fromSchemas, toSchemas] = await Promise.all([ + this.cliServer.bqrsInfo(from.completedQuery.query.resultsPath), + this.cliServer.bqrsInfo(to.completedQuery.query.resultsPath), + ]); + + const [fromSchemaNames, toSchemaNames] = await Promise.all([ + getResultSetNames( + fromSchemas, + from.completedQuery.query.metadata, + from.completedQuery.query.interpretedResultsPath, + ), + getResultSetNames( + toSchemas, + to.completedQuery.query.metadata, + to.completedQuery.query.interpretedResultsPath, + ), + ]); + + const commonResultSetNames = findCommonResultSetNames( + fromSchemaNames, + toSchemaNames, + ); + + this.comparePair = { + from, + fromInfo: { + schemas: fromSchemas, + schemaNames: fromSchemaNames, + metadata: from.completedQuery.query.metadata, + interpretedResultsPath: + from.completedQuery.query.interpretedResultsPath, + }, + to, + toInfo: { + schemas: toSchemas, + schemaNames: toSchemaNames, + metadata: to.completedQuery.query.metadata, + interpretedResultsPath: to.completedQuery.query.interpretedResultsPath, + }, + commonResultSetNames, + }; + + const panel = await this.getPanel(); + panel.reveal(undefined, true); + await this.waitForPanelLoaded(); + + await this.postMessage({ + t: "setUserSettings", + userSettings: { + shouldShowProvenance: isCanary(), + }, + }); + + await this.postMessage({ + t: "setComparisonQueryInfo", + stats: { + fromQuery: { + // since we split the description into several rows + // only run interpolation if the label is user-defined + // otherwise we will wind up with duplicated rows + name: this.labelProvider.getShortLabel(from), + status: from.completedQuery.message, + time: from.startTime, + }, + toQuery: { + name: this.labelProvider.getShortLabel(to), + status: to.completedQuery.message, + time: to.startTime, + }, + }, + databaseUri: to.initialInfo.databaseInfo.databaseUri, + commonResultSetNames, + }); + + await this.showResultsInternal(selectedResultSetName); + } + + private async showResultsInternal(selectedResultSetName?: string) { + if (!this.comparePair) { + return; + } + + const panel = await this.getPanel(); + panel.reveal(undefined, true); + + await this.waitForPanelLoaded(); + const { + currentResultSetName, + currentResultSetDisplayName, + fromResultSetName, + toResultSetName, + } = await findResultSetNames( + this.comparePair.fromInfo, + this.comparePair.toInfo, + this.comparePair.commonResultSetNames, + selectedResultSetName, + ); + if (currentResultSetDisplayName) { + let result: QueryCompareResult | undefined; + let message: string | undefined; + try { + if (currentResultSetName === ALERTS_TABLE_NAME) { + result = await this.compareInterpretedResults(this.comparePair); + } else { + result = await this.compareResults( + this.comparePair, + fromResultSetName, + toResultSetName, + ); + } + } catch (e) { + message = getErrorMessage(e); + } + + await this.streamResults(result, currentResultSetDisplayName, message); + } + } + + private async streamResults( + result: QueryCompareResult | undefined, + currentResultSetName: string, + message: string | undefined, + ) { + // Since there is a string limit of 1GB in Node.js, the comparison is send as a JSON.stringified string to the webview + // and some comparisons may be larger than that, we sometimes need to stream results. This uses a heuristic of 2,000 results + // to determine if we should stream results. + + if (!this.shouldStreamResults(result)) { + await this.postMessage({ + t: "setComparisons", + result, + currentResultSetName, + message, + }); + return; + } + + const id = nanoid(); + + // Streaming itself is implemented like this: + // - 1 setup message which contains the first 1,000 results + // - n "add results" messages which contain 1,000 results each + // - 1 complete message which just tells the webview that we're done + + await this.postMessage({ + t: "streamingComparisonSetup", + id, + result: this.chunkResults(result, 0, 1000), + currentResultSetName, + message, + }); + + const { from, to } = result; + + const maxResults = Math.max(from.length, to.length); + for (let i = 1000; i < maxResults; i += 1000) { + const chunk = this.chunkResults(result, i, i + 1000); + + await this.postMessage({ + t: "streamingComparisonAddResults", + id, + result: chunk, + }); + } + + await this.postMessage({ + t: "streamingComparisonComplete", + id, + }); + } + + private shouldStreamResults( + result: QueryCompareResult | undefined, + ): result is QueryCompareResult { + if (result === undefined) { + return false; + } + + // We probably won't run into limits if we have less than 2,000 total results + const totalResults = result.from.length + result.to.length; + return totalResults > 2000; + } + + private chunkResults( + result: QueryCompareResult, + start: number, + end: number, + ): QueryCompareResult { + if (result.kind === "raw") { + return { + ...result, + from: result.from.slice(start, end), + to: result.to.slice(start, end), + }; + } + + if (result.kind === "interpreted") { + return { + ...result, + from: result.from.slice(start, end), + to: result.to.slice(start, end), + }; + } + + assertNever(result); + } + + protected getPanelConfig(): WebviewPanelConfig { + return { + viewId: "compareView", + title: "Compare CodeQL Query Results", + viewColumn: ViewColumn.Active, + preserveFocus: true, + view: "compare", + }; + } + + protected onPanelDispose(): void { + this.comparePair = undefined; + } + + protected async onMessage(msg: FromCompareViewMessage): Promise { + switch (msg.t) { + case "viewLoaded": + this.onWebViewLoaded(); + break; + + case "changeCompare": + await this.changeTable(msg.newResultSetName); + telemetryListener?.sendUIInteraction( + "compare-view-change-table-to-compare", + ); + break; + + case "viewSourceFile": + await jumpToLocation( + msg.databaseUri, + msg.loc, + this.databaseManager, + this.logger, + ); + break; + + case "openQuery": + await this.openQuery(msg.kind); + telemetryListener?.sendUIInteraction( + `compare-view-open-${msg.kind}-query`, + ); + break; + + case "telemetry": + telemetryListener?.sendUIInteraction(msg.action); + break; + + case "unhandledError": + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + msg.error, + )`Unhandled error in result comparison view: ${msg.error.message}`, + ); + break; + + default: + assertNever(msg); + } + } + + private async changeTable(newResultSetName: string) { + await this.showResultsInternal(newResultSetName); + } + + private async getResultSet( + bqrsInfo: BqrsInfo, + resultSetName: string, + resultsPath: string, + ): Promise { + const schema = findSchema(bqrsInfo, resultSetName); + const chunk = await this.cliServer.bqrsDecode(resultsPath, resultSetName); + return bqrsToResultSet(schema, chunk); + } + + private async compareResults( + { from, fromInfo, to, toInfo }: ComparePair, + fromResultSetName: string, + toResultSetName: string, + ): Promise { + const fromPath = from.completedQuery.query.resultsPath; + const toPath = to.completedQuery.query.resultsPath; + + const { fromSchema, toSchema } = getComparableSchemas( + fromInfo, + toInfo, + fromResultSetName, + toResultSetName, + ); + + // We use `bqrs diff` when the `--result-sets` option is supported, or when + // the result set names are the same (in which case we don't need the + // option). + const supportsBqrsDiffResultSets = + await this.cliServer.supportsFeature("bqrsDiffResultSets"); + if (supportsBqrsDiffResultSets || fromResultSetName === toResultSetName) { + const { uniquePath1, uniquePath2, cleanup } = + await this.cliServer.bqrsDiff(fromPath, toPath, { + retainResultSets: [], + resultSets: supportsBqrsDiffResultSets + ? [[fromResultSetName, toResultSetName]] + : [], + }); + try { + const uniqueInfo1 = await this.cliServer.bqrsInfo(uniquePath1); + const uniqueInfo2 = await this.cliServer.bqrsInfo(uniquePath2); + + // We avoid decoding the results sets if there is no overlap + if ( + fromSchema.rows === findSchema(uniqueInfo1, fromResultSetName).rows && + toSchema.rows === findSchema(uniqueInfo2, toResultSetName).rows + ) { + throw new Error( + "CodeQL Compare: No overlap between the selected queries.", + ); + } + + const fromUniqueResults = bqrsToResultSet( + fromSchema, + await this.cliServer.bqrsDecode(uniquePath1, fromResultSetName), + ); + const toUniqueResults = bqrsToResultSet( + toSchema, + await this.cliServer.bqrsDecode(uniquePath2, toResultSetName), + ); + return { + kind: "raw", + columns: fromUniqueResults.columns, + from: fromUniqueResults.rows, + to: toUniqueResults.rows, + }; + } finally { + await cleanup(); + } + } else { + // Legacy code path: Perform the diff directly in the extension when we + // can't use `bqrs diff`. + const [fromResultSet, toResultSet] = await Promise.all([ + this.getResultSet(fromInfo.schemas, fromResultSetName, fromPath), + this.getResultSet(toInfo.schemas, toResultSetName, toPath), + ]); + // eslint-disable-next-line import/no-deprecated + return resultsDiff(fromResultSet, toResultSet); + } + } + + private async compareInterpretedResults( + comparePair: ComparePair, + ): Promise { + const { from: fromQuery, fromInfo, to: toQuery, toInfo } = comparePair; + + // `ALERTS_TABLE_NAME` is inserted by `getResultSetNames` into the schema + // names even if it does not occur as a result set. Hence we check for + // `SELECT_TABLE_NAME` first, and use that if it exists. + const tableName = fromInfo.schemaNames.includes(SELECT_TABLE_NAME) + ? SELECT_TABLE_NAME + : ALERTS_TABLE_NAME; + + getComparableSchemas(fromInfo, toInfo, tableName, tableName); + + const database = this.databaseManager.findDatabaseItem( + Uri.parse(toQuery.initialInfo.databaseInfo.databaseUri), + ); + if (!database) { + throw new Error( + "Could not find database the queries. Please check that the database still exists.", + ); + } + + const { uniquePath1, uniquePath2, path, cleanup } = + await this.cliServer.bqrsDiff( + fromQuery.completedQuery.query.resultsPath, + toQuery.completedQuery.query.resultsPath, + ); + try { + const sarifOutput1 = join(path, "from.sarif"); + const sarifOutput2 = join(path, "to.sarif"); + + const sourceLocationPrefix = await database.getSourceLocationPrefix( + this.cliServer, + ); + const sourceArchiveUri = database.sourceArchive; + const sourceInfo = + sourceArchiveUri === undefined + ? undefined + : { + sourceArchive: sourceArchiveUri.fsPath, + sourceLocationPrefix, + }; + + const fromResultSet = await this.cliServer.interpretBqrsSarif( + fromQuery.completedQuery.query.metadata!, + uniquePath1, + sarifOutput1, + sourceInfo, + ); + const toResultSet = await this.cliServer.interpretBqrsSarif( + toQuery.completedQuery.query.metadata!, + uniquePath2, + sarifOutput2, + sourceInfo, + ); + + return { + kind: "interpreted", + sourceLocationPrefix, + from: fromResultSet.runs[0].results!, + to: toResultSet.runs[0].results!, + }; + } finally { + await cleanup(); + } + } + + private async openQuery(kind: "from" | "to") { + const toOpen = + kind === "from" ? this.comparePair?.from : this.comparePair?.to; + if (toOpen) { + await this.showQueryResultsCallback(toOpen); + } + } +} diff --git a/extensions/ql-vscode/src/compare/result-set-names.ts b/extensions/ql-vscode/src/compare/result-set-names.ts new file mode 100644 index 00000000000..cca08bceb31 --- /dev/null +++ b/extensions/ql-vscode/src/compare/result-set-names.ts @@ -0,0 +1,78 @@ +import { pathExists } from "fs-extra"; +import type { BqrsInfo } from "../common/bqrs-cli-types"; +import type { QueryMetadata } from "../common/interface-types"; +import { + ALERTS_TABLE_NAME, + getDefaultResultSetName, +} from "../common/interface-types"; + +export async function getResultSetNames( + schemas: BqrsInfo, + metadata: QueryMetadata | undefined, + interpretedResultsPath: string | undefined, +): Promise { + const schemaNames = schemas["result-sets"].map((schema) => schema.name); + + if (metadata?.kind !== "graph" && interpretedResultsPath) { + if (await pathExists(interpretedResultsPath)) { + schemaNames.push(ALERTS_TABLE_NAME); + } + } + + return schemaNames; +} + +export function findCommonResultSetNames( + fromSchemaNames: string[], + toSchemaNames: string[], +): string[] { + return fromSchemaNames.filter((name) => toSchemaNames.includes(name)); +} + +export type CompareQueryInfo = { + schemas: BqrsInfo; + schemaNames: string[]; + metadata: QueryMetadata | undefined; + interpretedResultsPath: string; +}; + +export async function findResultSetNames( + from: CompareQueryInfo, + to: CompareQueryInfo, + commonResultSetNames: readonly string[], + selectedResultSetName: string | undefined, +) { + const fromSchemaNames = from.schemaNames; + const toSchemaNames = to.schemaNames; + + // Fall back on the default result set names if there are no common ones. + const defaultFromResultSetName = fromSchemaNames.find((name) => + name.startsWith("#"), + ); + const defaultToResultSetName = toSchemaNames.find((name) => + name.startsWith("#"), + ); + + if ( + commonResultSetNames.length === 0 && + !(defaultFromResultSetName || defaultToResultSetName) + ) { + throw new Error( + "No common result sets found between the two queries. Please check that the queries are compatible.", + ); + } + + const currentResultSetName = + selectedResultSetName ?? getDefaultResultSetName(commonResultSetNames); + const fromResultSetName = currentResultSetName || defaultFromResultSetName!; + const toResultSetName = currentResultSetName || defaultToResultSetName!; + + return { + currentResultSetName, + currentResultSetDisplayName: + currentResultSetName || + `${defaultFromResultSetName} <-> ${defaultToResultSetName}`, + fromResultSetName, + toResultSetName, + }; +} diff --git a/extensions/ql-vscode/src/compare/resultsDiff.ts b/extensions/ql-vscode/src/compare/resultsDiff.ts index 3fe53696083..cf5d2505c51 100644 --- a/extensions/ql-vscode/src/compare/resultsDiff.ts +++ b/extensions/ql-vscode/src/compare/resultsDiff.ts @@ -1,5 +1,5 @@ -import { RawResultSet } from '../pure/bqrs-cli-types'; -import { QueryCompareResult } from '../pure/interface-types'; +import type { RawQueryCompareResult } from "../common/interface-types"; +import type { RawResultSet } from "../common/raw-result-types"; /** * Compare the rows of two queries. Use deep equality to determine if @@ -18,25 +18,18 @@ import { QueryCompareResult } from '../pure/interface-types'; * 1. number of columns do not match * 2. If either query is empty * 3. If the queries are 100% disjoint + * + * @deprecated This function is only used when the `bqrs diff` command does not + * support `--result-sets`. It should be removed when all supported CLI versions + * support this option. */ export default function resultsDiff( fromResults: RawResultSet, - toResults: RawResultSet -): QueryCompareResult { - - if (fromResults.schema.columns.length !== toResults.schema.columns.length) { - throw new Error('CodeQL Compare: Columns do not match.'); - } - - if (!fromResults.rows.length) { - throw new Error('CodeQL Compare: Source query has no results.'); - } - - if (!toResults.rows.length) { - throw new Error('CodeQL Compare: Target query has no results.'); - } - - const results = { + toResults: RawResultSet, +): RawQueryCompareResult { + const results: RawQueryCompareResult = { + kind: "raw", + columns: fromResults.columns, from: arrayDiff(fromResults.rows, toResults.rows), to: arrayDiff(toResults.rows, fromResults.rows), }; @@ -45,7 +38,7 @@ export default function resultsDiff( fromResults.rows.length === results.from.length && toResults.rows.length === results.to.length ) { - throw new Error('CodeQL Compare: No overlap between the selected queries.'); + throw new Error("CodeQL Compare: No overlap between the selected queries."); } return results; diff --git a/extensions/ql-vscode/src/compare/view/.eslintrc.js b/extensions/ql-vscode/src/compare/view/.eslintrc.js deleted file mode 100644 index 2068719172e..00000000000 --- a/extensions/ql-vscode/src/compare/view/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - env: { - browser: true - }, - extends: [ - "plugin:react/recommended" - ], - settings: { - react: { - version: 'detect' - } - } -} diff --git a/extensions/ql-vscode/src/compare/view/Compare.tsx b/extensions/ql-vscode/src/compare/view/Compare.tsx deleted file mode 100644 index b813567244d..00000000000 --- a/extensions/ql-vscode/src/compare/view/Compare.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import * as React from 'react'; -import { useState, useEffect } from 'react'; -import * as Rdom from 'react-dom'; - -import { - ToCompareViewMessage, - SetComparisonsMessage, -} from '../../pure/interface-types'; -import CompareSelector from './CompareSelector'; -import { vscode } from '../../view/vscode-api'; -import CompareTable from './CompareTable'; - -const emptyComparison: SetComparisonsMessage = { - t: 'setComparisons', - stats: {}, - rows: undefined, - columns: [], - commonResultSetNames: [], - currentResultSetName: '', - databaseUri: '', - message: 'Empty comparison' -}; - -export function Compare(_: Record): JSX.Element { - const [comparison, setComparison] = useState( - emptyComparison - ); - - const message = comparison.message || 'Empty comparison'; - const hasRows = comparison.rows && (comparison.rows.to.length || comparison.rows.from.length); - - useEffect(() => { - window.addEventListener('message', (evt: MessageEvent) => { - if (evt.origin === window.origin) { - const msg: ToCompareViewMessage = evt.data; - switch (msg.t) { - case 'setComparisons': - setComparison(msg); - } - } else { - // sanitize origin - const origin = evt.origin.replace(/\n|\r/g, ''); - console.error(`Invalid event origin ${origin}`); - } - }); - }); - if (!comparison) { - return
Waiting for results to load.
; - } - - try { - return ( - <> -
-
- Table to compare: -
- - vscode.postMessage({ t: 'changeCompare', newResultSetName }) - } - /> -
- {hasRows ? ( - - ) : ( -
{message}
- )} - - ); - } catch (err) { - console.error(err); - return
Error!
; - } -} - -Rdom.render( - , - document.getElementById('root'), - // Post a message to the extension when fully loaded. - () => vscode.postMessage({ t: 'compareViewLoaded' }) -); diff --git a/extensions/ql-vscode/src/compare/view/CompareSelector.tsx b/extensions/ql-vscode/src/compare/view/CompareSelector.tsx deleted file mode 100644 index c91ecbd159c..00000000000 --- a/extensions/ql-vscode/src/compare/view/CompareSelector.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import * as React from 'react'; - -interface Props { - availableResultSets: string[]; - currentResultSetName: string; - updateResultSet: (newResultSet: string) => void; -} - -export default function CompareSelector(props: Props) { - return ( - - ); -} diff --git a/extensions/ql-vscode/src/compare/view/CompareTable.tsx b/extensions/ql-vscode/src/compare/view/CompareTable.tsx deleted file mode 100644 index ada4627b88f..00000000000 --- a/extensions/ql-vscode/src/compare/view/CompareTable.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import * as React from 'react'; - -import { SetComparisonsMessage } from '../../pure/interface-types'; -import RawTableHeader from '../../view/RawTableHeader'; -import { className } from '../../view/result-table-utils'; -import { ResultRow } from '../../pure/bqrs-cli-types'; -import RawTableRow from '../../view/RawTableRow'; -import { vscode } from '../../view/vscode-api'; - -interface Props { - comparison: SetComparisonsMessage; -} - -export default function CompareTable(props: Props) { - const comparison = props.comparison; - const rows = props.comparison.rows!; - - async function openQuery(kind: 'from' | 'to') { - vscode.postMessage({ - t: 'openQuery', - kind, - }); - } - - function createRows(rows: ResultRow[], databaseUri: string) { - return ( - - {rows.map((row, rowIndex) => ( - - ))} - - ); - } - - return ( - - - - - - - - - - - - - - - - - - - - - -
- openQuery('from')} - className='vscode-codeql__compare-open' - > - {comparison.stats.fromQuery?.name} - - - openQuery('to')} - className='vscode-codeql__compare-open' - > - {comparison.stats.toQuery?.name} - -
{comparison.stats.fromQuery?.time}{comparison.stats.toQuery?.time}
{rows.from.length} rows removed{rows.to.length} rows added
- - - {createRows(rows.from, comparison.databaseUri)} -
-
- - - {createRows(rows.to, comparison.databaseUri)} -
-
- ); -} diff --git a/extensions/ql-vscode/src/compare/view/tsconfig.json b/extensions/ql-vscode/src/compare/view/tsconfig.json deleted file mode 100644 index 8350f8cfbe7..00000000000 --- a/extensions/ql-vscode/src/compare/view/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "module": "esnext", - "moduleResolution": "node", - "target": "es6", - "outDir": "out", - "lib": ["ES2021", "dom"], - "jsx": "react", - "sourceMap": true, - "rootDir": "..", - "strict": true, - "noUnusedLocals": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "experimentalDecorators": true - }, - "exclude": ["node_modules"] -} diff --git a/extensions/ql-vscode/src/config.ts b/extensions/ql-vscode/src/config.ts index 18e05d045c1..aabd1061b92 100644 --- a/extensions/ql-vscode/src/config.ts +++ b/extensions/ql-vscode/src/config.ts @@ -1,17 +1,40 @@ -import { DisposableObject } from './pure/disposable-object'; -import { workspace, Event, EventEmitter, ConfigurationChangeEvent, ConfigurationTarget } from 'vscode'; -import { DistributionManager } from './distribution'; -import { logger } from './logging'; -import { ONE_DAY_IN_MS } from './pure/time'; +import { DisposableObject } from "./common/disposable-object"; +import type { + ConfigurationChangeEvent, + ConfigurationScope, + Event, +} from "vscode"; +import { ConfigurationTarget, EventEmitter, workspace, Uri } from "vscode"; +import type { DistributionManager } from "./codeql-cli/distribution"; +import { extLogger } from "./common/logging/vscode"; +import { ONE_DAY_IN_MS } from "./common/time"; +import { + defaultFilterSortState, + FilterKey, + SortKey, +} from "./variant-analysis/shared/variant-analysis-filter-sort"; +import { substituteConfigVariables } from "./common/config-template"; +import { getErrorMessage } from "./common/helpers-pure"; + +export const ALL_SETTINGS: Setting[] = []; /** Helper class to look up a labelled (and possibly nested) setting. */ export class Setting { name: string; parent?: Setting; + private _hasChildren = false; constructor(name: string, parent?: Setting) { this.name = name; this.parent = parent; + if (parent !== undefined) { + parent._hasChildren = true; + } + ALL_SETTINGS.push(this); + } + + get hasChildren() { + return this._hasChildren; } get qualifiedName(): string { @@ -22,88 +45,227 @@ export class Setting { } } - getValue(): T { + getValue(scope?: ConfigurationScope | null): T { if (this.parent === undefined) { - throw new Error('Cannot get the value of a root setting.'); + throw new Error("Cannot get the value of a root setting."); } - return workspace.getConfiguration(this.parent.qualifiedName).get(this.name)!; + return workspace + .getConfiguration(this.parent.qualifiedName, scope) + .get(this.name)!; } updateValue(value: T, target: ConfigurationTarget): Thenable { if (this.parent === undefined) { - throw new Error('Cannot update the value of a root setting.'); + throw new Error("Cannot update the value of a root setting."); + } + return workspace + .getConfiguration(this.parent.qualifiedName) + .update(this.name, value, target); + } +} + +const VSCODE_DEBUG_SETTING = new Setting("debug", undefined); +export const VSCODE_SAVE_BEFORE_START_SETTING = new Setting( + "saveBeforeStart", + VSCODE_DEBUG_SETTING, +); + +const VSCODE_GITHUB_ENTERPRISE_SETTING = new Setting( + "github-enterprise", + undefined, +); +export const VSCODE_GITHUB_ENTERPRISE_URI_SETTING = new Setting( + "uri", + VSCODE_GITHUB_ENTERPRISE_SETTING, +); + +/** + * Get the value of the `github-enterprise.uri` setting, parsed as a URI. + * If the value is not set or cannot be parsed, return `undefined`. + */ +export function getEnterpriseUri(): Uri | undefined { + const config = VSCODE_GITHUB_ENTERPRISE_URI_SETTING.getValue(); + if (config) { + try { + let uri = Uri.parse(config, true); + if (uri.scheme === "http") { + uri = uri.with({ scheme: "https" }); + } + return uri; + } catch (e) { + void extLogger.log( + `Failed to parse the GitHub Enterprise URI: ${getErrorMessage(e)}`, + ); } - return workspace.getConfiguration(this.parent.qualifiedName).update(this.name, value, target); } + return undefined; +} + +/** + * Is the GitHub Enterprise URI set? + */ +export function hasEnterpriseUri(): boolean { + return getEnterpriseUri() !== undefined; +} + +/** + * Does the uri look like GHEC-DR? + */ +function isGhecDrUri(uri: Uri | undefined): boolean { + return uri !== undefined && uri.authority.toLowerCase().endsWith(".ghe.com"); +} + +/** + * Is the GitHub Enterprise URI set to something that looks like GHEC-DR? + */ +export function hasGhecDrUri(): boolean { + const uri = getEnterpriseUri(); + return isGhecDrUri(uri); +} + +/** + * The URI for GitHub.com. + */ +export const GITHUB_URL = new URL("https://github.com"); +export const GITHUB_API_URL = new URL("https://api.github.com"); + +/** + * If the GitHub Enterprise URI is set to something that looks like GHEC-DR, return it. + */ +export function getGhecDrUri(): Uri | undefined { + const uri = getEnterpriseUri(); + if (isGhecDrUri(uri)) { + return uri; + } else { + return undefined; + } +} +export function getGitHubInstanceUrl(): URL { + const ghecDrUri = getGhecDrUri(); + if (ghecDrUri) { + return new URL(ghecDrUri.toString()); + } + return GITHUB_URL; } -const ROOT_SETTING = new Setting('codeQL'); +export function getGitHubInstanceApiUrl(): URL { + const ghecDrUri = getGhecDrUri(); + if (ghecDrUri) { + const url = new URL(ghecDrUri.toString()); + url.hostname = `api.${url.hostname}`; + return url; + } + return GITHUB_API_URL; +} -// Global configuration -const TELEMETRY_SETTING = new Setting('telemetry', ROOT_SETTING); -const AST_VIEWER_SETTING = new Setting('astViewer', ROOT_SETTING); -const GLOBAL_TELEMETRY_SETTING = new Setting('telemetry'); +const ROOT_SETTING = new Setting("codeQL"); -export const LOG_TELEMETRY = new Setting('logTelemetry', TELEMETRY_SETTING); -export const ENABLE_TELEMETRY = new Setting('enableTelemetry', TELEMETRY_SETTING); +// Telemetry configuration +const TELEMETRY_SETTING = new Setting("telemetry", ROOT_SETTING); -export const GLOBAL_ENABLE_TELEMETRY = new Setting('enableTelemetry', GLOBAL_TELEMETRY_SETTING); +export const LOG_TELEMETRY = new Setting("logTelemetry", TELEMETRY_SETTING); + +// Legacy setting that is no longer used, but is used for showing a message when the user upgrades. +export const ENABLE_TELEMETRY = new Setting( + "enableTelemetry", + TELEMETRY_SETTING, +); // Distribution configuration -const DISTRIBUTION_SETTING = new Setting('cli', ROOT_SETTING); -export const CUSTOM_CODEQL_PATH_SETTING = new Setting('executablePath', DISTRIBUTION_SETTING); -const INCLUDE_PRERELEASE_SETTING = new Setting('includePrerelease', DISTRIBUTION_SETTING); -const PERSONAL_ACCESS_TOKEN_SETTING = new Setting('personalAccessToken', DISTRIBUTION_SETTING); +const DISTRIBUTION_SETTING = new Setting("cli", ROOT_SETTING); +export const CUSTOM_CODEQL_PATH_SETTING = new Setting( + "executablePath", + DISTRIBUTION_SETTING, +); +const INCLUDE_PRERELEASE_SETTING = new Setting( + "includePrerelease", + DISTRIBUTION_SETTING, +); +const PERSONAL_ACCESS_TOKEN_SETTING = new Setting( + "personalAccessToken", + DISTRIBUTION_SETTING, +); +const CLI_DOWNLOAD_TIMEOUT_SETTING = new Setting( + "downloadTimeout", + DISTRIBUTION_SETTING, +); +const CLI_CHANNEL_SETTING = new Setting("channel", DISTRIBUTION_SETTING); // Query History configuration -const QUERY_HISTORY_SETTING = new Setting('queryHistory', ROOT_SETTING); -const QUERY_HISTORY_FORMAT_SETTING = new Setting('format', QUERY_HISTORY_SETTING); -const QUERY_HISTORY_TTL = new Setting('ttl', QUERY_HISTORY_SETTING); +const QUERY_HISTORY_SETTING = new Setting("queryHistory", ROOT_SETTING); +const QUERY_HISTORY_FORMAT_SETTING = new Setting( + "format", + QUERY_HISTORY_SETTING, +); +const QUERY_HISTORY_TTL = new Setting("ttl", QUERY_HISTORY_SETTING); /** When these settings change, the distribution should be updated. */ -const DISTRIBUTION_CHANGE_SETTINGS = [CUSTOM_CODEQL_PATH_SETTING, INCLUDE_PRERELEASE_SETTING, PERSONAL_ACCESS_TOKEN_SETTING]; +const DISTRIBUTION_CHANGE_SETTINGS = [ + CUSTOM_CODEQL_PATH_SETTING, + INCLUDE_PRERELEASE_SETTING, + PERSONAL_ACCESS_TOKEN_SETTING, + CLI_CHANNEL_SETTING, +]; + +export type CLIChannel = "stable" | "nightly"; export interface DistributionConfig { readonly customCodeQlPath?: string; updateCustomCodeQlPath: (newPath: string | undefined) => Promise; includePrerelease: boolean; personalAccessToken?: string; - ownerName?: string; - repositoryName?: string; + downloadTimeout: number; + channel: CLIChannel; onDidChangeConfiguration?: Event; } // Query server configuration -const RUNNING_QUERIES_SETTING = new Setting('runningQueries', ROOT_SETTING); -const NUMBER_OF_THREADS_SETTING = new Setting('numberOfThreads', RUNNING_QUERIES_SETTING); -const SAVE_CACHE_SETTING = new Setting('saveCache', RUNNING_QUERIES_SETTING); -const CACHE_SIZE_SETTING = new Setting('cacheSize', RUNNING_QUERIES_SETTING); -const TIMEOUT_SETTING = new Setting('timeout', RUNNING_QUERIES_SETTING); -const MEMORY_SETTING = new Setting('memory', RUNNING_QUERIES_SETTING); -const DEBUG_SETTING = new Setting('debug', RUNNING_QUERIES_SETTING); -const MAX_PATHS = new Setting('maxPaths', RUNNING_QUERIES_SETTING); -const RUNNING_TESTS_SETTING = new Setting('runningTests', ROOT_SETTING); -const RESULTS_DISPLAY_SETTING = new Setting('resultsDisplay', ROOT_SETTING); - -export const ADDITIONAL_TEST_ARGUMENTS_SETTING = new Setting('additionalTestArguments', RUNNING_TESTS_SETTING); -export const NUMBER_OF_TEST_THREADS_SETTING = new Setting('numberOfThreads', RUNNING_TESTS_SETTING); -export const MAX_QUERIES = new Setting('maxQueries', RUNNING_QUERIES_SETTING); -export const AUTOSAVE_SETTING = new Setting('autoSave', RUNNING_QUERIES_SETTING); -export const PAGE_SIZE = new Setting('pageSize', RESULTS_DISPLAY_SETTING); -const CUSTOM_LOG_DIRECTORY_SETTING = new Setting('customLogDirectory', RUNNING_QUERIES_SETTING); +const RUNNING_QUERIES_SETTING = new Setting("runningQueries", ROOT_SETTING); +const NUMBER_OF_THREADS_SETTING = new Setting( + "numberOfThreads", + RUNNING_QUERIES_SETTING, +); +const CACHE_SIZE_SETTING = new Setting("cacheSize", RUNNING_QUERIES_SETTING); +const TIMEOUT_SETTING = new Setting("timeout", RUNNING_QUERIES_SETTING); +const MEMORY_SETTING = new Setting("memory", RUNNING_QUERIES_SETTING); +const DEBUG_SETTING = new Setting("debug", RUNNING_QUERIES_SETTING); +const MAX_PATHS = new Setting("maxPaths", RUNNING_QUERIES_SETTING); +const RUNNING_TESTS_SETTING = new Setting("runningTests", ROOT_SETTING); +const RESULTS_DISPLAY_SETTING = new Setting("resultsDisplay", ROOT_SETTING); +const USE_EXTENSION_PACKS = new Setting( + "useExtensionPacks", + RUNNING_QUERIES_SETTING, +); + +export const ADDITIONAL_TEST_ARGUMENTS_SETTING = new Setting( + "additionalTestArguments", + RUNNING_TESTS_SETTING, +); +export const NUMBER_OF_TEST_THREADS_SETTING = new Setting( + "numberOfThreads", + RUNNING_TESTS_SETTING, +); +export const MAX_QUERIES = new Setting("maxQueries", RUNNING_QUERIES_SETTING); +export const PAGE_SIZE = new Setting("pageSize", RESULTS_DISPLAY_SETTING); +const CUSTOM_LOG_DIRECTORY_SETTING = new Setting( + "customLogDirectory", + RUNNING_QUERIES_SETTING, +); /** When these settings change, the running query server should be restarted. */ const QUERY_SERVER_RESTARTING_SETTINGS = [ - NUMBER_OF_THREADS_SETTING, SAVE_CACHE_SETTING, CACHE_SIZE_SETTING, MEMORY_SETTING, - DEBUG_SETTING, CUSTOM_LOG_DIRECTORY_SETTING, + NUMBER_OF_THREADS_SETTING, + CACHE_SIZE_SETTING, + MEMORY_SETTING, + DEBUG_SETTING, + CUSTOM_LOG_DIRECTORY_SETTING, ]; export interface QueryServerConfig { codeQlPath: string; debug: boolean; numThreads: number; - saveCache: boolean; cacheSize: number; queryMemoryMb?: number; timeoutSecs: number; @@ -112,7 +274,10 @@ export interface QueryServerConfig { } /** When these settings change, the query history should be refreshed. */ -const QUERY_HISTORY_SETTINGS = [QUERY_HISTORY_FORMAT_SETTING, QUERY_HISTORY_TTL]; +const QUERY_HISTORY_SETTINGS = [ + QUERY_HISTORY_FORMAT_SETTING, + QUERY_HISTORY_TTL, +]; export interface QueryHistoryConfig { format: string; @@ -120,30 +285,47 @@ export interface QueryHistoryConfig { onDidChangeConfiguration: Event; } -const CLI_SETTINGS = [ADDITIONAL_TEST_ARGUMENTS_SETTING, NUMBER_OF_TEST_THREADS_SETTING, NUMBER_OF_THREADS_SETTING, MAX_PATHS]; +const CLI_SETTINGS = [ + ADDITIONAL_TEST_ARGUMENTS_SETTING, + NUMBER_OF_TEST_THREADS_SETTING, + NUMBER_OF_THREADS_SETTING, + MAX_PATHS, + USE_EXTENSION_PACKS, +]; export interface CliConfig { additionalTestArguments: string[]; numberTestThreads: number; numberThreads: number; maxPaths: number; + useExtensionPacks: boolean; onDidChangeConfiguration?: Event; + setUseExtensionPacks: (useExtensionPacks: boolean) => Promise; } - export abstract class ConfigListener extends DisposableObject { - protected readonly _onDidChangeConfiguration = this.push(new EventEmitter()); + protected readonly _onDidChangeConfiguration = this.push( + new EventEmitter(), + ); constructor() { super(); this.updateConfiguration(); - this.push(workspace.onDidChangeConfiguration(this.handleDidChangeConfiguration, this)); + this.push( + workspace.onDidChangeConfiguration( + this.handleDidChangeConfiguration, + this, + ), + ); } /** * Calls `updateConfiguration` if any of the `relevantSettings` have changed. */ - protected handleDidChangeConfigurationForRelevantSettings(relevantSettings: Setting[], e: ConfigurationChangeEvent): void { + protected handleDidChangeConfigurationForRelevantSettings( + relevantSettings: Setting[], + e: ConfigurationChangeEvent, + ): void { // Check whether any options that affect query running were changed. for (const option of relevantSettings) { // TODO: compare old and new values, only update if there was actually a change? @@ -154,7 +336,9 @@ export abstract class ConfigListener extends DisposableObject { } } - protected abstract handleDidChangeConfiguration(e: ConfigurationChangeEvent): void; + protected abstract handleDidChangeConfiguration( + e: ConfigurationChangeEvent, + ): void; private updateConfiguration(): void { this._onDidChangeConfiguration.fire(undefined); } @@ -164,9 +348,15 @@ export abstract class ConfigListener extends DisposableObject { } } -export class DistributionConfigListener extends ConfigListener implements DistributionConfig { +export class DistributionConfigListener + extends ConfigListener + implements DistributionConfig +{ public get customCodeQlPath(): string | undefined { - return CUSTOM_CODEQL_PATH_SETTING.getValue() || undefined; + const testCliPath = + isIntegrationTestMode() && + process.env.VSCODE_CODEQL_TESTING_CODEQL_CLI_TEST_PATH; + return CUSTOM_CODEQL_PATH_SETTING.getValue() || testCliPath || undefined; } public get includePrerelease(): boolean { @@ -177,29 +367,52 @@ export class DistributionConfigListener extends ConfigListener implements Distri return PERSONAL_ACCESS_TOKEN_SETTING.getValue() || undefined; } + public get downloadTimeout(): number { + return CLI_DOWNLOAD_TIMEOUT_SETTING.getValue() || 10; + } + public async updateCustomCodeQlPath(newPath: string | undefined) { - await CUSTOM_CODEQL_PATH_SETTING.updateValue(newPath, ConfigurationTarget.Global); + await CUSTOM_CODEQL_PATH_SETTING.updateValue( + newPath, + ConfigurationTarget.Global, + ); + } + + public get channel(): CLIChannel { + return CLI_CHANNEL_SETTING.getValue() === "nightly" ? "nightly" : "stable"; } protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { - this.handleDidChangeConfigurationForRelevantSettings(DISTRIBUTION_CHANGE_SETTINGS, e); + this.handleDidChangeConfigurationForRelevantSettings( + DISTRIBUTION_CHANGE_SETTINGS, + e, + ); } } -export class QueryServerConfigListener extends ConfigListener implements QueryServerConfig { - public constructor(private _codeQlPath = '') { +export class QueryServerConfigListener + extends ConfigListener + implements QueryServerConfig +{ + public constructor(private _codeQlPath = "") { super(); } - public static async createQueryServerConfigListener(distributionManager: DistributionManager): Promise { - const codeQlPath = await distributionManager.getCodeQlPathWithoutVersionCheck(); - const config = new QueryServerConfigListener(codeQlPath!); + public static async createQueryServerConfigListener( + distributionManager: DistributionManager, + ): Promise { + const codeQlPath = + await distributionManager.getCodeQlPathWithoutVersionCheck(); + const config = new QueryServerConfigListener(codeQlPath); if (distributionManager.onDidChangeDistribution) { - config.push(distributionManager.onDidChangeDistribution(async () => { - const codeQlPath = await distributionManager.getCodeQlPathWithoutVersionCheck(); - config._codeQlPath = codeQlPath!; - config._onDidChangeConfiguration.fire(undefined); - })); + config.push( + distributionManager.onDidChangeDistribution(async () => { + const codeQlPath = + await distributionManager.getCodeQlPathWithoutVersionCheck(); + config._codeQlPath = codeQlPath!; + config._onDidChangeConfiguration.fire(undefined); + }), + ); } return config; } @@ -216,10 +429,6 @@ export class QueryServerConfigListener extends ConfigListener implements QuerySe return NUMBER_OF_THREADS_SETTING.getValue(); } - public get saveCache(): boolean { - return SAVE_CACHE_SETTING.getValue(); - } - public get cacheSize(): number { return CACHE_SIZE_SETTING.getValue() || 0; } @@ -234,8 +443,10 @@ export class QueryServerConfigListener extends ConfigListener implements QuerySe if (memory === null) { return undefined; } - if (memory == 0 || typeof (memory) !== 'number') { - void logger.log(`Ignoring value '${memory}' for setting ${MEMORY_SETTING.qualifiedName}`); + if (memory === 0 || typeof memory !== "number") { + void extLogger.log( + `Ignoring value '${memory}' for setting ${MEMORY_SETTING.qualifiedName}`, + ); return undefined; } return memory; @@ -246,13 +457,22 @@ export class QueryServerConfigListener extends ConfigListener implements QuerySe } protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { - this.handleDidChangeConfigurationForRelevantSettings(QUERY_SERVER_RESTARTING_SETTINGS, e); + this.handleDidChangeConfigurationForRelevantSettings( + QUERY_SERVER_RESTARTING_SETTINGS, + e, + ); } } -export class QueryHistoryConfigListener extends ConfigListener implements QueryHistoryConfig { +export class QueryHistoryConfigListener + extends ConfigListener + implements QueryHistoryConfig +{ protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { - this.handleDidChangeConfigurationForRelevantSettings(QUERY_HISTORY_SETTINGS, e); + this.handleDidChangeConfigurationForRelevantSettings( + QUERY_HISTORY_SETTINGS, + e, + ); } public get format(): string { @@ -284,6 +504,19 @@ export class CliConfigListener extends ConfigListener implements CliConfig { return MAX_PATHS.getValue(); } + public get useExtensionPacks(): boolean { + // currently, we are restricting the values of this setting to 'all' or 'none'. + return USE_EXTENSION_PACKS.getValue() === "all"; + } + + // Exposed for testing only + public async setUseExtensionPacks(newUseExtensionPacks: boolean) { + await USE_EXTENSION_PACKS.updateValue( + newUseExtensionPacks ? "all" : "none", + ConfigurationTarget.Global, + ); + } + protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { this.handleDidChangeConfigurationForRelevantSettings(CLI_SETTINGS, e); } @@ -292,13 +525,15 @@ export class CliConfigListener extends ConfigListener implements CliConfig { /** * Whether to enable CodeLens for the 'Quick Evaluation' command. */ -const QUICK_EVAL_CODELENS_SETTING = new Setting('quickEvalCodelens', RUNNING_QUERIES_SETTING); +const QUICK_EVAL_CODELENS_SETTING = new Setting( + "quickEvalCodelens", + RUNNING_QUERIES_SETTING, +); export function isQuickEvalCodelensEnabled() { return QUICK_EVAL_CODELENS_SETTING.getValue(); } - // Enable experimental features /** @@ -311,51 +546,45 @@ export function isQuickEvalCodelensEnabled() { /** * Enables canary features of this extension. Recommended for all internal users. */ -export const CANARY_FEATURES = new Setting('canary', ROOT_SETTING); +export const CANARY_FEATURES = new Setting("canary", ROOT_SETTING); export function isCanary() { return !!CANARY_FEATURES.getValue(); } -/** - * Avoids caching in the AST viewer if the user is also a canary user. - */ -export const NO_CACHE_AST_VIEWER = new Setting('disableCache', AST_VIEWER_SETTING); +const LOG_INSIGHTS_SETTING = new Setting("logInsights", ROOT_SETTING); +export const JOIN_ORDER_WARNING_THRESHOLD = new Setting( + "joinOrderWarningThreshold", + LOG_INSIGHTS_SETTING, +); -// Settings for variant analysis -const REMOTE_QUERIES_SETTING = new Setting('variantAnalysis', ROOT_SETTING); +export function joinOrderWarningThreshold(): number { + return JOIN_ORDER_WARNING_THRESHOLD.getValue(); +} +const AST_VIEWER_SETTING = new Setting("astViewer", ROOT_SETTING); /** - * Lists of GitHub repositories that you want to query remotely via the "Run Variant Analysis" command. - * Note: This command is only available for internal users. - * - * This setting should be a JSON object where each key is a user-specified name (string), - * and the value is an array of GitHub repositories (of the form `/`). + * Hidden setting: Avoids caching in the AST viewer if the user is also a canary user. */ -const REMOTE_REPO_LISTS = new Setting('repositoryLists', REMOTE_QUERIES_SETTING); - -export function getRemoteRepositoryLists(): Record | undefined { - return REMOTE_REPO_LISTS.getValue>() || undefined; -} - -export async function setRemoteRepositoryLists(lists: Record | undefined) { - await REMOTE_REPO_LISTS.updateValue(lists, ConfigurationTarget.Global); -} - +export const NO_CACHE_AST_VIEWER = new Setting( + "disableCache", + AST_VIEWER_SETTING, +); + +const CONTEXTUAL_QUERIES_SETTINGS = new Setting( + "contextualQueries", + ROOT_SETTING, +); /** - * Path to a file that contains lists of GitHub repositories that you want to query remotely via - * the "Run Variant Analysis" command. - * Note: This command is only available for internal users. - * - * This setting should be a path to a JSON file that contains a JSON object where each key is a - * user-specified name (string), and the value is an array of GitHub repositories - * (of the form `/`). + * Hidden setting: Avoids caching in jump to def and find refs contextual queries if the user is also a canary user. */ -const REPO_LISTS_PATH = new Setting('repositoryListsPath', REMOTE_QUERIES_SETTING); +export const NO_CACHE_CONTEXTUAL_QUERIES = new Setting( + "disableCache", + CONTEXTUAL_QUERIES_SETTINGS, +); -export function getRemoteRepositoryListsPath(): string | undefined { - return REPO_LISTS_PATH.getValue() || undefined; -} +// Settings for variant analysis +const VARIANT_ANALYSIS_SETTING = new Setting("variantAnalysis", ROOT_SETTING); /** * The name of the "controller" repository that you want to use with the "Run Variant Analysis" command. @@ -363,7 +592,10 @@ export function getRemoteRepositoryListsPath(): string | undefined { * * This setting should be a GitHub repository of the form `/`. */ -const REMOTE_CONTROLLER_REPO = new Setting('controllerRepo', REMOTE_QUERIES_SETTING); +const REMOTE_CONTROLLER_REPO = new Setting( + "controllerRepo", + VARIANT_ANALYSIS_SETTING, +); export function getRemoteControllerRepo(): string | undefined { return REMOTE_CONTROLLER_REPO.getValue() || undefined; @@ -373,17 +605,365 @@ export async function setRemoteControllerRepo(repo: string | undefined) { await REMOTE_CONTROLLER_REPO.updateValue(repo, ConfigurationTarget.Global); } +export interface VariantAnalysisConfig { + controllerRepo: string | undefined; + showSystemDefinedRepositoryLists: boolean; + /** + * This uses a URL instead of a URI because the URL class is available in + * unit tests and is fully browser-compatible. + */ + githubUrl: URL; + onDidChangeConfiguration?: Event; +} + +export class VariantAnalysisConfigListener + extends ConfigListener + implements VariantAnalysisConfig +{ + protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { + this.handleDidChangeConfigurationForRelevantSettings( + [VARIANT_ANALYSIS_SETTING, VSCODE_GITHUB_ENTERPRISE_URI_SETTING], + e, + ); + } + + public get controllerRepo(): string | undefined { + return getRemoteControllerRepo(); + } + + public get showSystemDefinedRepositoryLists(): boolean { + return !hasEnterpriseUri(); + } + + public get githubUrl(): URL { + return getGitHubInstanceUrl(); + } +} + +const VARIANT_ANALYSIS_FILTER_RESULTS = new Setting( + "defaultResultsFilter", + VARIANT_ANALYSIS_SETTING, +); + +export function getVariantAnalysisDefaultResultsFilter(): FilterKey { + const value = VARIANT_ANALYSIS_FILTER_RESULTS.getValue(); + if (Object.values(FilterKey).includes(value as FilterKey)) { + return value as FilterKey; + } else { + return defaultFilterSortState.filterKey; + } +} + +const VARIANT_ANALYSIS_SORT_RESULTS = new Setting( + "defaultResultsSort", + VARIANT_ANALYSIS_SETTING, +); + +export function getVariantAnalysisDefaultResultsSort(): SortKey { + const value = VARIANT_ANALYSIS_SORT_RESULTS.getValue(); + if (Object.values(SortKey).includes(value as SortKey)) { + return value as SortKey; + } else { + return defaultFilterSortState.sortKey; + } +} + /** * The branch of "github/codeql-variant-analysis-action" to use with the "Run Variant Analysis" command. * Default value is "main". * Note: This command is only available for internal users. */ -const ACTION_BRANCH = new Setting('actionBranch', REMOTE_QUERIES_SETTING); +const ACTION_BRANCH = new Setting("actionBranch", VARIANT_ANALYSIS_SETTING); export function getActionBranch(): string { - return ACTION_BRANCH.getValue() || 'main'; + return ACTION_BRANCH.getValue() || "main"; } export function isIntegrationTestMode() { - return process.env.INTEGRATION_TEST_MODE === 'true'; + return process.env.INTEGRATION_TEST_MODE === "true"; +} + +// Settings for mocking the GitHub API. +const MOCK_GH_API_SERVER = new Setting("mockGitHubApiServer", ROOT_SETTING); + +/** + * A flag indicating whether to enable a mock GitHub API server. + */ +const MOCK_GH_API_SERVER_ENABLED = new Setting("enabled", MOCK_GH_API_SERVER); + +/** + * A path to a directory containing test scenarios. If this setting is not set, + * the mock server will a default location for test scenarios in dev mode, and + * will show a menu to select a directory in production mode. + */ +const MOCK_GH_API_SERVER_SCENARIOS_PATH = new Setting( + "scenariosPath", + MOCK_GH_API_SERVER, +); + +export interface MockGitHubApiConfig { + mockServerEnabled: boolean; + mockScenariosPath: string; + onDidChangeConfiguration: Event; +} + +export class MockGitHubApiConfigListener + extends ConfigListener + implements MockGitHubApiConfig +{ + protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { + this.handleDidChangeConfigurationForRelevantSettings( + [MOCK_GH_API_SERVER], + e, + ); + } + + public get mockServerEnabled(): boolean { + return !!MOCK_GH_API_SERVER_ENABLED.getValue(); + } + + public get mockScenariosPath(): string { + return MOCK_GH_API_SERVER_SCENARIOS_PATH.getValue(); + } +} + +export function getMockGitHubApiServerScenariosPath(): string | undefined { + return MOCK_GH_API_SERVER_SCENARIOS_PATH.getValue(); +} + +/** + * Enables features that are specific to the codespaces-codeql template workspace from + * https://github.com/github/codespaces-codeql. + */ +export const CODESPACES_TEMPLATE = new Setting( + "codespacesTemplate", + ROOT_SETTING, +); + +export function isCodespacesTemplate() { + return !!CODESPACES_TEMPLATE.getValue(); +} + +// Deprecated after v1.9.4. Can be removed in a few versions. +const DATABASE_DOWNLOAD_SETTING = new Setting("databaseDownload", ROOT_SETTING); +const DEPRECATED_ALLOW_HTTP_SETTING = new Setting( + "allowHttp", + DATABASE_DOWNLOAD_SETTING, +); + +const ADDING_DATABASES_SETTING = new Setting("addingDatabases", ROOT_SETTING); + +const DOWNLOAD_TIMEOUT_SETTING = new Setting( + "downloadTimeout", + ADDING_DATABASES_SETTING, +); +const ALLOW_HTTP_SETTING = new Setting("allowHttp", ADDING_DATABASES_SETTING); + +export function downloadTimeout(): number { + return DOWNLOAD_TIMEOUT_SETTING.getValue() || 10; +} + +export function allowHttp(): boolean { + return ( + ALLOW_HTTP_SETTING.getValue() || + DEPRECATED_ALLOW_HTTP_SETTING.getValue() || + false + ); +} + +export const ADD_DATABASE_SOURCE_TO_WORKSPACE_SETTING = new Setting( + "addDatabaseSourceToWorkspace", + ADDING_DATABASES_SETTING, +); + +export function addDatabaseSourceToWorkspace(): boolean { + return ADD_DATABASE_SOURCE_TO_WORKSPACE_SETTING.getValue() || false; +} + +/** + * Parent setting for all settings related to the "Create Query" command. + */ +const CREATE_QUERY_COMMAND = new Setting("createQuery", ROOT_SETTING); + +/** + * The name of the folder where we want to create QL packs. + **/ +const QL_PACK_LOCATION = new Setting("qlPackLocation", CREATE_QUERY_COMMAND); + +export function getQlPackLocation(): string | undefined { + return QL_PACK_LOCATION.getValue() || undefined; +} + +export async function setQlPackLocation(folder: string | undefined) { + await QL_PACK_LOCATION.updateValue(folder, ConfigurationTarget.Workspace); +} + +/** + * Whether to ask the user to autogenerate a QL pack. The options are "ask" and "never". + **/ +const AUTOGENERATE_QL_PACKS = new Setting( + "autogenerateQlPacks", + CREATE_QUERY_COMMAND, +); + +const AutogenerateQLPacksValues = ["ask", "never"] as const; +type AutogenerateQLPacks = (typeof AutogenerateQLPacksValues)[number]; + +export function getAutogenerateQlPacks(): AutogenerateQLPacks { + const value = AUTOGENERATE_QL_PACKS.getValue(); + return AutogenerateQLPacksValues.includes(value) ? value : "ask"; +} + +export async function setAutogenerateQlPacks(choice: AutogenerateQLPacks) { + await AUTOGENERATE_QL_PACKS.updateValue( + choice, + ConfigurationTarget.Workspace, + ); +} + +const MODEL_SETTING = new Setting("model", ROOT_SETTING); +const FLOW_GENERATION = new Setting("flowGeneration", MODEL_SETTING); +const MODEL_EVALUATION = new Setting("evaluation", MODEL_SETTING); +const MODEL_PACK_LOCATION = new Setting("packLocation", MODEL_SETTING); +const MODEL_PACK_NAME = new Setting("packName", MODEL_SETTING); + +export type ModelConfigPackVariables = { + database: string; + owner: string; + name: string; + language: string; +}; + +export interface ModelConfig { + flowGeneration: boolean; + getPackLocation( + languageId: string, + variables: ModelConfigPackVariables, + ): string; + getPackName(languageId: string, variables: ModelConfigPackVariables): string; +} + +export class ModelConfigListener extends ConfigListener implements ModelConfig { + protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { + this.handleDidChangeConfigurationForRelevantSettings( + [MODEL_SETTING, VSCODE_GITHUB_ENTERPRISE_URI_SETTING], + e, + ); + } + + public get flowGeneration(): boolean { + return !!FLOW_GENERATION.getValue(); + } + + public get modelEvaluation(): boolean { + return !!MODEL_EVALUATION.getValue(); + } + + public getPackLocation( + languageId: string, + variables: ModelConfigPackVariables, + ): string { + return substituteConfigVariables( + MODEL_PACK_LOCATION.getValue({ + languageId, + }), + variables, + ); + } + + public getPackName( + languageId: string, + variables: ModelConfigPackVariables, + ): string { + return substituteConfigVariables( + MODEL_PACK_NAME.getValue({ + languageId, + }), + variables, + ); + } +} + +const GITHUB_DATABASE_SETTING = new Setting("githubDatabase", ROOT_SETTING); + +const GITHUB_DATABASE_DOWNLOAD = new Setting( + "download", + GITHUB_DATABASE_SETTING, +); + +const GitHubDatabaseDownloadValues = ["ask", "never"] as const; +type GitHubDatabaseDownload = (typeof GitHubDatabaseDownloadValues)[number]; + +const GITHUB_DATABASE_UPDATE = new Setting("update", GITHUB_DATABASE_SETTING); + +const GitHubDatabaseUpdateValues = ["ask", "never"] as const; +type GitHubDatabaseUpdate = (typeof GitHubDatabaseUpdateValues)[number]; + +export interface GitHubDatabaseConfig { + download: GitHubDatabaseDownload; + update: GitHubDatabaseUpdate; + setDownload( + value: GitHubDatabaseDownload, + target?: ConfigurationTarget, + ): Promise; + setUpdate( + value: GitHubDatabaseUpdate, + target?: ConfigurationTarget, + ): Promise; +} + +export class GitHubDatabaseConfigListener + extends ConfigListener + implements GitHubDatabaseConfig +{ + protected handleDidChangeConfiguration(e: ConfigurationChangeEvent): void { + this.handleDidChangeConfigurationForRelevantSettings( + [GITHUB_DATABASE_SETTING], + e, + ); + } + + public get download(): GitHubDatabaseDownload { + const value = GITHUB_DATABASE_DOWNLOAD.getValue(); + return GitHubDatabaseDownloadValues.includes(value) ? value : "ask"; + } + + public get update(): GitHubDatabaseUpdate { + const value = GITHUB_DATABASE_UPDATE.getValue(); + return GitHubDatabaseUpdateValues.includes(value) ? value : "ask"; + } + + public async setDownload( + value: GitHubDatabaseDownload, + target: ConfigurationTarget = ConfigurationTarget.Workspace, + ): Promise { + await GITHUB_DATABASE_DOWNLOAD.updateValue(value, target); + } + + public async setUpdate( + value: GitHubDatabaseUpdate, + target: ConfigurationTarget = ConfigurationTarget.Workspace, + ): Promise { + await GITHUB_DATABASE_UPDATE.updateValue(value, target); + } +} + +const AUTOFIX_SETTING = new Setting("autofix", ROOT_SETTING); + +export const AUTOFIX_PATH = new Setting("path", AUTOFIX_SETTING); + +export function getAutofixPath(): string | undefined { + return AUTOFIX_PATH.getValue() || undefined; +} + +export const AUTOFIX_MODEL = new Setting("model", AUTOFIX_SETTING); + +export function getAutofixModel(): string | undefined { + return AUTOFIX_MODEL.getValue() || undefined; +} + +export const AUTOFIX_CAPI_DEV_KEY = new Setting("capiDevKey", AUTOFIX_SETTING); + +export function getAutofixCapiDevKey(): string | undefined { + return AUTOFIX_CAPI_DEV_KEY.getValue() || undefined; } diff --git a/extensions/ql-vscode/src/contextual/astBuilder.ts b/extensions/ql-vscode/src/contextual/astBuilder.ts deleted file mode 100644 index 88adb6f9d61..00000000000 --- a/extensions/ql-vscode/src/contextual/astBuilder.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { QueryWithResults } from '../run-queries'; -import { CodeQLCliServer } from '../cli'; -import { DecodedBqrsChunk, BqrsId, EntityValue } from '../pure/bqrs-cli-types'; -import { DatabaseItem } from '../databases'; -import { ChildAstItem, AstItem } from '../astViewer'; -import fileRangeFromURI from './fileRangeFromURI'; -import { Uri } from 'vscode'; - -/** - * A class that wraps a tree of QL results from a query that - * has an @kind of graph - */ -export default class AstBuilder { - - private roots: AstItem[] | undefined; - private bqrsPath: string; - constructor( - queryResults: QueryWithResults, - private cli: CodeQLCliServer, - public db: DatabaseItem, - public fileName: Uri - ) { - this.bqrsPath = queryResults.query.resultsPaths.resultsPath; - } - - async getRoots(): Promise { - if (!this.roots) { - this.roots = await this.parseRoots(); - } - return this.roots; - } - - private async parseRoots(): Promise { - const options = { entities: ['id', 'url', 'string'] }; - const [nodeTuples, edgeTuples, graphProperties] = await Promise.all([ - await this.cli.bqrsDecode(this.bqrsPath, 'nodes', options), - await this.cli.bqrsDecode(this.bqrsPath, 'edges', options), - await this.cli.bqrsDecode(this.bqrsPath, 'graphProperties', options), - ]); - - if (!this.isValidGraph(graphProperties)) { - throw new Error('AST is invalid'); - } - - const idToItem = new Map(); - const parentToChildren = new Map(); - const childToParent = new Map(); - const astOrder = new Map(); - const edgeLabels = new Map(); - const roots = []; - - // Build up the parent-child relationships - edgeTuples.tuples.forEach(tuple => { - const [source, target, tupleType, value] = tuple as [EntityValue, EntityValue, string, string]; - const sourceId = source.id!; - const targetId = target.id!; - - switch (tupleType) { - case 'semmle.order': - astOrder.set(targetId, Number(value)); - break; - - case 'semmle.label': { - childToParent.set(targetId, sourceId); - let children = parentToChildren.get(sourceId); - if (!children) { - parentToChildren.set(sourceId, children = []); - } - children.push(targetId); - - // ignore values that indicate a numeric order. - if (!Number.isFinite(Number(value))) { - edgeLabels.set(targetId, value); - } - break; - } - - default: - // ignore other tupleTypes since they are not needed by the ast viewer - } - }); - - // populate parents and children - nodeTuples.tuples.forEach(tuple => { - const [entity, tupleType, value] = tuple as [EntityValue, string, string]; - const id = entity.id!; - - switch (tupleType) { - case 'semmle.order': - astOrder.set(id, Number(value)); - break; - - case 'semmle.label': { - // If an edge label exists, include it and separate from the node label using ':' - const nodeLabel = value ?? entity.label; - const edgeLabel = edgeLabels.get(id); - const label = [edgeLabel, nodeLabel].filter(e => e).join(': '); - const item = { - id, - label, - location: entity.url, - fileLocation: fileRangeFromURI(entity.url, this.db), - children: [] as ChildAstItem[], - order: Number.MAX_SAFE_INTEGER - }; - - idToItem.set(id, item); - const parent = idToItem.get(childToParent.has(id) ? childToParent.get(id)! : -1); - - if (parent) { - const astItem = item as ChildAstItem; - astItem.parent = parent; - parent.children.push(astItem); - } - const children = parentToChildren.has(id) ? parentToChildren.get(id)! : []; - children.forEach(childId => { - const child = idToItem.get(childId) as ChildAstItem | undefined; - if (child) { - child.parent = item; - item.children.push(child); - } - }); - break; - } - - default: - // ignore other tupleTypes since they are not needed by the ast viewer - } - }); - - // find the roots and add the order - for (const [, item] of idToItem) { - item.order = astOrder.has(item.id) - ? astOrder.get(item.id)! - : Number.MAX_SAFE_INTEGER; - - if (!('parent' in item)) { - roots.push(item); - } - } - return roots; - } - - private isValidGraph(graphProperties: DecodedBqrsChunk) { - const tuple = graphProperties?.tuples?.find(t => t[0] === 'semmle.graphKind'); - return tuple?.[1] === 'tree'; - } -} diff --git a/extensions/ql-vscode/src/contextual/fileRangeFromURI.ts b/extensions/ql-vscode/src/contextual/fileRangeFromURI.ts deleted file mode 100644 index 5807e436482..00000000000 --- a/extensions/ql-vscode/src/contextual/fileRangeFromURI.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as vscode from 'vscode'; - -import { UrlValue, LineColumnLocation } from '../pure/bqrs-cli-types'; -import { isEmptyPath } from '../pure/bqrs-utils'; -import { DatabaseItem } from '../databases'; - - -export default function fileRangeFromURI(uri: UrlValue | undefined, db: DatabaseItem): vscode.Location | undefined { - if (!uri || typeof uri === 'string') { - return undefined; - } else if ('startOffset' in uri) { - return undefined; - } else { - const loc = uri as LineColumnLocation; - if (isEmptyPath(loc.uri)) { - return undefined; - } - const range = new vscode.Range(Math.max(0, (loc.startLine || 0) - 1), - Math.max(0, (loc.startColumn || 0) - 1), - Math.max(0, (loc.endLine || 0) - 1), - Math.max(0, (loc.endColumn || 0))); - try { - if (uri.uri.startsWith('file:')) { - return new vscode.Location(db.resolveSourceFile(uri.uri), range); - } - return undefined; - } catch (e) { - return undefined; - } - } -} diff --git a/extensions/ql-vscode/src/contextual/keyType.ts b/extensions/ql-vscode/src/contextual/keyType.ts deleted file mode 100644 index af5777cb188..00000000000 --- a/extensions/ql-vscode/src/contextual/keyType.ts +++ /dev/null @@ -1,43 +0,0 @@ -export enum KeyType { - DefinitionQuery = 'DefinitionQuery', - ReferenceQuery = 'ReferenceQuery', - PrintAstQuery = 'PrintAstQuery', - PrintCfgQuery = 'PrintCfgQuery', -} - -export function tagOfKeyType(keyType: KeyType): string { - switch (keyType) { - case KeyType.DefinitionQuery: - return 'ide-contextual-queries/local-definitions'; - case KeyType.ReferenceQuery: - return 'ide-contextual-queries/local-references'; - case KeyType.PrintAstQuery: - return 'ide-contextual-queries/print-ast'; - case KeyType.PrintCfgQuery: - return 'ide-contextual-queries/print-cfg'; - } -} - -export function nameOfKeyType(keyType: KeyType): string { - switch (keyType) { - case KeyType.DefinitionQuery: - return 'definitions'; - case KeyType.ReferenceQuery: - return 'references'; - case KeyType.PrintAstQuery: - return 'print AST'; - case KeyType.PrintCfgQuery: - return 'print CFG'; - } -} - -export function kindOfKeyType(keyType: KeyType): string { - switch (keyType) { - case KeyType.DefinitionQuery: - case KeyType.ReferenceQuery: - return 'definitions'; - case KeyType.PrintAstQuery: - case KeyType.PrintCfgQuery: - return 'graph'; - } -} diff --git a/extensions/ql-vscode/src/contextual/locationFinder.ts b/extensions/ql-vscode/src/contextual/locationFinder.ts deleted file mode 100644 index 6c95b6406a8..00000000000 --- a/extensions/ql-vscode/src/contextual/locationFinder.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { decodeSourceArchiveUri, encodeArchiveBasePath } from '../archive-filesystem-provider'; -import { ColumnKindCode, EntityValue, getResultSetSchema, ResultSetSchema } from '../pure/bqrs-cli-types'; -import { CodeQLCliServer } from '../cli'; -import { DatabaseManager, DatabaseItem } from '../databases'; -import fileRangeFromURI from './fileRangeFromURI'; -import * as messages from '../pure/messages'; -import { QueryServerClient } from '../queryserver-client'; -import { QueryWithResults, compileAndRunQueryAgainstDatabase, createInitialQueryInfo } from '../run-queries'; -import { ProgressCallback } from '../commandRunner'; -import { KeyType } from './keyType'; -import { qlpackOfDatabase, resolveQueries } from './queryResolver'; -import { CancellationToken, LocationLink, Uri } from 'vscode'; - -export const SELECT_QUERY_NAME = '#select'; -export const TEMPLATE_NAME = 'selectedSourceFile'; - -export interface FullLocationLink extends LocationLink { - originUri: Uri; -} - -/** - * This function executes a contextual query inside a given database, filters, and converts - * the results into source locations. This function is the workhorse for all search-based - * contextual queries like find references and find definitions. - * - * @param cli The cli server - * @param qs The query server client - * @param dbm The database manager - * @param uriString The selected source file and location - * @param keyType The contextual query type to run - * @param queryStorageDir The directory to store the query results - * @param progress A progress callback - * @param token A CancellationToken - * @param filter A function that will filter extraneous results - */ -export async function getLocationsForUriString( - cli: CodeQLCliServer, - qs: QueryServerClient, - dbm: DatabaseManager, - uriString: string, - keyType: KeyType, - queryStorageDir: string, - progress: ProgressCallback, - token: CancellationToken, - filter: (src: string, dest: string) => boolean -): Promise { - const uri = decodeSourceArchiveUri(Uri.parse(uriString, true)); - const sourceArchiveUri = encodeArchiveBasePath(uri.sourceArchiveZipPath); - - const db = dbm.findDatabaseItemBySourceArchive(sourceArchiveUri); - if (!db) { - return []; - } - - const qlpack = await qlpackOfDatabase(cli, db); - const templates = createTemplates(uri.pathWithinSourceArchive); - - const links: FullLocationLink[] = []; - for (const query of await resolveQueries(cli, qlpack, keyType)) { - const initialInfo = await createInitialQueryInfo( - Uri.file(query), - { - name: db.name, - databaseUri: db.databaseUri.toString(), - }, - false - ); - - const results = await compileAndRunQueryAgainstDatabase( - cli, - qs, - db, - initialInfo, - queryStorageDir, - progress, - token, - templates - ); - - if (results.result.resultType == messages.QueryResultType.SUCCESS) { - links.push(...await getLinksFromResults(results, cli, db, filter)); - } - } - return links; -} - -async function getLinksFromResults( - results: QueryWithResults, - cli: CodeQLCliServer, - db: DatabaseItem, - filter: (srcFile: string, destFile: string) => boolean -): Promise { - const localLinks: FullLocationLink[] = []; - const bqrsPath = results.query.resultsPaths.resultsPath; - const info = await cli.bqrsInfo(bqrsPath); - const selectInfo = getResultSetSchema(SELECT_QUERY_NAME, info); - if (isValidSelect(selectInfo)) { - // TODO: Page this - const allTuples = await cli.bqrsDecode(bqrsPath, SELECT_QUERY_NAME); - for (const tuple of allTuples.tuples) { - const [src, dest] = tuple as [EntityValue, EntityValue]; - const srcFile = src.url && fileRangeFromURI(src.url, db); - const destFile = dest.url && fileRangeFromURI(dest.url, db); - if (srcFile && destFile && filter(srcFile.uri.toString(), destFile.uri.toString())) { - localLinks.push({ - targetRange: destFile.range, - targetUri: destFile.uri, - originSelectionRange: srcFile.range, - originUri: srcFile.uri - }); - } - } - } - return localLinks; -} - -function createTemplates(path: string): messages.TemplateDefinitions { - return { - [TEMPLATE_NAME]: { - values: { - tuples: [[{ - stringValue: path - }]] - } - } - }; -} - -function isValidSelect(selectInfo: ResultSetSchema | undefined) { - return selectInfo && selectInfo.columns.length == 3 - && selectInfo.columns[0].kind == ColumnKindCode.ENTITY - && selectInfo.columns[1].kind == ColumnKindCode.ENTITY - && selectInfo.columns[2].kind == ColumnKindCode.STRING; -} diff --git a/extensions/ql-vscode/src/contextual/queryResolver.ts b/extensions/ql-vscode/src/contextual/queryResolver.ts deleted file mode 100644 index f366c452f9e..00000000000 --- a/extensions/ql-vscode/src/contextual/queryResolver.ts +++ /dev/null @@ -1,106 +0,0 @@ -import * as fs from 'fs-extra'; -import * as yaml from 'js-yaml'; -import * as tmp from 'tmp-promise'; - -import * as helpers from '../helpers'; -import { - KeyType, - kindOfKeyType, - nameOfKeyType, - tagOfKeyType -} from './keyType'; -import { CodeQLCliServer } from '../cli'; -import { DatabaseItem } from '../databases'; -import { QlPacksForLanguage } from '../helpers'; - -export async function qlpackOfDatabase(cli: CodeQLCliServer, db: DatabaseItem): Promise { - if (db.contents === undefined) { - throw new Error('Database is invalid and cannot infer QLPack.'); - } - const datasetPath = db.contents.datasetUri.fsPath; - const dbscheme = await helpers.getPrimaryDbscheme(datasetPath); - return await helpers.getQlPackForDbscheme(cli, dbscheme); -} - -/** - * Finds the contextual queries with the specified key in a list of CodeQL packs. - * - * @param cli The CLI instance to use. - * @param qlpacks The list of packs to search. - * @param keyType The contextual query key of the query to search for. - * @returns The found queries from the first pack in which any matching queries were found. - */ -async function resolveQueriesFromPacks(cli: CodeQLCliServer, qlpacks: string[], keyType: KeyType): Promise { - const suiteFile = (await tmp.file({ - postfix: '.qls' - })).path; - const suiteYaml = []; - for (const qlpack of qlpacks) { - suiteYaml.push({ - from: qlpack, - queries: '.', - include: { - kind: kindOfKeyType(keyType), - 'tags contain': tagOfKeyType(keyType) - } - }); - } - await fs.writeFile(suiteFile, yaml.dump(suiteYaml), 'utf8'); - - const queries = await cli.resolveQueriesInSuite(suiteFile, helpers.getOnDiskWorkspaceFolders()); - return queries; -} - -export async function resolveQueries(cli: CodeQLCliServer, qlpacks: QlPacksForLanguage, keyType: KeyType): Promise { - const cliCanHandleLibraryPack = await cli.cliConstraints.supportsAllowLibraryPacksInResolveQueries(); - const packsToSearch: string[] = []; - let blameCli: boolean; - - if (cliCanHandleLibraryPack) { - // The CLI can handle both library packs and query packs, so search both packs in order. - packsToSearch.push(qlpacks.dbschemePack); - if (qlpacks.queryPack !== undefined) { - packsToSearch.push(qlpacks.queryPack); - } - // If we don't find the query, it's because it's not there, not because the CLI was unable to - // search the pack. - blameCli = false; - } else { - // Older CLIs can't handle `codeql resolve queries` with a suite that references a library pack. - if (qlpacks.dbschemePackIsLibraryPack) { - if (qlpacks.queryPack !== undefined) { - // Just search the query pack, because some older library/query releases still had the - // contextual queries in the query pack. - packsToSearch.push(qlpacks.queryPack); - } - // If we don't find it, it's because the CLI was unable to search the library pack that - // actually contains the query. Blame any failure on the CLI, not the packs. - blameCli = true; - } else { - // We have an old CLI, but the dbscheme pack is old enough that it's still a unified pack with - // both libraries and queries. Just search that pack. - packsToSearch.push(qlpacks.dbschemePack); - // Any CLI should be able to search the single query pack, so if we don't find it, it's - // because the language doesn't support it. - blameCli = false; - } - } - - const queries = await resolveQueriesFromPacks(cli, packsToSearch, keyType); - if (queries.length > 0) { - return queries; - } - - // No queries found. Determine the correct error message for the various scenarios. - const errorMessage = blameCli ? - `Your current version of the CodeQL CLI, '${(await cli.getVersion()).version}', \ - is unable to use contextual queries from recent versions of the standard CodeQL libraries. \ - Please upgrade to the latest version of the CodeQL CLI.` - : - `No ${nameOfKeyType(keyType)} queries (tagged "${tagOfKeyType(keyType)}") could be found in the current library path. \ - Try upgrading the CodeQL libraries. If that doesn't work, then ${nameOfKeyType(keyType)} queries are not yet available \ - for this language.`; - - void helpers.showAndLogErrorMessage(errorMessage); - throw new Error(`Couldn't find any queries tagged ${tagOfKeyType(keyType)} in any of the following packs: ${packsToSearch.join(', ')}.`); -} diff --git a/extensions/ql-vscode/src/contextual/templateProvider.ts b/extensions/ql-vscode/src/contextual/templateProvider.ts deleted file mode 100644 index 356dd7500bd..00000000000 --- a/extensions/ql-vscode/src/contextual/templateProvider.ts +++ /dev/null @@ -1,290 +0,0 @@ -import { - CancellationToken, - DefinitionProvider, - Location, - LocationLink, - Position, - ProgressLocation, - ReferenceContext, - ReferenceProvider, - TextDocument, - Uri -} from 'vscode'; - -import { decodeSourceArchiveUri, encodeArchiveBasePath, zipArchiveScheme } from '../archive-filesystem-provider'; -import { CodeQLCliServer } from '../cli'; -import { DatabaseManager } from '../databases'; -import { CachedOperation } from '../helpers'; -import { ProgressCallback, withProgress } from '../commandRunner'; -import * as messages from '../pure/messages'; -import { QueryServerClient } from '../queryserver-client'; -import { compileAndRunQueryAgainstDatabase, createInitialQueryInfo, QueryWithResults } from '../run-queries'; -import AstBuilder from './astBuilder'; -import { - KeyType, -} from './keyType'; -import { FullLocationLink, getLocationsForUriString, TEMPLATE_NAME } from './locationFinder'; -import { qlpackOfDatabase, resolveQueries } from './queryResolver'; -import { isCanary, NO_CACHE_AST_VIEWER } from '../config'; - -/** - * Run templated CodeQL queries to find definitions and references in - * source-language files. We may eventually want to find a way to - * generalize this to other custom queries, e.g. showing dataflow to - * or from a selected identifier. - */ - -export class TemplateQueryDefinitionProvider implements DefinitionProvider { - private cache: CachedOperation; - - constructor( - private cli: CodeQLCliServer, - private qs: QueryServerClient, - private dbm: DatabaseManager, - private queryStorageDir: string, - ) { - this.cache = new CachedOperation(this.getDefinitions.bind(this)); - } - - async provideDefinition(document: TextDocument, position: Position, _token: CancellationToken): Promise { - const fileLinks = await this.cache.get(document.uri.toString()); - const locLinks: LocationLink[] = []; - for (const link of fileLinks) { - if (link.originSelectionRange!.contains(position)) { - locLinks.push(link); - } - } - return locLinks; - } - - private async getDefinitions(uriString: string): Promise { - return withProgress({ - location: ProgressLocation.Notification, - cancellable: true, - title: 'Finding definitions' - }, async (progress, token) => { - return getLocationsForUriString( - this.cli, - this.qs, - this.dbm, - uriString, - KeyType.DefinitionQuery, - this.queryStorageDir, - progress, - token, - (src, _dest) => src === uriString - ); - }); - } -} - -export class TemplateQueryReferenceProvider implements ReferenceProvider { - private cache: CachedOperation; - - constructor( - private cli: CodeQLCliServer, - private qs: QueryServerClient, - private dbm: DatabaseManager, - private queryStorageDir: string, - ) { - this.cache = new CachedOperation(this.getReferences.bind(this)); - } - - async provideReferences( - document: TextDocument, - position: Position, - _context: ReferenceContext, - _token: CancellationToken - ): Promise { - const fileLinks = await this.cache.get(document.uri.toString()); - const locLinks: Location[] = []; - for (const link of fileLinks) { - if (link.targetRange!.contains(position)) { - locLinks.push({ range: link.originSelectionRange!, uri: link.originUri }); - } - } - return locLinks; - } - - private async getReferences(uriString: string): Promise { - return withProgress({ - location: ProgressLocation.Notification, - cancellable: true, - title: 'Finding references' - }, async (progress, token) => { - return getLocationsForUriString( - this.cli, - this.qs, - this.dbm, - uriString, - KeyType.DefinitionQuery, - this.queryStorageDir, - progress, - token, - (src, _dest) => src === uriString - ); - }); - } -} - -type QueryWithDb = { - query: QueryWithResults, - dbUri: Uri -}; - -export class TemplatePrintAstProvider { - private cache: CachedOperation; - - constructor( - private cli: CodeQLCliServer, - private qs: QueryServerClient, - private dbm: DatabaseManager, - private queryStorageDir: string, - ) { - this.cache = new CachedOperation(this.getAst.bind(this)); - } - - async provideAst( - progress: ProgressCallback, - token: CancellationToken, - fileUri?: Uri - ): Promise { - if (!fileUri) { - throw new Error('Cannot view the AST. Please select a valid source file inside a CodeQL database.'); - } - const { query, dbUri } = this.shouldCache() - ? await this.cache.get(fileUri.toString(), progress, token) - : await this.getAst(fileUri.toString(), progress, token); - - return new AstBuilder( - query, this.cli, - this.dbm.findDatabaseItem(dbUri)!, - fileUri, - ); - } - - private shouldCache() { - return !(isCanary() && NO_CACHE_AST_VIEWER.getValue()); - } - - private async getAst( - uriString: string, - progress: ProgressCallback, - token: CancellationToken - ): Promise { - const uri = Uri.parse(uriString, true); - if (uri.scheme !== zipArchiveScheme) { - throw new Error('Cannot view the AST. Please select a valid source file inside a CodeQL database.'); - } - - const zippedArchive = decodeSourceArchiveUri(uri); - const sourceArchiveUri = encodeArchiveBasePath(zippedArchive.sourceArchiveZipPath); - const db = this.dbm.findDatabaseItemBySourceArchive(sourceArchiveUri); - - if (!db) { - throw new Error('Can\'t infer database from the provided source.'); - } - - const qlpacks = await qlpackOfDatabase(this.cli, db); - const queries = await resolveQueries(this.cli, qlpacks, KeyType.PrintAstQuery); - if (queries.length > 1) { - throw new Error('Found multiple Print AST queries. Can\'t continue'); - } - if (queries.length === 0) { - throw new Error('Did not find any Print AST queries. Can\'t continue'); - } - - const query = queries[0]; - const templates: messages.TemplateDefinitions = { - [TEMPLATE_NAME]: { - values: { - tuples: [[{ - stringValue: zippedArchive.pathWithinSourceArchive - }]] - } - } - }; - - const initialInfo = await createInitialQueryInfo( - Uri.file(query), - { - name: db.name, - databaseUri: db.databaseUri.toString(), - }, - false - ); - - return { - query: await compileAndRunQueryAgainstDatabase( - this.cli, - this.qs, - db, - initialInfo, - this.queryStorageDir, - progress, - token, - templates - ), - dbUri: db.databaseUri - }; - } -} - -export class TemplatePrintCfgProvider { - private cache: CachedOperation<[Uri, messages.TemplateDefinitions] | undefined>; - - constructor( - private cli: CodeQLCliServer, - private dbm: DatabaseManager, - ) { - this.cache = new CachedOperation<[Uri, messages.TemplateDefinitions] | undefined>(this.getCfgUri.bind(this)); - } - - async provideCfgUri(document?: TextDocument): Promise<[Uri, messages.TemplateDefinitions] | undefined> { - if (!document) { - return; - } - return await this.cache.get(document.uri.toString()); - } - - private async getCfgUri(uriString: string): Promise<[Uri, messages.TemplateDefinitions]> { - const uri = Uri.parse(uriString, true); - if (uri.scheme !== zipArchiveScheme) { - throw new Error('CFG Viewing is only available for databases with zipped source archives.'); - } - - const zippedArchive = decodeSourceArchiveUri(uri); - const sourceArchiveUri = encodeArchiveBasePath(zippedArchive.sourceArchiveZipPath); - const db = this.dbm.findDatabaseItemBySourceArchive(sourceArchiveUri); - - if (!db) { - throw new Error('Can\'t infer database from the provided source.'); - } - - const qlpack = await qlpackOfDatabase(this.cli, db); - if (!qlpack) { - throw new Error('Can\'t infer qlpack from database source archive.'); - } - const queries = await resolveQueries(this.cli, qlpack, KeyType.PrintCfgQuery); - if (queries.length > 1) { - throw new Error(`Found multiple Print CFG queries. Can't continue. Make sure there is exacly one query with the tag ${KeyType.PrintCfgQuery}`); - } - if (queries.length === 0) { - throw new Error(`Did not find any Print CFG queries. Can't continue. Make sure there is exacly one query with the tag ${KeyType.PrintCfgQuery}`); - } - - const queryUri = Uri.file(queries[0]); - - const templates: messages.TemplateDefinitions = { - [TEMPLATE_NAME]: { - values: { - tuples: [[{ - stringValue: zippedArchive.pathWithinSourceArchive - }]] - } - } - }; - - return [queryUri, templates]; - } -} diff --git a/extensions/ql-vscode/src/databaseFetcher.ts b/extensions/ql-vscode/src/databaseFetcher.ts deleted file mode 100644 index 3ad49521c8d..00000000000 --- a/extensions/ql-vscode/src/databaseFetcher.ts +++ /dev/null @@ -1,717 +0,0 @@ -import fetch, { Response } from 'node-fetch'; -import { zip } from 'zip-a-folder'; -import * as unzipper from 'unzipper'; -import { - Uri, - CancellationToken, - commands, - window, -} from 'vscode'; -import { CodeQLCliServer } from './cli'; -import * as fs from 'fs-extra'; -import * as path from 'path'; - -import { DatabaseManager, DatabaseItem } from './databases'; -import { - showAndLogInformationMessage, -} from './helpers'; -import { - reportStreamProgress, - ProgressCallback, -} from './commandRunner'; -import { logger } from './logging'; -import { tmpDir } from './helpers'; -import { Credentials } from './authentication'; -import { REPO_REGEX, getErrorMessage } from './pure/helpers-pure'; - -/** - * Prompts a user to fetch a database from a remote location. Database is assumed to be an archive file. - * - * @param databaseManager the DatabaseManager - * @param storagePath where to store the unzipped database. - */ -export async function promptImportInternetDatabase( - databaseManager: DatabaseManager, - storagePath: string, - progress: ProgressCallback, - token: CancellationToken, - cli?: CodeQLCliServer -): Promise { - const databaseUrl = await window.showInputBox({ - prompt: 'Enter URL of zipfile of database to download', - }); - if (!databaseUrl) { - return; - } - - validateHttpsUrl(databaseUrl); - - const item = await databaseArchiveFetcher( - databaseUrl, - {}, - databaseManager, - storagePath, - undefined, - progress, - token, - cli - ); - - if (item) { - await commands.executeCommand('codeQLDatabases.focus'); - void showAndLogInformationMessage('Database downloaded and imported successfully.'); - } - return item; - -} - -/** - * Prompts a user to fetch a database from GitHub. - * User enters a GitHub repository and then the user is asked which language - * to download (if there is more than one) - * - * @param databaseManager the DatabaseManager - * @param storagePath where to store the unzipped database. - */ -export async function promptImportGithubDatabase( - databaseManager: DatabaseManager, - storagePath: string, - credentials: Credentials, - progress: ProgressCallback, - token: CancellationToken, - cli?: CodeQLCliServer -): Promise { - progress({ - message: 'Choose repository', - step: 1, - maxStep: 2 - }); - const githubRepo = await window.showInputBox({ - title: 'Enter a GitHub repository URL or "name with owner" (e.g. https://github.com/github/codeql or github/codeql)', - placeHolder: 'https://github.com// or /', - ignoreFocusOut: true, - }); - if (!githubRepo) { - return; - } - - if (!looksLikeGithubRepo(githubRepo)) { - throw new Error(`Invalid GitHub repository: ${githubRepo}`); - } - - const result = await convertGithubNwoToDatabaseUrl(githubRepo, credentials, progress); - if (!result) { - return; - } - - const { databaseUrl, name, owner } = result; - - const octokit = await credentials.getOctokit(); - /** - * The 'token' property of the token object returned by `octokit.auth()`. - * The object is undocumented, but looks something like this: - * { - * token: 'xxxx', - * tokenType: 'oauth', - * type: 'token', - * } - * We only need the actual token string. - */ - const octokitToken = (await octokit.auth() as { token: string })?.token; - if (!octokitToken) { - // Just print a generic error message for now. Ideally we could show more debugging info, like the - // octokit object, but that would expose a user token. - throw new Error('Unable to get GitHub token.'); - } - const item = await databaseArchiveFetcher( - databaseUrl, - { 'Accept': 'application/zip', 'Authorization': `Bearer ${octokitToken}` }, - databaseManager, - storagePath, - `${owner}/${name}`, - progress, - token, - cli - ); - if (item) { - await commands.executeCommand('codeQLDatabases.focus'); - void showAndLogInformationMessage('Database downloaded and imported successfully.'); - return item; - } - return; -} - -/** - * Prompts a user to fetch a database from lgtm. - * User enters a project url and then the user is asked which language - * to download (if there is more than one) - * - * @param databaseManager the DatabaseManager - * @param storagePath where to store the unzipped database. - */ -export async function promptImportLgtmDatabase( - databaseManager: DatabaseManager, - storagePath: string, - progress: ProgressCallback, - token: CancellationToken, - cli?: CodeQLCliServer -): Promise { - progress({ - message: 'Choose project', - step: 1, - maxStep: 2 - }); - const lgtmUrl = await window.showInputBox({ - prompt: - 'Enter the project slug or URL on LGTM (e.g., g/github/codeql or https://lgtm.com/projects/g/github/codeql)', - }); - if (!lgtmUrl) { - return; - } - - if (looksLikeLgtmUrl(lgtmUrl)) { - const databaseUrl = await convertLgtmUrlToDatabaseUrl(lgtmUrl, progress); - if (databaseUrl) { - const item = await databaseArchiveFetcher( - databaseUrl, - {}, - databaseManager, - storagePath, - undefined, - progress, - token, - cli - ); - if (item) { - await commands.executeCommand('codeQLDatabases.focus'); - void showAndLogInformationMessage('Database downloaded and imported successfully.'); - } - return item; - } - } else { - throw new Error(`Invalid LGTM URL: ${lgtmUrl}`); - } - return; -} - -export async function retrieveCanonicalRepoName(lgtmUrl: string) { - const givenRepoName = extractProjectSlug(lgtmUrl); - const response = await checkForFailingResponse(await fetch(`https://api.github.com/repos/${givenRepoName}`), 'Failed to locate the repository on github'); - const repo = await response.json(); - if (!repo || !repo.full_name) { - return; - } - return repo.full_name; -} - -/** - * Imports a database from a local archive. - * - * @param databaseUrl the file url of the archive to import - * @param databaseManager the DatabaseManager - * @param storagePath where to store the unzipped database. - */ -export async function importArchiveDatabase( - databaseUrl: string, - databaseManager: DatabaseManager, - storagePath: string, - progress: ProgressCallback, - token: CancellationToken, - cli?: CodeQLCliServer, -): Promise { - try { - const item = await databaseArchiveFetcher( - databaseUrl, - {}, - databaseManager, - storagePath, - undefined, - progress, - token, - cli - ); - if (item) { - await commands.executeCommand('codeQLDatabases.focus'); - void showAndLogInformationMessage('Database unzipped and imported successfully.'); - } - return item; - } catch (e) { - if (getErrorMessage(e).includes('unexpected end of file')) { - throw new Error('Database is corrupt or too large. Try unzipping outside of VS Code and importing the unzipped folder instead.'); - } else { - // delegate - throw e; - } - } -} - -/** - * Fetches an archive database. The database might be on the internet - * or in the local filesystem. - * - * @param databaseUrl URL from which to grab the database - * @param requestHeaders Headers to send with the request - * @param databaseManager the DatabaseManager - * @param storagePath where to store the unzipped database. - * @param nameOverride a name for the database that overrides the default - * @param progress callback to send progress messages to - * @param token cancellation token - */ -async function databaseArchiveFetcher( - databaseUrl: string, - requestHeaders: { [key: string]: string }, - databaseManager: DatabaseManager, - storagePath: string, - nameOverride: string | undefined, - progress: ProgressCallback, - token: CancellationToken, - cli?: CodeQLCliServer, -): Promise { - progress({ - message: 'Getting database', - step: 1, - maxStep: 4, - }); - if (!storagePath) { - throw new Error('No storage path specified.'); - } - await fs.ensureDir(storagePath); - const unzipPath = await getStorageFolder(storagePath, databaseUrl); - - if (isFile(databaseUrl)) { - await readAndUnzip(databaseUrl, unzipPath, cli, progress); - } else { - await fetchAndUnzip(databaseUrl, requestHeaders, unzipPath, cli, progress); - } - - progress({ - message: 'Opening database', - step: 3, - maxStep: 4, - }); - - // find the path to the database. The actual database might be in a sub-folder - const dbPath = await findDirWithFile( - unzipPath, - '.dbinfo', - 'codeql-database.yml' - ); - if (dbPath) { - progress({ - message: 'Validating and fixing source location', - step: 4, - maxStep: 4, - }); - await ensureZippedSourceLocation(dbPath); - - const item = await databaseManager.openDatabase(progress, token, Uri.file(dbPath), nameOverride); - await databaseManager.setCurrentDatabaseItem(item); - return item; - } else { - throw new Error('Database not found in archive.'); - } -} - -async function getStorageFolder(storagePath: string, urlStr: string) { - // we need to generate a folder name for the unzipped archive, - // this needs to be human readable since we may use this name as the initial - // name for the database - const url = Uri.parse(urlStr); - // MacOS has a max filename length of 255 - // and remove a few extra chars in case we need to add a counter at the end. - let lastName = path.basename(url.path).substring(0, 250); - if (lastName.endsWith('.zip')) { - lastName = lastName.substring(0, lastName.length - 4); - } - - const realpath = await fs.realpath(storagePath); - let folderName = path.join(realpath, lastName); - - // avoid overwriting existing folders - let counter = 0; - while (await fs.pathExists(folderName)) { - counter++; - folderName = path.join(realpath, `${lastName}-${counter}`); - if (counter > 100) { - throw new Error('Could not find a unique name for downloaded database.'); - } - } - return folderName; -} - -function validateHttpsUrl(databaseUrl: string) { - let uri; - try { - uri = Uri.parse(databaseUrl, true); - } catch (e) { - throw new Error(`Invalid url: ${databaseUrl}`); - } - - if (uri.scheme !== 'https') { - throw new Error('Must use https for downloading a database.'); - } -} - -async function readAndUnzip( - zipUrl: string, - unzipPath: string, - cli?: CodeQLCliServer, - progress?: ProgressCallback -) { - // TODO: Providing progress as the file is unzipped is currently blocked - // on https://github.com/ZJONSSON/node-unzipper/issues/222 - const zipFile = Uri.parse(zipUrl).fsPath; - progress?.({ - maxStep: 10, - step: 9, - message: `Unzipping into ${path.basename(unzipPath)}` - }); - if (cli && await cli.cliConstraints.supportsDatabaseUnbundle()) { - // Use the `database unbundle` command if the installed cli version supports it - await cli.databaseUnbundle(zipFile, unzipPath); - } else { - // Must get the zip central directory since streaming the - // zip contents may not have correct local file headers. - // Instead, we can only rely on the central directory. - const directory = await unzipper.Open.file(zipFile); - await directory.extract({ path: unzipPath }); - } -} - -async function fetchAndUnzip( - databaseUrl: string, - requestHeaders: { [key: string]: string }, - unzipPath: string, - cli?: CodeQLCliServer, - progress?: ProgressCallback -) { - // Although it is possible to download and stream directly to an unzipped directory, - // we need to avoid this for two reasons. The central directory is located at the - // end of the zip file. It is the source of truth of the content locations. Individual - // file headers may be incorrect. Additionally, saving to file first will reduce memory - // pressure compared with unzipping while downloading the archive. - - const archivePath = path.join(tmpDir.name, `archive-${Date.now()}.zip`); - - progress?.({ - maxStep: 3, - message: 'Downloading database', - step: 1, - }); - - const response = await checkForFailingResponse( - await fetch(databaseUrl, { headers: requestHeaders }), - 'Error downloading database' - ); - const archiveFileStream = fs.createWriteStream(archivePath); - - const contentLength = response.headers.get('content-length'); - const totalNumBytes = contentLength ? parseInt(contentLength, 10) : undefined; - reportStreamProgress(response.body, 'Downloading database', totalNumBytes, progress); - - await new Promise((resolve, reject) => - response.body.pipe(archiveFileStream) - .on('finish', resolve) - .on('error', reject) - ); - - await readAndUnzip(Uri.file(archivePath).toString(true), unzipPath, cli, progress); - - // remove archivePath eagerly since these archives can be large. - await fs.remove(archivePath); -} - -async function checkForFailingResponse(response: Response, errorMessage: string): Promise { - if (response.ok) { - return response; - } - - // An error downloading the database. Attempt to extract the resaon behind it. - const text = await response.text(); - let msg: string; - try { - const obj = JSON.parse(text); - msg = obj.error || obj.message || obj.reason || JSON.stringify(obj, null, 2); - } catch (e) { - msg = text; - } - throw new Error(`${errorMessage}.\n\nReason: ${msg}`); -} - -function isFile(databaseUrl: string) { - return Uri.parse(databaseUrl).scheme === 'file'; -} - -/** - * Recursively looks for a file in a directory. If the file exists, then returns the directory containing the file. - * - * @param dir The directory to search - * @param toFind The file to recursively look for in this directory - * - * @returns the directory containing the file, or undefined if not found. - */ -// exported for testing -export async function findDirWithFile( - dir: string, - ...toFind: string[] -): Promise { - if (!(await fs.stat(dir)).isDirectory()) { - return; - } - const files = await fs.readdir(dir); - if (toFind.some((file) => files.includes(file))) { - return dir; - } - for (const file of files) { - const newPath = path.join(dir, file); - const result = await findDirWithFile(newPath, ...toFind); - if (result) { - return result; - } - } - return; -} - -/** - * The URL pattern is https://github.com/{owner}/{name}/{subpages}. - * - * This function accepts any URL that matches the pattern above. It also accepts just the - * name with owner (NWO): `/`. - * - * @param githubRepo The GitHub repository URL or NWO - * - * @return true if this looks like a valid GitHub repository URL or NWO - */ -export function looksLikeGithubRepo( - githubRepo: string | undefined -): githubRepo is string { - if (!githubRepo) { - return false; - } - if (REPO_REGEX.test(githubRepo) || convertGitHubUrlToNwo(githubRepo)) { - return true; - } - return false; -} - -/** - * Converts a GitHub repository URL to the corresponding NWO. - * @param githubUrl The GitHub repository URL - * @return The corresponding NWO, or undefined if the URL is not valid - */ -function convertGitHubUrlToNwo(githubUrl: string): string | undefined { - try { - const uri = Uri.parse(githubUrl, true); - if (uri.scheme !== 'https') { - return; - } - if (uri.authority !== 'github.com' && uri.authority !== 'www.github.com') { - return; - } - const paths = uri.path.split('/').filter((segment: string) => segment); - const nwo = `${paths[0]}/${paths[1]}`; - if (REPO_REGEX.test(nwo)) { - return nwo; - } - return; - } catch (e) { - // Ignore the error here, since we catch failures at a higher level. - // In particular: returning undefined leads to an error in 'promptImportGithubDatabase'. - return; - } -} - -export async function convertGithubNwoToDatabaseUrl( - githubRepo: string, - credentials: Credentials, - progress: ProgressCallback): Promise<{ - databaseUrl: string, - owner: string, - name: string - } | undefined> { - try { - const nwo = convertGitHubUrlToNwo(githubRepo) || githubRepo; - const [owner, repo] = nwo.split('/'); - - const octokit = await credentials.getOctokit(); - const response = await octokit.request('GET /repos/:owner/:repo/code-scanning/codeql/databases', { owner, repo }); - - const languages = response.data.map((db: any) => db.language); - - const language = await promptForLanguage(languages, progress); - if (!language) { - return; - } - - return { - databaseUrl: `https://api.github.com/repos/${owner}/${repo}/code-scanning/codeql/databases/${language}`, - owner, - name: repo - }; - - } catch (e) { - void logger.log(`Error: ${getErrorMessage(e)}`); - throw new Error(`Unable to get database for '${githubRepo}'`); - } -} - -/** - * The URL pattern is https://lgtm.com/projects/{provider}/{org}/{name}/{irrelevant-subpages}. - * There are several possibilities for the provider: in addition to GitHub.com (g), - * LGTM currently hosts projects from Bitbucket (b), GitLab (gl) and plain git (git). - * - * This function accepts any url that matches the pattern above. It also accepts the - * raw project slug, e.g., `g/myorg/myproject` - * - * After the `{provider}/{org}/{name}` path components, there may be the components - * related to sub pages. - * - * @param lgtmUrl The URL to the lgtm project - * - * @return true if this looks like an LGTM project url - */ -// exported for testing -export function looksLikeLgtmUrl(lgtmUrl: string | undefined): lgtmUrl is string { - if (!lgtmUrl) { - return false; - } - - if (convertRawLgtmSlug(lgtmUrl)) { - return true; - } - - try { - const uri = Uri.parse(lgtmUrl, true); - if (uri.scheme !== 'https') { - return false; - } - - if (uri.authority !== 'lgtm.com' && uri.authority !== 'www.lgtm.com') { - return false; - } - - const paths = uri.path.split('/').filter((segment: string) => segment); - return paths.length >= 4 && paths[0] === 'projects'; - } catch (e) { - return false; - } -} - -function convertRawLgtmSlug(maybeSlug: string): string | undefined { - if (!maybeSlug) { - return; - } - const segments = maybeSlug.split('/'); - const providers = ['g', 'gl', 'b', 'git']; - if (segments.length === 3 && providers.includes(segments[0])) { - return `https://lgtm.com/projects/${maybeSlug}`; - } - return; -} - -function extractProjectSlug(lgtmUrl: string): string | undefined { - // Only matches the '/g/' provider (github) - const re = new RegExp('https://lgtm.com/projects/g/(.*[^/])'); - const match = lgtmUrl.match(re); - if (!match) { - return; - } - return match[1]; -} - -// exported for testing -export async function convertLgtmUrlToDatabaseUrl( - lgtmUrl: string, - progress: ProgressCallback) { - try { - lgtmUrl = convertRawLgtmSlug(lgtmUrl) || lgtmUrl; - let projectJson = await downloadLgtmProjectMetadata(lgtmUrl); - - if (projectJson.code === 404) { - // fallback check for github repositories with same name but different case - // will fail for other providers - let canonicalName = await retrieveCanonicalRepoName(lgtmUrl); - if (!canonicalName) { - throw new Error(`Project was not found at ${lgtmUrl}.`); - } - canonicalName = convertRawLgtmSlug(`g/${canonicalName}`); - projectJson = await downloadLgtmProjectMetadata(canonicalName); - if (projectJson.code === 404) { - throw new Error('Failed to download project from LGTM.'); - } - } - - const languages = projectJson?.languages?.map((lang: { language: string }) => lang.language) || []; - - const language = await promptForLanguage(languages, progress); - if (!language) { - return; - } - return `https://lgtm.com/${[ - 'api', - 'v1.0', - 'snapshots', - projectJson.id, - language, - ].join('/')}`; - } catch (e) { - void logger.log(`Error: ${getErrorMessage(e)}`); - throw new Error(`Invalid LGTM URL: ${lgtmUrl}`); - } -} - -async function downloadLgtmProjectMetadata(lgtmUrl: string): Promise { - const uri = Uri.parse(lgtmUrl, true); - const paths = ['api', 'v1.0'].concat( - uri.path.split('/').filter((segment: string) => segment) - ).slice(0, 6); - const projectUrl = `https://lgtm.com/${paths.join('/')}`; - const projectResponse = await fetch(projectUrl); - return projectResponse.json(); -} - -async function promptForLanguage( - languages: string[], - progress: ProgressCallback -): Promise { - progress({ - message: 'Choose language', - step: 2, - maxStep: 2 - }); - if (!languages.length) { - throw new Error('No databases found'); - } - if (languages.length === 1) { - return languages[0]; - } - - return await window.showQuickPick( - languages, - { - placeHolder: 'Select the database language to download:', - ignoreFocusOut: true, - } - ); -} - -/** - * Databases created by the old odasa tool will not have a zipped - * source location. However, this extension works better if sources - * are zipped. - * - * This function ensures that the source location is zipped. If the - * `src` folder exists and the `src.zip` file does not, the `src` - * folder will be zipped and then deleted. - * - * @param databasePath The full path to the unzipped database - */ -async function ensureZippedSourceLocation(databasePath: string): Promise { - const srcFolderPath = path.join(databasePath, 'src'); - const srcZipPath = srcFolderPath + '.zip'; - - if ((await fs.pathExists(srcFolderPath)) && !(await fs.pathExists(srcZipPath))) { - await zip(srcFolderPath, srcZipPath); - await fs.remove(srcFolderPath); - } -} diff --git a/extensions/ql-vscode/src/databases-ui.ts b/extensions/ql-vscode/src/databases-ui.ts deleted file mode 100644 index cf474bfc5c6..00000000000 --- a/extensions/ql-vscode/src/databases-ui.ts +++ /dev/null @@ -1,785 +0,0 @@ -import * as path from 'path'; -import { DisposableObject } from './pure/disposable-object'; -import { - Event, - EventEmitter, - ProviderResult, - TreeDataProvider, - TreeItem, - Uri, - window, - env, -} from 'vscode'; -import * as fs from 'fs-extra'; - -import { - DatabaseChangedEvent, - DatabaseItem, - DatabaseManager, -} from './databases'; -import { - commandRunner, - commandRunnerWithProgress, - ProgressCallback, -} from './commandRunner'; -import { - isLikelyDatabaseRoot, - isLikelyDbLanguageFolder, - showAndLogErrorMessage -} from './helpers'; -import { logger } from './logging'; -import { clearCacheInDatabase } from './run-queries'; -import * as qsClient from './queryserver-client'; -import { upgradeDatabaseExplicit } from './upgrades'; -import { - importArchiveDatabase, - promptImportGithubDatabase, - promptImportInternetDatabase, - promptImportLgtmDatabase, -} from './databaseFetcher'; -import { CancellationToken } from 'vscode'; -import { asyncFilter, getErrorMessage } from './pure/helpers-pure'; -import { Credentials } from './authentication'; - -type ThemableIconPath = { light: string; dark: string } | string; - -/** - * Path to icons to display next to currently selected database. - */ -const SELECTED_DATABASE_ICON: ThemableIconPath = { - light: 'media/light/check.svg', - dark: 'media/dark/check.svg', -}; - -/** - * Path to icon to display next to an invalid database. - */ -const INVALID_DATABASE_ICON: ThemableIconPath = 'media/red-x.svg'; - -function joinThemableIconPath( - base: string, - iconPath: ThemableIconPath -): ThemableIconPath { - if (typeof iconPath == 'object') - return { - light: path.join(base, iconPath.light), - dark: path.join(base, iconPath.dark), - }; - else return path.join(base, iconPath); -} - -enum SortOrder { - NameAsc = 'NameAsc', - NameDesc = 'NameDesc', - DateAddedAsc = 'DateAddedAsc', - DateAddedDesc = 'DateAddedDesc', -} - -/** - * Tree data provider for the databases view. - */ -class DatabaseTreeDataProvider extends DisposableObject - implements TreeDataProvider { - private _sortOrder = SortOrder.NameAsc; - - private readonly _onDidChangeTreeData = this.push(new EventEmitter()); - private currentDatabaseItem: DatabaseItem | undefined; - - constructor( - private databaseManager: DatabaseManager, - private readonly extensionPath: string - ) { - super(); - - this.currentDatabaseItem = databaseManager.currentDatabaseItem; - - this.push( - this.databaseManager.onDidChangeDatabaseItem( - this.handleDidChangeDatabaseItem - ) - ); - this.push( - this.databaseManager.onDidChangeCurrentDatabaseItem( - this.handleDidChangeCurrentDatabaseItem - ) - ); - } - - public get onDidChangeTreeData(): Event { - return this._onDidChangeTreeData.event; - } - - private handleDidChangeDatabaseItem = (event: DatabaseChangedEvent): void => { - // Note that events from the database manager are instances of DatabaseChangedEvent - // and events fired by the UI are instances of DatabaseItem - - // When event.item is undefined, then the entire tree is refreshed. - // When event.item is a db item, then only that item is refreshed. - this._onDidChangeTreeData.fire(event.item); - }; - - private handleDidChangeCurrentDatabaseItem = ( - event: DatabaseChangedEvent - ): void => { - if (this.currentDatabaseItem) { - this._onDidChangeTreeData.fire(this.currentDatabaseItem); - } - this.currentDatabaseItem = event.item; - if (this.currentDatabaseItem) { - this._onDidChangeTreeData.fire(this.currentDatabaseItem); - } - }; - - public getTreeItem(element: DatabaseItem): TreeItem { - const item = new TreeItem(element.name); - if (element === this.currentDatabaseItem) { - item.iconPath = joinThemableIconPath( - this.extensionPath, - SELECTED_DATABASE_ICON - ); - item.contextValue = 'currentDatabase'; - } else if (element.error !== undefined) { - item.iconPath = joinThemableIconPath( - this.extensionPath, - INVALID_DATABASE_ICON - ); - } - item.tooltip = element.databaseUri.fsPath; - item.description = element.language; - return item; - } - - public getChildren(element?: DatabaseItem): ProviderResult { - if (element === undefined) { - return this.databaseManager.databaseItems.slice(0).sort((db1, db2) => { - switch (this.sortOrder) { - case SortOrder.NameAsc: - return db1.name.localeCompare(db2.name, env.language); - case SortOrder.NameDesc: - return db2.name.localeCompare(db1.name, env.language); - case SortOrder.DateAddedAsc: - return (db1.dateAdded || 0) - (db2.dateAdded || 0); - case SortOrder.DateAddedDesc: - return (db2.dateAdded || 0) - (db1.dateAdded || 0); - } - }); - } else { - return []; - } - } - - public getParent(_element: DatabaseItem): ProviderResult { - return null; - } - - public getCurrent(): DatabaseItem | undefined { - return this.currentDatabaseItem; - } - - public get sortOrder() { - return this._sortOrder; - } - - public set sortOrder(newSortOrder: SortOrder) { - this._sortOrder = newSortOrder; - this._onDidChangeTreeData.fire(undefined); - } -} - -/** Gets the first element in the given list, if any, or undefined if the list is empty or undefined. */ -function getFirst(list: Uri[] | undefined): Uri | undefined { - if (list === undefined || list.length === 0) { - return undefined; - } else { - return list[0]; - } -} - -/** - * Displays file selection dialog. Expects the user to choose a - * database directory, which should be the parent directory of a - * directory of the form `db-[language]`, for example, `db-cpp`. - * - * XXX: no validation is done other than checking the directory name - * to make sure it really is a database directory. - */ -async function chooseDatabaseDir(byFolder: boolean): Promise { - const chosen = await window.showOpenDialog({ - openLabel: byFolder ? 'Choose Database folder' : 'Choose Database archive', - canSelectFiles: !byFolder, - canSelectFolders: byFolder, - canSelectMany: false, - filters: byFolder ? {} : { Archives: ['zip'] }, - }); - return getFirst(chosen); -} - -export class DatabaseUI extends DisposableObject { - private treeDataProvider: DatabaseTreeDataProvider; - - public constructor( - private databaseManager: DatabaseManager, - private readonly queryServer: qsClient.QueryServerClient | undefined, - private readonly storagePath: string, - readonly extensionPath: string, - private readonly getCredentials: () => Promise - ) { - super(); - - this.treeDataProvider = this.push( - new DatabaseTreeDataProvider(databaseManager, extensionPath) - ); - this.push( - window.createTreeView('codeQLDatabases', { - treeDataProvider: this.treeDataProvider, - canSelectMany: true, - }) - ); - } - - init() { - void logger.log('Registering database panel commands.'); - this.push( - commandRunnerWithProgress( - 'codeQL.setCurrentDatabase', - this.handleSetCurrentDatabase, - { - title: 'Importing database from archive', - } - ) - ); - this.push( - commandRunnerWithProgress( - 'codeQL.upgradeCurrentDatabase', - this.handleUpgradeCurrentDatabase, - { - title: 'Upgrading current database', - cancellable: true, - } - ) - ); - this.push( - commandRunnerWithProgress( - 'codeQL.clearCache', - this.handleClearCache, - { - title: 'Clearing Cache', - }) - ); - - this.push( - commandRunnerWithProgress( - 'codeQLDatabases.chooseDatabaseFolder', - this.handleChooseDatabaseFolder, - { - title: 'Adding database from folder', - } - ) - ); - this.push( - commandRunnerWithProgress( - 'codeQLDatabases.chooseDatabaseArchive', - this.handleChooseDatabaseArchive, - { - title: 'Adding database from archive', - } - ) - ); - this.push( - commandRunnerWithProgress( - 'codeQLDatabases.chooseDatabaseInternet', - this.handleChooseDatabaseInternet, - { - title: 'Adding database from URL', - } - ) - ); - this.push( - commandRunnerWithProgress( - 'codeQLDatabases.chooseDatabaseGithub', - async ( - progress: ProgressCallback, - token: CancellationToken - ) => { - const credentials = await this.getCredentials(); - await this.handleChooseDatabaseGithub(credentials, progress, token); - }, - { - title: 'Adding database from GitHub', - }) - ); - this.push( - commandRunnerWithProgress( - 'codeQLDatabases.chooseDatabaseLgtm', - this.handleChooseDatabaseLgtm, - { - title: 'Adding database from LGTM', - }) - ); - this.push( - commandRunner( - 'codeQLDatabases.setCurrentDatabase', - this.handleMakeCurrentDatabase - ) - ); - this.push( - commandRunner( - 'codeQLDatabases.sortByName', - this.handleSortByName - ) - ); - this.push( - commandRunner( - 'codeQLDatabases.sortByDateAdded', - this.handleSortByDateAdded - ) - ); - this.push( - commandRunnerWithProgress( - 'codeQLDatabases.removeDatabase', - this.handleRemoveDatabase, - { - title: 'Removing database', - cancellable: false - } - ) - ); - this.push( - commandRunnerWithProgress( - 'codeQLDatabases.upgradeDatabase', - this.handleUpgradeDatabase, - { - title: 'Upgrading database', - cancellable: true, - } - ) - ); - this.push( - commandRunner( - 'codeQLDatabases.renameDatabase', - this.handleRenameDatabase - ) - ); - this.push( - commandRunner( - 'codeQLDatabases.openDatabaseFolder', - this.handleOpenFolder - ) - ); - this.push( - commandRunner( - 'codeQLDatabases.addDatabaseSource', - this.handleAddSource - ) - ); - this.push( - commandRunner( - 'codeQLDatabases.removeOrphanedDatabases', - this.handleRemoveOrphanedDatabases - ) - ); - } - - private handleMakeCurrentDatabase = async ( - databaseItem: DatabaseItem - ): Promise => { - await this.databaseManager.setCurrentDatabaseItem(databaseItem); - }; - - handleChooseDatabaseFolder = async ( - progress: ProgressCallback, - token: CancellationToken - ): Promise => { - try { - return await this.chooseAndSetDatabase(true, progress, token); - } catch (e) { - void showAndLogErrorMessage(getErrorMessage(e)); - return undefined; - } - }; - - handleRemoveOrphanedDatabases = async (): Promise => { - void logger.log('Removing orphaned databases from workspace storage.'); - let dbDirs = undefined; - - if ( - !(await fs.pathExists(this.storagePath)) || - !(await fs.stat(this.storagePath)).isDirectory() - ) { - void logger.log('Missing or invalid storage directory. Not trying to remove orphaned databases.'); - return; - } - - dbDirs = - // read directory - (await fs.readdir(this.storagePath, { withFileTypes: true })) - // remove non-directories - .filter(dirent => dirent.isDirectory()) - // get the full path - .map(dirent => path.join(this.storagePath, dirent.name)) - // remove databases still in workspace - .filter(dbDir => { - const dbUri = Uri.file(dbDir); - return this.databaseManager.databaseItems.every(item => item.databaseUri.fsPath !== dbUri.fsPath); - }); - - // remove non-databases - dbDirs = await asyncFilter(dbDirs, isLikelyDatabaseRoot); - - if (!dbDirs.length) { - void logger.log('No orphaned databases found.'); - return; - } - - // delete - const failures = [] as string[]; - await Promise.all( - dbDirs.map(async dbDir => { - try { - void logger.log(`Deleting orphaned database '${dbDir}'.`); - await fs.remove(dbDir); - } catch (e) { - failures.push(`${path.basename(dbDir)}`); - } - }) - ); - - if (failures.length) { - const dirname = path.dirname(failures[0]); - void showAndLogErrorMessage( - `Failed to delete unused databases (${failures.join(', ') - }).\nTo delete unused databases, please remove them manually from the storage folder ${dirname}.` - ); - } - }; - - - handleChooseDatabaseArchive = async ( - progress: ProgressCallback, - token: CancellationToken - ): Promise => { - try { - return await this.chooseAndSetDatabase(false, progress, token); - } catch (e) { - void showAndLogErrorMessage(getErrorMessage(e)); - return undefined; - } - }; - - handleChooseDatabaseInternet = async ( - progress: ProgressCallback, - token: CancellationToken - ): Promise => { - return await promptImportInternetDatabase( - this.databaseManager, - this.storagePath, - progress, - token, - this.queryServer?.cliServer - ); - }; - - handleChooseDatabaseGithub = async ( - credentials: Credentials, - progress: ProgressCallback, - token: CancellationToken - ): Promise => { - return await promptImportGithubDatabase( - this.databaseManager, - this.storagePath, - credentials, - progress, - token, - this.queryServer?.cliServer - ); - }; - - handleChooseDatabaseLgtm = async ( - progress: ProgressCallback, - token: CancellationToken - ): Promise => { - return await promptImportLgtmDatabase( - this.databaseManager, - this.storagePath, - progress, - token, - this.queryServer?.cliServer - ); - }; - - async tryUpgradeCurrentDatabase( - progress: ProgressCallback, - token: CancellationToken - ) { - await this.handleUpgradeCurrentDatabase(progress, token); - } - - private handleSortByName = async () => { - if (this.treeDataProvider.sortOrder === SortOrder.NameAsc) { - this.treeDataProvider.sortOrder = SortOrder.NameDesc; - } else { - this.treeDataProvider.sortOrder = SortOrder.NameAsc; - } - }; - - private handleSortByDateAdded = async () => { - if (this.treeDataProvider.sortOrder === SortOrder.DateAddedAsc) { - this.treeDataProvider.sortOrder = SortOrder.DateAddedDesc; - } else { - this.treeDataProvider.sortOrder = SortOrder.DateAddedAsc; - } - }; - - private handleUpgradeCurrentDatabase = async ( - progress: ProgressCallback, - token: CancellationToken, - ): Promise => { - await this.handleUpgradeDatabase( - progress, token, - this.databaseManager.currentDatabaseItem, - [] - ); - }; - - private handleUpgradeDatabase = async ( - progress: ProgressCallback, - token: CancellationToken, - databaseItem: DatabaseItem | undefined, - multiSelect: DatabaseItem[] | undefined, - ): Promise => { - if (multiSelect?.length) { - await Promise.all( - multiSelect.map((dbItem) => this.handleUpgradeDatabase(progress, token, dbItem, [])) - ); - } - if (this.queryServer === undefined) { - throw new Error( - 'Received request to upgrade database, but there is no running query server.' - ); - } - if (databaseItem === undefined) { - throw new Error( - 'Received request to upgrade database, but no database was provided.' - ); - } - if (databaseItem.contents === undefined) { - throw new Error( - 'Received request to upgrade database, but database contents could not be found.' - ); - } - if (databaseItem.contents.dbSchemeUri === undefined) { - throw new Error( - 'Received request to upgrade database, but database has no schema.' - ); - } - - // Search for upgrade scripts in any workspace folders available - - await upgradeDatabaseExplicit( - this.queryServer, - databaseItem, - progress, - token - ); - }; - - private handleClearCache = async ( - progress: ProgressCallback, - token: CancellationToken, - ): Promise => { - if ( - this.queryServer !== undefined && - this.databaseManager.currentDatabaseItem !== undefined - ) { - await clearCacheInDatabase( - this.queryServer, - this.databaseManager.currentDatabaseItem, - progress, - token - ); - } - }; - - private handleSetCurrentDatabase = async ( - progress: ProgressCallback, - token: CancellationToken, - uri: Uri, - ): Promise => { - try { - // Assume user has selected an archive if the file has a .zip extension - if (uri.path.endsWith('.zip')) { - await importArchiveDatabase( - uri.toString(true), - this.databaseManager, - this.storagePath, - progress, - token, - this.queryServer?.cliServer - ); - } else { - await this.setCurrentDatabase(progress, token, uri); - } - } catch (e) { - // rethrow and let this be handled by default error handling. - throw new Error( - `Could not set database to ${path.basename(uri.fsPath)}. Reason: ${getErrorMessage(e)}` - ); - } - }; - - private handleRemoveDatabase = async ( - progress: ProgressCallback, - token: CancellationToken, - databaseItem: DatabaseItem, - multiSelect: DatabaseItem[] | undefined - ): Promise => { - if (multiSelect?.length) { - await Promise.all(multiSelect.map((dbItem) => - this.databaseManager.removeDatabaseItem(progress, token, dbItem) - )); - } else { - await this.databaseManager.removeDatabaseItem(progress, token, databaseItem); - } - }; - - private handleRenameDatabase = async ( - databaseItem: DatabaseItem, - multiSelect: DatabaseItem[] | undefined - ): Promise => { - this.assertSingleDatabase(multiSelect); - - const newName = await window.showInputBox({ - prompt: 'Choose new database name', - value: databaseItem.name, - }); - - if (newName) { - await this.databaseManager.renameDatabaseItem(databaseItem, newName); - } - }; - - private handleOpenFolder = async ( - databaseItem: DatabaseItem, - multiSelect: DatabaseItem[] | undefined - ): Promise => { - if (multiSelect?.length) { - await Promise.all( - multiSelect.map((dbItem) => env.openExternal(dbItem.databaseUri)) - ); - } else { - await env.openExternal(databaseItem.databaseUri); - } - }; - - /** - * Adds the source folder of a CodeQL database to the workspace. - * When a database is first added in the "Databases" view, its source folder is added to the workspace. - * If the source folder is removed from the workspace for some reason, we want to be able to re-add it if need be. - */ - private handleAddSource = async ( - databaseItem: DatabaseItem, - multiSelect: DatabaseItem[] | undefined - ): Promise => { - if (multiSelect?.length) { - for (const dbItem of multiSelect) { - await this.databaseManager.addDatabaseSourceArchiveFolder(dbItem); - } - } else { - await this.databaseManager.addDatabaseSourceArchiveFolder(databaseItem); - } - }; - - /** - * Return the current database directory. If we don't already have a - * current database, ask the user for one, and return that, or - * undefined if they cancel. - */ - public async getDatabaseItem( - progress: ProgressCallback, - token: CancellationToken - ): Promise { - if (this.databaseManager.currentDatabaseItem === undefined) { - await this.chooseAndSetDatabase(false, progress, token); - } - - return this.databaseManager.currentDatabaseItem; - } - - private async setCurrentDatabase( - progress: ProgressCallback, - token: CancellationToken, - uri: Uri - ): Promise { - let databaseItem = this.databaseManager.findDatabaseItem(uri); - if (databaseItem === undefined) { - databaseItem = await this.databaseManager.openDatabase(progress, token, uri); - } - await this.databaseManager.setCurrentDatabaseItem(databaseItem); - - return databaseItem; - } - - /** - * Ask the user for a database directory. Returns the chosen database, or `undefined` if the - * operation was canceled. - */ - private async chooseAndSetDatabase( - byFolder: boolean, - progress: ProgressCallback, - token: CancellationToken, - ): Promise { - const uri = await chooseDatabaseDir(byFolder); - if (!uri) { - return undefined; - } - - if (byFolder) { - const fixedUri = await this.fixDbUri(uri); - // we are selecting a database folder - return await this.setCurrentDatabase(progress, token, fixedUri); - } else { - // we are selecting a database archive. Must unzip into a workspace-controlled area - // before importing. - return await importArchiveDatabase( - uri.toString(true), - this.databaseManager, - this.storagePath, - progress, - token, - this.queryServer?.cliServer - ); - } - } - - /** - * Perform some heuristics to ensure a proper database location is chosen. - * - * 1. If the selected URI to add is a file, choose the containing directory - * 2. If the selected URI is a directory matching db-*, choose the containing directory - * 3. choose the current directory - * - * @param uri a URI that is a database folder or inside it - * - * @return the actual database folder found by using the heuristics above. - */ - private async fixDbUri(uri: Uri): Promise { - let dbPath = uri.fsPath; - if ((await fs.stat(dbPath)).isFile()) { - dbPath = path.dirname(dbPath); - } - - if (isLikelyDbLanguageFolder(dbPath)) { - dbPath = path.dirname(dbPath); - } - return Uri.file(dbPath); - } - - private assertSingleDatabase( - multiSelect: DatabaseItem[] = [], - message = 'Please select a single database.' - ) { - if (multiSelect.length > 1) { - throw new Error(message); - } - } -} diff --git a/extensions/ql-vscode/src/databases.ts b/extensions/ql-vscode/src/databases.ts deleted file mode 100644 index a1c7ed17007..00000000000 --- a/extensions/ql-vscode/src/databases.ts +++ /dev/null @@ -1,926 +0,0 @@ -import * as fs from 'fs-extra'; -import * as glob from 'glob-promise'; -import * as path from 'path'; -import * as vscode from 'vscode'; -import * as cli from './cli'; -import { ExtensionContext } from 'vscode'; -import { - showAndLogErrorMessage, - showAndLogWarningMessage, - showAndLogInformationMessage, - isLikelyDatabaseRoot -} from './helpers'; -import { - ProgressCallback, - withProgress -} from './commandRunner'; -import { zipArchiveScheme, encodeArchiveBasePath, decodeSourceArchiveUri, encodeSourceArchiveUri } from './archive-filesystem-provider'; -import { DisposableObject } from './pure/disposable-object'; -import { Logger, logger } from './logging'; -import { registerDatabases, Dataset, deregisterDatabases } from './pure/messages'; -import { QueryServerClient } from './queryserver-client'; -import { getErrorMessage } from './pure/helpers-pure'; - -/** - * databases.ts - * ------------ - * Managing state of what the current database is, and what other - * databases have been recently selected. - * - * The source of truth of the current state resides inside the - * `DatabaseManager` class below. - */ - -/** - * The name of the key in the workspaceState dictionary in which we - * persist the current database across sessions. - */ -const CURRENT_DB = 'currentDatabase'; - -/** - * The name of the key in the workspaceState dictionary in which we - * persist the list of databases across sessions. - */ -const DB_LIST = 'databaseList'; - -export interface DatabaseOptions { - displayName?: string; - ignoreSourceArchive?: boolean; - dateAdded?: number | undefined; - language?: string; -} - -export interface FullDatabaseOptions extends DatabaseOptions { - ignoreSourceArchive: boolean; - dateAdded: number | undefined; - language: string | undefined; -} - -interface PersistedDatabaseItem { - uri: string; - options?: DatabaseOptions; -} - -/** - * The layout of the database. - */ -export enum DatabaseKind { - /** A CodeQL database */ - Database, - /** A raw QL dataset */ - RawDataset -} - -export interface DatabaseContents { - /** The layout of the database */ - kind: DatabaseKind; - /** - * The name of the database. - */ - name: string; - /** The URI of the QL dataset within the database. */ - datasetUri: vscode.Uri; - /** The URI of the source archive within the database, if one exists. */ - sourceArchiveUri?: vscode.Uri; - /** The URI of the CodeQL database scheme within the database, if exactly one exists. */ - dbSchemeUri?: vscode.Uri; -} - -/** - * An error thrown when we cannot find a valid database in a putative - * database directory. - */ -class InvalidDatabaseError extends Error { -} - - -async function findDataset(parentDirectory: string): Promise { - /* - * Look directly in the root - */ - let dbRelativePaths = await glob('db-*/', { - cwd: parentDirectory - }); - - if (dbRelativePaths.length === 0) { - /* - * Check If they are in the old location - */ - dbRelativePaths = await glob('working/db-*/', { - cwd: parentDirectory - }); - } - if (dbRelativePaths.length === 0) { - throw new InvalidDatabaseError(`'${parentDirectory}' does not contain a dataset directory.`); - } - - const dbAbsolutePath = path.join(parentDirectory, dbRelativePaths[0]); - if (dbRelativePaths.length > 1) { - void showAndLogWarningMessage(`Found multiple dataset directories in database, using '${dbAbsolutePath}'.`); - } - - return vscode.Uri.file(dbAbsolutePath); -} - -// exported for testing -export async function findSourceArchive( - databasePath: string, silent = false -): Promise { - const relativePaths = ['src', 'output/src_archive']; - - for (const relativePath of relativePaths) { - const basePath = path.join(databasePath, relativePath); - const zipPath = basePath + '.zip'; - - // Prefer using a zip archive over a directory. - if (await fs.pathExists(zipPath)) { - return encodeArchiveBasePath(zipPath); - } else if (await fs.pathExists(basePath)) { - return vscode.Uri.file(basePath); - } - } - if (!silent) { - void showAndLogInformationMessage( - `Could not find source archive for database '${databasePath}'. Assuming paths are absolute.` - ); - } - return undefined; -} - -async function resolveDatabase( - databasePath: string, -): Promise { - - const name = path.basename(databasePath); - - // Look for dataset and source archive. - const datasetUri = await findDataset(databasePath); - const sourceArchiveUri = await findSourceArchive(databasePath); - - return { - kind: DatabaseKind.Database, - name, - datasetUri, - sourceArchiveUri - }; -} - -/** Gets the relative paths of all `.dbscheme` files in the given directory. */ -async function getDbSchemeFiles(dbDirectory: string): Promise { - return await glob('*.dbscheme', { cwd: dbDirectory }); -} - -async function resolveDatabaseContents( - uri: vscode.Uri, -): Promise { - if (uri.scheme !== 'file') { - throw new Error(`Database URI scheme '${uri.scheme}' not supported; only 'file' URIs are supported.`); - } - const databasePath = uri.fsPath; - if (!await fs.pathExists(databasePath)) { - throw new InvalidDatabaseError(`Database '${databasePath}' does not exist.`); - } - - const contents = await resolveDatabase(databasePath); - - if (contents === undefined) { - throw new InvalidDatabaseError(`'${databasePath}' is not a valid database.`); - } - - // Look for a single dbscheme file within the database. - // This should be found in the dataset directory, regardless of the form of database. - const dbPath = contents.datasetUri.fsPath; - const dbSchemeFiles = await getDbSchemeFiles(dbPath); - if (dbSchemeFiles.length === 0) { - throw new InvalidDatabaseError(`Database '${databasePath}' does not contain a CodeQL dbscheme under '${dbPath}'.`); - } - else if (dbSchemeFiles.length > 1) { - throw new InvalidDatabaseError(`Database '${databasePath}' contains multiple CodeQL dbschemes under '${dbPath}'.`); - } else { - contents.dbSchemeUri = vscode.Uri.file(path.resolve(dbPath, dbSchemeFiles[0])); - } - return contents; -} - -/** An item in the list of available databases */ -export interface DatabaseItem { - /** The URI of the database */ - readonly databaseUri: vscode.Uri; - /** The name of the database to be displayed in the UI */ - name: string; - - /** The primary language of the database or empty string if unknown */ - readonly language: string; - /** The URI of the database's source archive, or `undefined` if no source archive is to be used. */ - readonly sourceArchive: vscode.Uri | undefined; - /** - * The contents of the database. - * Will be `undefined` if the database is invalid. Can be updated by calling `refresh()`. - */ - readonly contents: DatabaseContents | undefined; - - /** - * The date this database was added as a unix timestamp. Or undefined if we don't know. - */ - readonly dateAdded: number | undefined; - - /** If the database is invalid, describes why. */ - readonly error: Error | undefined; - /** - * Resolves the contents of the database. - * - * @remarks - * The contents include the database directory, source archive, and metadata about the database. - * If the database is invalid, `this.error` is updated with the error object that describes why - * the database is invalid. This error is also thrown. - */ - refresh(): Promise; - /** - * Resolves a filename to its URI in the source archive. - * - * @param file Filename within the source archive. May be `undefined` to return a dummy file path. - */ - resolveSourceFile(file: string | undefined): vscode.Uri; - - /** - * Holds if the database item has a `.dbinfo` or `codeql-database.yml` file. - */ - hasMetadataFile(): Promise; - - /** - * Returns `sourceLocationPrefix` of exported database. - */ - getSourceLocationPrefix(server: cli.CodeQLCliServer): Promise; - - /** - * Returns dataset folder of exported database. - */ - getDatasetFolder(server: cli.CodeQLCliServer): Promise; - - /** - * Returns the root uri of the virtual filesystem for this database's source archive, - * as displayed in the filesystem explorer. - */ - getSourceArchiveExplorerUri(): vscode.Uri; - - /** - * Holds if `uri` belongs to this database's source archive. - */ - belongsToSourceArchiveExplorerUri(uri: vscode.Uri): boolean; - - /** - * Whether the database may be affected by test execution for the given path. - */ - isAffectedByTest(testPath: string): Promise; - - /** - * Gets the state of this database, to be persisted in the workspace state. - */ - getPersistedState(): PersistedDatabaseItem; - - /** - * Verifies that this database item has a zipped source folder. Returns an error message if it does not. - */ - verifyZippedSources(): string | undefined; -} - -export enum DatabaseEventKind { - Add = 'Add', - Remove = 'Remove', - - // Fired when databases are refreshed from persisted state - Refresh = 'Refresh', - - // Fired when the current database changes - Change = 'Change', - - Rename = 'Rename' -} - -export interface DatabaseChangedEvent { - kind: DatabaseEventKind; - item: DatabaseItem | undefined; -} - -// Exported for testing -export class DatabaseItemImpl implements DatabaseItem { - private _error: Error | undefined = undefined; - private _contents: DatabaseContents | undefined; - /** A cache of database info */ - private _dbinfo: cli.DbInfo | undefined; - - public constructor( - public readonly databaseUri: vscode.Uri, - contents: DatabaseContents | undefined, - private options: FullDatabaseOptions, - private readonly onChanged: (event: DatabaseChangedEvent) => void - ) { - this._contents = contents; - } - - public get name(): string { - if (this.options.displayName) { - return this.options.displayName; - } - else if (this._contents) { - return this._contents.name; - } - else { - return path.basename(this.databaseUri.fsPath); - } - } - - public set name(newName: string) { - this.options.displayName = newName; - } - - public get sourceArchive(): vscode.Uri | undefined { - if (this.options.ignoreSourceArchive || (this._contents === undefined)) { - return undefined; - } else { - return this._contents.sourceArchiveUri; - } - } - - public get contents(): DatabaseContents | undefined { - return this._contents; - } - - public get dateAdded(): number | undefined { - return this.options.dateAdded; - } - - public get error(): Error | undefined { - return this._error; - } - - public async refresh(): Promise { - try { - try { - this._contents = await resolveDatabaseContents(this.databaseUri); - this._error = undefined; - } - catch (e) { - this._contents = undefined; - this._error = e instanceof Error ? e : new Error(String(e)); - throw e; - } - } - finally { - this.onChanged({ - kind: DatabaseEventKind.Refresh, - item: this - }); - } - } - - public resolveSourceFile(uriStr: string | undefined): vscode.Uri { - const sourceArchive = this.sourceArchive; - const uri = uriStr ? vscode.Uri.parse(uriStr, true) : undefined; - if (uri && uri.scheme !== 'file') { - throw new Error(`Invalid uri scheme in ${uriStr}. Only 'file' is allowed.`); - } - if (!sourceArchive) { - if (uri) { - return uri; - } else { - return this.databaseUri; - } - } - - if (uri) { - const relativeFilePath = decodeURI(uri.path).replace(':', '_').replace(/^\/*/, ''); - if (sourceArchive.scheme === zipArchiveScheme) { - const zipRef = decodeSourceArchiveUri(sourceArchive); - const pathWithinSourceArchive = zipRef.pathWithinSourceArchive === '/' - ? relativeFilePath - : zipRef.pathWithinSourceArchive + '/' + relativeFilePath; - return encodeSourceArchiveUri({ - pathWithinSourceArchive, - sourceArchiveZipPath: zipRef.sourceArchiveZipPath, - }); - - } else { - let newPath = sourceArchive.path; - if (!newPath.endsWith('/')) { - // Ensure a trailing slash. - newPath += '/'; - } - newPath += relativeFilePath; - - return sourceArchive.with({ path: newPath }); - } - - } else { - return sourceArchive; - } - } - - /** - * Gets the state of this database, to be persisted in the workspace state. - */ - public getPersistedState(): PersistedDatabaseItem { - return { - uri: this.databaseUri.toString(true), - options: this.options - }; - } - - /** - * Holds if the database item refers to an exported snapshot - */ - public async hasMetadataFile(): Promise { - return await isLikelyDatabaseRoot(this.databaseUri.fsPath); - } - - /** - * Returns information about a database. - */ - private async getDbInfo(server: cli.CodeQLCliServer): Promise { - if (this._dbinfo === undefined) { - this._dbinfo = await server.resolveDatabase(this.databaseUri.fsPath); - } - return this._dbinfo; - } - - /** - * Returns `sourceLocationPrefix` of database. Requires that the database - * has a `.dbinfo` file, which is the source of the prefix. - */ - public async getSourceLocationPrefix(server: cli.CodeQLCliServer): Promise { - const dbInfo = await this.getDbInfo(server); - return dbInfo.sourceLocationPrefix; - } - - /** - * Returns path to dataset folder of database. - */ - public async getDatasetFolder(server: cli.CodeQLCliServer): Promise { - const dbInfo = await this.getDbInfo(server); - return dbInfo.datasetFolder; - } - - public get language() { - return this.options.language || ''; - } - - /** - * Returns the root uri of the virtual filesystem for this database's source archive. - */ - public getSourceArchiveExplorerUri(): vscode.Uri { - const sourceArchive = this.sourceArchive; - if (sourceArchive === undefined || !sourceArchive.fsPath.endsWith('.zip')) { - throw new Error(this.verifyZippedSources()); - } - return encodeArchiveBasePath(sourceArchive.fsPath); - } - - public verifyZippedSources(): string | undefined { - const sourceArchive = this.sourceArchive; - if (sourceArchive === undefined) { - return `${this.name} has no source archive.`; - } - - if (!sourceArchive.fsPath.endsWith('.zip')) { - return `${this.name} has a source folder that is unzipped.`; - } - return; - } - - /** - * Holds if `uri` belongs to this database's source archive. - */ - public belongsToSourceArchiveExplorerUri(uri: vscode.Uri): boolean { - if (this.sourceArchive === undefined) - return false; - return uri.scheme === zipArchiveScheme && - decodeSourceArchiveUri(uri).sourceArchiveZipPath === this.sourceArchive.fsPath; - } - - public async isAffectedByTest(testPath: string): Promise { - const databasePath = this.databaseUri.fsPath; - if (!databasePath.endsWith('.testproj')) { - return false; - } - try { - const stats = await fs.stat(testPath); - if (stats.isDirectory()) { - return !path.relative(testPath, databasePath).startsWith('..'); - } else { - // database for /one/two/three/test.ql is at /one/two/three/three.testproj - const testdir = path.dirname(testPath); - const testdirbase = path.basename(testdir); - return databasePath == path.join(testdir, testdirbase + '.testproj'); - } - } catch { - // No information available for test path - assume database is unaffected. - return false; - } - } -} - -/** - * A promise that resolves to an event's result value when the event - * `event` fires. If waiting for the event takes too long (by default - * >1000ms) log a warning, and resolve to undefined. - */ -function eventFired(event: vscode.Event, timeoutMs = 1000): Promise { - return new Promise((res, _rej) => { - const timeout = setTimeout(() => { - void logger.log(`Waiting for event ${event} timed out after ${timeoutMs}ms`); - res(undefined); - dispose(); - }, timeoutMs); - const disposable = event(e => { - res(e); - dispose(); - }); - function dispose() { - clearTimeout(timeout); - disposable.dispose(); - } - }); -} - -export class DatabaseManager extends DisposableObject { - private readonly _onDidChangeDatabaseItem = this.push(new vscode.EventEmitter()); - - readonly onDidChangeDatabaseItem = this._onDidChangeDatabaseItem.event; - - private readonly _onDidChangeCurrentDatabaseItem = this.push(new vscode.EventEmitter()); - readonly onDidChangeCurrentDatabaseItem = this._onDidChangeCurrentDatabaseItem.event; - - private readonly _databaseItems: DatabaseItem[] = []; - private _currentDatabaseItem: DatabaseItem | undefined = undefined; - - constructor( - private readonly ctx: ExtensionContext, - private readonly qs: QueryServerClient, - private readonly cli: cli.CodeQLCliServer, - public logger: Logger - ) { - super(); - - qs.onDidStartQueryServer(this.reregisterDatabases.bind(this)); - - // Let this run async. - void this.loadPersistedState(); - } - - public async openDatabase( - progress: ProgressCallback, - token: vscode.CancellationToken, - uri: vscode.Uri, - displayName?: string - ): Promise { - const contents = await resolveDatabaseContents(uri); - // Ignore the source archive for QLTest databases by default. - const isQLTestDatabase = path.extname(uri.fsPath) === '.testproj'; - const fullOptions: FullDatabaseOptions = { - ignoreSourceArchive: isQLTestDatabase, - // If a displayName is not passed in, the basename of folder containing the database is used. - displayName, - dateAdded: Date.now(), - language: await this.getPrimaryLanguage(uri.fsPath) - }; - const databaseItem = new DatabaseItemImpl(uri, contents, fullOptions, (event) => { - this._onDidChangeDatabaseItem.fire(event); - }); - - await this.addDatabaseItem(progress, token, databaseItem); - await this.addDatabaseSourceArchiveFolder(databaseItem); - - return databaseItem; - } - - private async reregisterDatabases( - progress: ProgressCallback, - token: vscode.CancellationToken - ) { - let completed = 0; - await Promise.all(this._databaseItems.map(async (databaseItem) => { - await this.registerDatabase(progress, token, databaseItem); - completed++; - progress({ - maxStep: this._databaseItems.length, - step: completed, - message: 'Re-registering databases' - }); - })); - } - - public async addDatabaseSourceArchiveFolder(item: DatabaseItem) { - // The folder may already be in workspace state from a previous - // session. If not, add it. - const index = this.getDatabaseWorkspaceFolderIndex(item); - if (index === -1) { - // Add that filesystem as a folder to the current workspace. - // - // It's important that we add workspace folders to the end, - // rather than beginning of the list, because the first - // workspace folder is special; if it gets updated, the entire - // extension host is restarted. (cf. - // https://github.com/microsoft/vscode/blob/e0d2ed907d1b22808c56127678fb436d604586a7/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts#L209-L214) - // - // This is undesirable, as we might be adding and removing many - // workspace folders as the user adds and removes databases. - const end = (vscode.workspace.workspaceFolders || []).length; - - const msg = item.verifyZippedSources(); - if (msg) { - void logger.log(`Could not add source folder because ${msg}`); - return; - } - - const uri = item.getSourceArchiveExplorerUri(); - void logger.log(`Adding workspace folder for ${item.name} source archive at index ${end}`); - if ((vscode.workspace.workspaceFolders || []).length < 2) { - // Adding this workspace folder makes the workspace - // multi-root, which may surprise the user. Let them know - // we're doing this. - void vscode.window.showInformationMessage(`Adding workspace folder for source archive of database ${item.name}.`); - } - vscode.workspace.updateWorkspaceFolders(end, 0, { - name: `[${item.name} source archive]`, - uri, - }); - // vscode api documentation says we must to wait for this event - // between multiple `updateWorkspaceFolders` calls. - await eventFired(vscode.workspace.onDidChangeWorkspaceFolders); - } - } - - private async createDatabaseItemFromPersistedState( - progress: ProgressCallback, - token: vscode.CancellationToken, - state: PersistedDatabaseItem - ): Promise { - - let displayName: string | undefined = undefined; - let ignoreSourceArchive = false; - let dateAdded = undefined; - let language = undefined; - if (state.options) { - if (typeof state.options.displayName === 'string') { - displayName = state.options.displayName; - } - if (typeof state.options.ignoreSourceArchive === 'boolean') { - ignoreSourceArchive = state.options.ignoreSourceArchive; - } - if (typeof state.options.dateAdded === 'number') { - dateAdded = state.options.dateAdded; - } - language = state.options.language; - } - - const dbBaseUri = vscode.Uri.parse(state.uri, true); - if (language === undefined) { - // we haven't been successful yet at getting the language. try again - language = await this.getPrimaryLanguage(dbBaseUri.fsPath); - } - - const fullOptions: FullDatabaseOptions = { - ignoreSourceArchive, - displayName, - dateAdded, - language - }; - const item = new DatabaseItemImpl(dbBaseUri, undefined, fullOptions, - (event) => { - this._onDidChangeDatabaseItem.fire(event); - }); - - await this.addDatabaseItem(progress, token, item); - return item; - } - - private async loadPersistedState(): Promise { - return withProgress({ - location: vscode.ProgressLocation.Notification - }, - async (progress, token) => { - const currentDatabaseUri = this.ctx.workspaceState.get(CURRENT_DB); - const databases = this.ctx.workspaceState.get(DB_LIST, []); - let step = 0; - progress({ - maxStep: databases.length, - message: 'Loading persisted databases', - step - }); - try { - for (const database of databases) { - progress({ - maxStep: databases.length, - message: `Loading ${database.options?.displayName || 'databases'}`, - step: ++step - }); - - const databaseItem = await this.createDatabaseItemFromPersistedState(progress, token, database); - try { - await databaseItem.refresh(); - await this.registerDatabase(progress, token, databaseItem); - if (currentDatabaseUri === database.uri) { - await this.setCurrentDatabaseItem(databaseItem, true); - } - } - catch (e) { - // When loading from persisted state, leave invalid databases in the list. They will be - // marked as invalid, and cannot be set as the current database. - } - } - } catch (e) { - // database list had an unexpected type - nothing to be done? - void showAndLogErrorMessage(`Database list loading failed: ${getErrorMessage(e)}`); - } - }); - } - - public get databaseItems(): readonly DatabaseItem[] { - return this._databaseItems; - } - - public get currentDatabaseItem(): DatabaseItem | undefined { - return this._currentDatabaseItem; - } - - public async setCurrentDatabaseItem( - item: DatabaseItem | undefined, - skipRefresh = false - ): Promise { - - if (!skipRefresh && (item !== undefined)) { - await item.refresh(); // Will throw on invalid database. - } - if (this._currentDatabaseItem !== item) { - this._currentDatabaseItem = item; - this.updatePersistedCurrentDatabaseItem(); - - await vscode.commands.executeCommand('setContext', 'codeQL.currentDatabaseItem', item?.name); - - this._onDidChangeCurrentDatabaseItem.fire({ - item, - kind: DatabaseEventKind.Change - }); - } - } - - /** - * Returns the index of the workspace folder that corresponds to the source archive of `item` - * if there is one, and -1 otherwise. - */ - private getDatabaseWorkspaceFolderIndex(item: DatabaseItem): number { - return (vscode.workspace.workspaceFolders || []) - .findIndex(folder => item.belongsToSourceArchiveExplorerUri(folder.uri)); - } - - public findDatabaseItem(uri: vscode.Uri): DatabaseItem | undefined { - const uriString = uri.toString(true); - return this._databaseItems.find(item => item.databaseUri.toString(true) === uriString); - } - - public findDatabaseItemBySourceArchive(uri: vscode.Uri): DatabaseItem | undefined { - const uriString = uri.toString(true); - return this._databaseItems.find(item => item.sourceArchive && item.sourceArchive.toString(true) === uriString); - } - - private async addDatabaseItem( - progress: ProgressCallback, - token: vscode.CancellationToken, - item: DatabaseItem - ) { - this._databaseItems.push(item); - await this.updatePersistedDatabaseList(); - - // Add this database item to the allow-list - // Database items reconstituted from persisted state - // will not have their contents yet. - if (item.contents?.datasetUri) { - await this.registerDatabase(progress, token, item); - } - // note that we use undefined as the item in order to reset the entire tree - this._onDidChangeDatabaseItem.fire({ - item: undefined, - kind: DatabaseEventKind.Add - }); - } - - public async renameDatabaseItem(item: DatabaseItem, newName: string) { - item.name = newName; - await this.updatePersistedDatabaseList(); - this._onDidChangeDatabaseItem.fire({ - // pass undefined so that the entire tree is rebuilt in order to re-sort - item: undefined, - kind: DatabaseEventKind.Rename - }); - } - - public async removeDatabaseItem( - progress: ProgressCallback, - token: vscode.CancellationToken, - item: DatabaseItem - ) { - if (this._currentDatabaseItem == item) { - this._currentDatabaseItem = undefined; - } - const index = this.databaseItems.findIndex(searchItem => searchItem === item); - if (index >= 0) { - this._databaseItems.splice(index, 1); - } - await this.updatePersistedDatabaseList(); - - // Delete folder from workspace, if it is still there - const folderIndex = (vscode.workspace.workspaceFolders || []).findIndex( - folder => item.belongsToSourceArchiveExplorerUri(folder.uri) - ); - if (folderIndex >= 0) { - void logger.log(`Removing workspace folder at index ${folderIndex}`); - vscode.workspace.updateWorkspaceFolders(folderIndex, 1); - } - - // Remove this database item from the allow-list - await this.deregisterDatabase(progress, token, item); - - // Delete folder from file system only if it is controlled by the extension - if (this.isExtensionControlledLocation(item.databaseUri)) { - void logger.log('Deleting database from filesystem.'); - fs.remove(item.databaseUri.fsPath).then( - () => void logger.log(`Deleted '${item.databaseUri.fsPath}'`), - e => void logger.log(`Failed to delete '${item.databaseUri.fsPath}'. Reason: ${getErrorMessage(e)}`)); - } - - // note that we use undefined as the item in order to reset the entire tree - this._onDidChangeDatabaseItem.fire({ - item: undefined, - kind: DatabaseEventKind.Remove - }); - } - - private async deregisterDatabase( - progress: ProgressCallback, - token: vscode.CancellationToken, - dbItem: DatabaseItem, - ) { - if (dbItem.contents && (await this.cli.cliConstraints.supportsDatabaseRegistration())) { - const databases: Dataset[] = [{ - dbDir: dbItem.contents.datasetUri.fsPath, - workingSet: 'default' - }]; - await this.qs.sendRequest(deregisterDatabases, { databases }, token, progress); - } - } - - private async registerDatabase( - progress: ProgressCallback, - token: vscode.CancellationToken, - dbItem: DatabaseItem, - ) { - if (dbItem.contents && (await this.cli.cliConstraints.supportsDatabaseRegistration())) { - const databases: Dataset[] = [{ - dbDir: dbItem.contents.datasetUri.fsPath, - workingSet: 'default' - }]; - await this.qs.sendRequest(registerDatabases, { databases }, token, progress); - } - } - - private updatePersistedCurrentDatabaseItem(): void { - void this.ctx.workspaceState.update(CURRENT_DB, this._currentDatabaseItem ? - this._currentDatabaseItem.databaseUri.toString(true) : undefined); - } - - private async updatePersistedDatabaseList(): Promise { - await this.ctx.workspaceState.update(DB_LIST, this._databaseItems.map(item => item.getPersistedState())); - } - - private isExtensionControlledLocation(uri: vscode.Uri) { - const storagePath = this.ctx.storagePath || this.ctx.globalStoragePath; - // the uri.fsPath function on windows returns a lowercase drive letter, - // but storagePath will have an uppercase drive letter. Be sure to compare - // URIs to URIs only - if (storagePath) { - return uri.fsPath.startsWith(vscode.Uri.file(storagePath).fsPath); - } - return false; - } - - private async getPrimaryLanguage(dbPath: string) { - if (!(await this.cli.cliConstraints.supportsLanguageName())) { - // return undefined so that we recalculate on restart until the cli is at a version that - // supports this feature. This recalculation is cheap since we avoid calling into the cli - // unless we know it can return the langauges property. - return undefined; - } - const dbInfo = await this.cli.resolveDatabase(dbPath); - return dbInfo.languages?.[0] || ''; - } -} - -/** - * Get the set of directories containing upgrades, given a list of - * scripts returned by the cli's upgrade resolution. - */ -export function getUpgradesDirectories(scripts: string[]): vscode.Uri[] { - const parentDirs = scripts.map(dir => path.dirname(dir)); - const uniqueParentDirs = new Set(parentDirs); - return Array.from(uniqueParentDirs).map(filePath => vscode.Uri.file(filePath)); -} diff --git a/extensions/ql-vscode/src/databases/README.md b/extensions/ql-vscode/src/databases/README.md new file mode 100644 index 00000000000..1028c7d8e88 --- /dev/null +++ b/extensions/ql-vscode/src/databases/README.md @@ -0,0 +1,3 @@ +### Databases + +This folder contains code for the (local) databases panel and the variant analysis repositories panel. diff --git a/extensions/ql-vscode/src/databases/code-search-api.ts b/extensions/ql-vscode/src/databases/code-search-api.ts new file mode 100644 index 00000000000..677c41591bf --- /dev/null +++ b/extensions/ql-vscode/src/databases/code-search-api.ts @@ -0,0 +1,79 @@ +import { throttling } from "@octokit/plugin-throttling"; +import type { Octokit } from "@octokit/rest"; +import type { CancellationToken } from "vscode"; +import type { Credentials } from "../common/authentication"; +import type { BaseLogger } from "../common/logging"; +import { AppOctokit } from "../common/octokit"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { UserCancellationException } from "../common/vscode/progress"; +import type { EndpointDefaults } from "@octokit/types"; +import { getOctokitBaseUrl } from "../common/vscode/octokit"; + +export async function getCodeSearchRepositories( + query: string, + progress: ProgressCallback, + token: CancellationToken, + credentials: Credentials, + logger: BaseLogger, +): Promise { + const nwos: string[] = []; + const octokit = await provideOctokitWithThrottling(credentials, logger); + let i = 0; + + for await (const response of octokit.paginate.iterator( + octokit.rest.search.code, + { + q: query, + per_page: 100, + }, + )) { + i++; + nwos.push(...response.data.map((item) => item.repository.full_name)); + const totalNumberOfResultPages = Math.ceil(response.data.total_count / 100); + const totalNumberOfRequests = + totalNumberOfResultPages > 10 ? 10 : totalNumberOfResultPages; + progress({ + maxStep: totalNumberOfRequests, + step: i, + message: "Sending API requests to get Code Search results.", + }); + + if (token.isCancellationRequested) { + throw new UserCancellationException("Code search cancelled.", true); + } + } + + return [...new Set(nwos)]; +} + +async function provideOctokitWithThrottling( + credentials: Credentials, + logger: BaseLogger, +): Promise { + const MyOctokit = AppOctokit.plugin(throttling); + const auth = await credentials.getAccessToken(); + + const octokit = new MyOctokit({ + auth, + baseUrl: getOctokitBaseUrl(), + throttle: { + onRateLimit: (retryAfter: number, options: EndpointDefaults): boolean => { + void logger.log( + `Rate Limit detected for request ${options.method} ${options.url}. Retrying after ${retryAfter} seconds!`, + ); + + return true; + }, + onSecondaryRateLimit: ( + _retryAfter: number, + options: EndpointDefaults, + ): void => { + void logger.log( + `Secondary Rate Limit detected for request ${options.method} ${options.url}`, + ); + }, + }, + }); + + return octokit; +} diff --git a/extensions/ql-vscode/src/databases/config/db-config-store.ts b/extensions/ql-vscode/src/databases/config/db-config-store.ts new file mode 100644 index 00000000000..b08406c9764 --- /dev/null +++ b/extensions/ql-vscode/src/databases/config/db-config-store.ts @@ -0,0 +1,409 @@ +import { pathExists, outputJSON, readJSON, readJSONSync } from "fs-extra"; +import { join } from "path"; +import type { DbConfig, SelectedDbItem } from "./db-config"; +import { + cloneDbConfig, + removeRemoteList, + removeRemoteOwner, + removeRemoteRepo, + renameRemoteList, + DB_CONFIG_VERSION, + SelectedDbItemKind, +} from "./db-config"; +import type { FSWatcher } from "chokidar"; +import { watch } from "chokidar"; +import type { DisposeHandler } from "../../common/disposable-object"; +import { DisposableObject } from "../../common/disposable-object"; +import { DbConfigValidator } from "./db-config-validator"; +import type { App } from "../../common/app"; +import type { AppEvent, AppEventEmitter } from "../../common/events"; +import type { DbConfigValidationError } from "../db-validation-errors"; +import { DbConfigValidationErrorKind } from "../db-validation-errors"; +import { ValueResult } from "../../common/value-result"; +import type { RemoteUserDefinedListDbItem, DbItem } from "../db-item"; +import { DbItemKind } from "../db-item"; + +export class DbConfigStore extends DisposableObject { + public static readonly databaseConfigFileName = "databases.json"; + + public readonly onDidChangeConfig: AppEvent; + private readonly onDidChangeConfigEventEmitter: AppEventEmitter; + + private readonly configPath: string; + private readonly configValidator: DbConfigValidator; + + private config: DbConfig | undefined; + private configErrors: DbConfigValidationError[]; + private configWatcher: FSWatcher | undefined; + + public constructor( + private readonly app: App, + private readonly shouldWatchConfig = true, + ) { + super(); + + const storagePath = app.workspaceStoragePath || app.globalStoragePath; + this.configPath = join(storagePath, DbConfigStore.databaseConfigFileName); + + this.config = this.createEmptyConfig(); + this.configErrors = []; + this.configWatcher = undefined; + this.configValidator = new DbConfigValidator(app.extensionPath); + this.onDidChangeConfigEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onDidChangeConfig = this.onDidChangeConfigEventEmitter.event; + } + + public async initialize(): Promise { + await this.loadConfig(); + if (this.shouldWatchConfig) { + this.watchConfig(); + } + } + + public dispose(disposeHandler?: DisposeHandler): void { + super.dispose(disposeHandler); + this.configWatcher?.unwatch(this.configPath); + } + + public getConfig(): ValueResult { + if (this.config) { + // Clone the config so that it's not modified outside of this class. + return ValueResult.ok(cloneDbConfig(this.config)); + } else { + return ValueResult.fail(this.configErrors); + } + } + + public getConfigPath(): string { + return this.configPath; + } + + public async setSelectedDbItem(dbItem: SelectedDbItem): Promise { + if (!this.config) { + // If the app is trying to set the selected item without a config + // being set it means that there is a bug in our code, so we throw + // an error instead of just returning an error result. + throw Error("Cannot select database item if config is not loaded"); + } + + const config = { + ...this.config, + selected: dbItem, + }; + + await this.writeConfig(config); + } + + public async removeDbItem(dbItem: DbItem): Promise { + if (!this.config) { + throw Error("Cannot remove item if config is not loaded"); + } + + let config: DbConfig; + + switch (dbItem.kind) { + case DbItemKind.RemoteUserDefinedList: + config = removeRemoteList(this.config, dbItem.listName); + break; + case DbItemKind.RemoteRepo: + config = removeRemoteRepo( + this.config, + dbItem.repoFullName, + dbItem.parentListName, + ); + break; + case DbItemKind.RemoteOwner: + config = removeRemoteOwner(this.config, dbItem.ownerName); + break; + default: + throw Error(`Type '${dbItem.kind}' cannot be removed`); + } + + await this.writeConfig(config); + } + + public async addRemoteReposToList( + repoNwoList: string[], + parentList: string, + ): Promise { + if (!this.config) { + throw Error("Cannot add variant analysis repos if config is not loaded"); + } + + const config = cloneDbConfig(this.config); + const parent = config.databases.variantAnalysis.repositoryLists.find( + (list) => list.name === parentList, + ); + if (!parent) { + throw Error(`Cannot find parent list '${parentList}'`); + } + + // Remove duplicates from the list of repositories. + const newRepositoriesList = [ + ...new Set([...parent.repositories, ...repoNwoList]), + ]; + + parent.repositories = newRepositoriesList; + + await this.writeConfig(config); + } + + public async addRemoteRepo( + repoNwo: string, + parentList?: string, + ): Promise { + if (!this.config) { + throw Error("Cannot add variant analysis repo if config is not loaded"); + } + + if (repoNwo === "") { + throw Error("Repository name cannot be empty"); + } + + if (this.doesRemoteDbExist(repoNwo, parentList)) { + throw Error( + `A variant analysis repository with the name '${repoNwo}' already exists`, + ); + } + + const config = cloneDbConfig(this.config); + if (parentList) { + const parent = config.databases.variantAnalysis.repositoryLists.find( + (list) => list.name === parentList, + ); + if (!parent) { + throw Error(`Cannot find parent list '${parentList}'`); + } else { + parent.repositories = [...parent.repositories, repoNwo]; + } + } else { + config.databases.variantAnalysis.repositories.push(repoNwo); + } + await this.writeConfig(config); + } + + public async addRemoteOwner(owner: string): Promise { + if (!this.config) { + throw Error("Cannot add owner if config is not loaded"); + } + + if (owner === "") { + throw Error("Owner name cannot be empty"); + } + + if (this.doesRemoteOwnerExist(owner)) { + throw Error(`An owner with the name '${owner}' already exists`); + } + + const config = cloneDbConfig(this.config); + config.databases.variantAnalysis.owners.push(owner); + + await this.writeConfig(config); + } + + public async addRemoteList(listName: string): Promise { + if (!this.config) { + throw Error("Cannot add variant analysis list if config is not loaded"); + } + + this.validateRemoteListName(listName); + + const config = cloneDbConfig(this.config); + config.databases.variantAnalysis.repositoryLists.push({ + name: listName, + repositories: [], + }); + + await this.writeConfig(config); + } + + public async renameRemoteList( + currentDbItem: RemoteUserDefinedListDbItem, + newName: string, + ) { + if (!this.config) { + throw Error( + "Cannot rename variant analysis list if config is not loaded", + ); + } + + this.validateRemoteListName(newName); + + const updatedConfig = renameRemoteList( + this.config, + currentDbItem.listName, + newName, + ); + + await this.writeConfig(updatedConfig); + } + + public doesRemoteListExist(listName: string): boolean { + if (!this.config) { + throw Error( + "Cannot check variant analysis list existence if config is not loaded", + ); + } + + return this.config.databases.variantAnalysis.repositoryLists.some( + (l) => l.name === listName, + ); + } + + public doesRemoteDbExist(dbName: string, listName?: string): boolean { + if (!this.config) { + throw Error( + "Cannot check variant analysis repository existence if config is not loaded", + ); + } + + if (listName) { + return this.config.databases.variantAnalysis.repositoryLists.some( + (l) => l.name === listName && l.repositories.includes(dbName), + ); + } + + return this.config.databases.variantAnalysis.repositories.includes(dbName); + } + + public doesRemoteOwnerExist(owner: string): boolean { + if (!this.config) { + throw Error("Cannot check owner existence if config is not loaded"); + } + + return this.config.databases.variantAnalysis.owners.includes(owner); + } + + private async writeConfig(config: DbConfig): Promise { + await outputJSON(this.configPath, config, { + spaces: 2, + }); + } + + private async loadConfig(): Promise { + if (!(await pathExists(this.configPath))) { + void this.app.logger.log( + `Creating new database config file at ${this.configPath}`, + ); + await this.writeConfig(this.createEmptyConfig()); + } + + await this.readConfig(); + void this.app.logger.log(`Database config loaded from ${this.configPath}`); + } + + private async readConfig(): Promise { + let newConfig: DbConfig | undefined = undefined; + try { + newConfig = await readJSON(this.configPath); + } catch { + this.configErrors = [ + { + kind: DbConfigValidationErrorKind.InvalidJson, + message: `Failed to read config file: ${this.configPath}`, + }, + ]; + } + + if (newConfig) { + this.configErrors = this.configValidator.validate(newConfig); + } + + if (this.configErrors.length === 0) { + this.config = newConfig; + await this.app.commands.execute( + "setContext", + "codeQLVariantAnalysisRepositories.configError", + false, + ); + } else { + this.config = undefined; + await this.app.commands.execute( + "setContext", + "codeQLVariantAnalysisRepositories.configError", + true, + ); + } + } + + private readConfigSync(): void { + let newConfig: DbConfig | undefined = undefined; + try { + newConfig = readJSONSync(this.configPath); + } catch { + this.configErrors = [ + { + kind: DbConfigValidationErrorKind.InvalidJson, + message: `Failed to read config file: ${this.configPath}`, + }, + ]; + } + + if (newConfig) { + this.configErrors = this.configValidator.validate(newConfig); + } + + if (this.configErrors.length === 0) { + this.config = newConfig; + void this.app.commands.execute( + "setContext", + "codeQLVariantAnalysisRepositories.configError", + false, + ); + } else { + this.config = undefined; + void this.app.commands.execute( + "setContext", + "codeQLVariantAnalysisRepositories.configError", + true, + ); + } + this.onDidChangeConfigEventEmitter.fire(); + } + + private watchConfig(): void { + this.configWatcher = watch(this.configPath, { + // In some cases, change events are emitted while the file is still + // being written. The awaitWriteFinish option tells the watcher to + // poll the file size, holding its add and change events until the size + // does not change for a configurable amount of time. We set that time + // to 1 second, but it may need to be adjusted if there are issues. + awaitWriteFinish: { + stabilityThreshold: 1000, + }, + }).on("change", () => { + this.readConfigSync(); + }); + } + + private createEmptyConfig(): DbConfig { + return { + version: DB_CONFIG_VERSION, + databases: { + variantAnalysis: { + repositoryLists: [], + owners: [], + repositories: [], + }, + }, + selected: { + kind: SelectedDbItemKind.VariantAnalysisSystemDefinedList, + listName: "top_10", + }, + }; + } + + private validateRemoteListName(listName: string): void { + if (listName === "") { + throw Error("List name cannot be empty"); + } + + if (this.doesRemoteListExist(listName)) { + throw Error( + `A variant analysis list with the name '${listName}' already exists`, + ); + } + } +} diff --git a/extensions/ql-vscode/src/databases/config/db-config-validator.ts b/extensions/ql-vscode/src/databases/config/db-config-validator.ts new file mode 100644 index 00000000000..b8cb6c58afb --- /dev/null +++ b/extensions/ql-vscode/src/databases/config/db-config-validator.ts @@ -0,0 +1,112 @@ +import { readJsonSync } from "fs-extra"; +import { resolve } from "path"; +import type { ValidateFunction } from "ajv"; +import Ajv from "ajv"; +import type { DbConfig } from "./db-config"; +import { findDuplicateStrings } from "../../common/text-utils"; +import type { DbConfigValidationError } from "../db-validation-errors"; +import { DbConfigValidationErrorKind } from "../db-validation-errors"; + +export class DbConfigValidator { + private readonly validateSchemaFn: ValidateFunction; + + constructor(extensionPath: string) { + const schemaPath = resolve(extensionPath, "databases-schema.json"); + const schema = readJsonSync(schemaPath); + const schemaValidator = new Ajv({ allErrors: true }); + this.validateSchemaFn = schemaValidator.compile(schema); + } + + public validate(dbConfig: DbConfig): DbConfigValidationError[] { + this.validateSchemaFn(dbConfig); + + if (this.validateSchemaFn.errors) { + return this.validateSchemaFn.errors.map((error) => ({ + kind: DbConfigValidationErrorKind.InvalidConfig, + message: `${error.instancePath} ${error.message}`, + })); + } + + return [ + ...this.validateDbListNames(dbConfig), + ...this.validateDbNames(dbConfig), + ...this.validateDbNamesInLists(dbConfig), + ...this.validateOwners(dbConfig), + ]; + } + + private validateDbListNames(dbConfig: DbConfig): DbConfigValidationError[] { + const errors: DbConfigValidationError[] = []; + + const buildError = (dups: string[]) => ({ + kind: DbConfigValidationErrorKind.DuplicateNames, + message: `There are database lists with the same name: ${dups.join( + ", ", + )}`, + }); + + const duplicateRemoteDbLists = findDuplicateStrings( + dbConfig.databases.variantAnalysis.repositoryLists.map((n) => n.name), + ); + if (duplicateRemoteDbLists.length > 0) { + errors.push(buildError(duplicateRemoteDbLists)); + } + + return errors; + } + + private validateDbNames(dbConfig: DbConfig): DbConfigValidationError[] { + const errors: DbConfigValidationError[] = []; + + const buildError = (dups: string[]) => ({ + kind: DbConfigValidationErrorKind.DuplicateNames, + message: `There are databases with the same name: ${dups.join(", ")}`, + }); + + const duplicateRemoteDbs = findDuplicateStrings( + dbConfig.databases.variantAnalysis.repositories, + ); + if (duplicateRemoteDbs.length > 0) { + errors.push(buildError(duplicateRemoteDbs)); + } + + return errors; + } + + private validateDbNamesInLists( + dbConfig: DbConfig, + ): DbConfigValidationError[] { + const errors: DbConfigValidationError[] = []; + + const buildError = (listName: string, dups: string[]) => ({ + kind: DbConfigValidationErrorKind.DuplicateNames, + message: `There are databases with the same name in the ${listName} list: ${dups.join( + ", ", + )}`, + }); + + for (const list of dbConfig.databases.variantAnalysis.repositoryLists) { + const dups = findDuplicateStrings(list.repositories); + if (dups.length > 0) { + errors.push(buildError(list.name, dups)); + } + } + + return errors; + } + + private validateOwners(dbConfig: DbConfig): DbConfigValidationError[] { + const errors: DbConfigValidationError[] = []; + + const dups = findDuplicateStrings( + dbConfig.databases.variantAnalysis.owners, + ); + if (dups.length > 0) { + errors.push({ + kind: DbConfigValidationErrorKind.DuplicateNames, + message: `There are owners with the same name: ${dups.join(", ")}`, + }); + } + return errors; + } +} diff --git a/extensions/ql-vscode/src/databases/config/db-config.ts b/extensions/ql-vscode/src/databases/config/db-config.ts new file mode 100644 index 00000000000..3b53b05e3e2 --- /dev/null +++ b/extensions/ql-vscode/src/databases/config/db-config.ts @@ -0,0 +1,220 @@ +// Contains models and consts for the data we want to store in the database config. +// Changes to these models should be done carefully and account for backwards compatibility of data. + +export const DB_CONFIG_VERSION = 1; + +export interface DbConfig { + version: number; + databases: DbConfigDatabases; + selected?: SelectedDbItem; +} + +interface DbConfigDatabases { + variantAnalysis: RemoteDbConfig; +} + +export type SelectedDbItem = + | SelectedRemoteSystemDefinedList + | SelectedVariantAnalysisUserDefinedList + | SelectedRemoteOwner + | SelectedRemoteRepository; + +export enum SelectedDbItemKind { + VariantAnalysisSystemDefinedList = "variantAnalysisSystemDefinedList", + VariantAnalysisUserDefinedList = "variantAnalysisUserDefinedList", + VariantAnalysisOwner = "variantAnalysisOwner", + VariantAnalysisRepository = "variantAnalysisRepository", +} + +interface SelectedRemoteSystemDefinedList { + kind: SelectedDbItemKind.VariantAnalysisSystemDefinedList; + listName: string; +} + +interface SelectedVariantAnalysisUserDefinedList { + kind: SelectedDbItemKind.VariantAnalysisUserDefinedList; + listName: string; +} + +interface SelectedRemoteOwner { + kind: SelectedDbItemKind.VariantAnalysisOwner; + ownerName: string; +} + +interface SelectedRemoteRepository { + kind: SelectedDbItemKind.VariantAnalysisRepository; + repositoryName: string; + listName?: string; +} + +interface RemoteDbConfig { + repositoryLists: RemoteRepositoryList[]; + owners: string[]; + repositories: string[]; +} + +export interface RemoteRepositoryList { + name: string; + repositories: string[]; +} + +export function cloneDbConfig(config: DbConfig): DbConfig { + return { + version: config.version, + databases: { + variantAnalysis: { + repositoryLists: config.databases.variantAnalysis.repositoryLists.map( + (list) => ({ + name: list.name, + repositories: [...list.repositories], + }), + ), + owners: [...config.databases.variantAnalysis.owners], + repositories: [...config.databases.variantAnalysis.repositories], + }, + }, + selected: config.selected + ? cloneDbConfigSelectedItem(config.selected) + : undefined, + }; +} + +export function renameRemoteList( + originalConfig: DbConfig, + currentListName: string, + newListName: string, +): DbConfig { + const config = cloneDbConfig(originalConfig); + + const list = getRemoteList(config, currentListName); + list.name = newListName; + + if ( + config.selected?.kind === + SelectedDbItemKind.VariantAnalysisUserDefinedList || + config.selected?.kind === SelectedDbItemKind.VariantAnalysisRepository + ) { + if (config.selected.listName === currentListName) { + config.selected.listName = newListName; + } + } + + return config; +} + +export function removeRemoteList( + originalConfig: DbConfig, + listName: string, +): DbConfig { + const config = cloneDbConfig(originalConfig); + + config.databases.variantAnalysis.repositoryLists = + config.databases.variantAnalysis.repositoryLists.filter( + (list) => list.name !== listName, + ); + + if ( + config.selected?.kind === SelectedDbItemKind.VariantAnalysisUserDefinedList + ) { + config.selected = undefined; + } + + if ( + config.selected?.kind === SelectedDbItemKind.VariantAnalysisRepository && + config.selected?.listName === listName + ) { + config.selected = undefined; + } + + return config; +} + +export function removeRemoteRepo( + originalConfig: DbConfig, + repoFullName: string, + parentListName?: string, +): DbConfig { + const config = cloneDbConfig(originalConfig); + + if (parentListName) { + const parentList = getRemoteList(config, parentListName); + parentList.repositories = parentList.repositories.filter( + (r) => r !== repoFullName, + ); + } else { + config.databases.variantAnalysis.repositories = + config.databases.variantAnalysis.repositories.filter( + (r) => r !== repoFullName, + ); + } + + if ( + config.selected?.kind === SelectedDbItemKind.VariantAnalysisRepository && + config.selected?.repositoryName === repoFullName && + config.selected?.listName === parentListName + ) { + config.selected = undefined; + } + + return config; +} + +export function removeRemoteOwner( + originalConfig: DbConfig, + ownerName: string, +): DbConfig { + const config = cloneDbConfig(originalConfig); + + config.databases.variantAnalysis.owners = + config.databases.variantAnalysis.owners.filter((o) => o !== ownerName); + + if ( + config.selected?.kind === SelectedDbItemKind.VariantAnalysisOwner && + config.selected?.ownerName === ownerName + ) { + config.selected = undefined; + } + + return config; +} + +function cloneDbConfigSelectedItem(selected: SelectedDbItem): SelectedDbItem { + switch (selected.kind) { + case SelectedDbItemKind.VariantAnalysisSystemDefinedList: + return { + kind: SelectedDbItemKind.VariantAnalysisSystemDefinedList, + listName: selected.listName, + }; + case SelectedDbItemKind.VariantAnalysisUserDefinedList: + return { + kind: SelectedDbItemKind.VariantAnalysisUserDefinedList, + listName: selected.listName, + }; + case SelectedDbItemKind.VariantAnalysisOwner: + return { + kind: SelectedDbItemKind.VariantAnalysisOwner, + ownerName: selected.ownerName, + }; + case SelectedDbItemKind.VariantAnalysisRepository: + return { + kind: SelectedDbItemKind.VariantAnalysisRepository, + repositoryName: selected.repositoryName, + listName: selected.listName, + }; + } +} + +function getRemoteList( + config: DbConfig, + listName: string, +): RemoteRepositoryList { + const list = config.databases.variantAnalysis.repositoryLists.find( + (l) => l.name === listName, + ); + + if (!list) { + throw Error(`Cannot find variant analysis list '${listName}'`); + } + + return list; +} diff --git a/extensions/ql-vscode/src/databases/database-fetcher.ts b/extensions/ql-vscode/src/databases/database-fetcher.ts new file mode 100644 index 00000000000..6f7f1356648 --- /dev/null +++ b/extensions/ql-vscode/src/databases/database-fetcher.ts @@ -0,0 +1,632 @@ +import type { InputBoxOptions } from "vscode"; +import { Uri, window } from "vscode"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { + ensureDir, + realpath as fs_realpath, + createWriteStream, + remove, + readdir, + copy, +} from "fs-extra"; +import { basename, join } from "path"; +import type { Octokit } from "@octokit/rest"; +import { nanoid } from "nanoid"; + +import type { DatabaseManager, DatabaseItem } from "./local-databases"; +import { tmpDir } from "../tmp-dir"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { reportStreamProgress } from "../common/vscode/progress"; +import { extLogger } from "../common/logging/vscode"; +import { getErrorMessage } from "../common/helpers-pure"; +import { + getNwoFromGitHubUrl, + isValidGitHubNwo, +} from "../common/github-url-identifier-helper"; +import { + addDatabaseSourceToWorkspace, + allowHttp, + downloadTimeout, + getGitHubInstanceUrl, +} from "../config"; +import { showAndLogInformationMessage } from "../common/logging"; +import type { DatabaseOrigin } from "./local-databases/database-origin"; +import { createTimeoutSignal } from "../common/fetch-stream"; +import type { App } from "../common/app"; +import { createFilenameFromString } from "../common/filenames"; +import { findDirWithFile } from "../common/files"; +import { convertGithubNwoToDatabaseUrl } from "./github-databases/api"; +import { ensureZippedSourceLocation } from "./local-databases/database-contents"; + +// The number of tries to use when generating a unique filename before +// giving up and using a nanoid. +const DUPLICATE_FILENAMES_TRIES = 10_000; + +export class DatabaseFetcher { + /** + * @param app the App + * @param databaseManager the DatabaseManager + * @param storagePath where to store the unzipped database. + * @param cli the CodeQL CLI server + **/ + constructor( + private readonly app: App, + private readonly databaseManager: DatabaseManager, + private readonly storagePath: string, + private readonly cli: CodeQLCliServer, + ) {} + + /** + * Prompts a user to fetch a database from a remote location. Database is assumed to be an archive file. + */ + public async promptImportInternetDatabase( + progress: ProgressCallback, + ): Promise { + const databaseUrl = await window.showInputBox({ + prompt: "Enter URL of zipfile of database to download", + }); + if (!databaseUrl) { + return; + } + + this.validateUrl(databaseUrl); + + const item = await this.fetchDatabaseToWorkspaceStorage( + databaseUrl, + {}, + undefined, + { + type: "url", + url: databaseUrl, + }, + progress, + ); + + if (item) { + await this.app.commands.execute("codeQLDatabases.focus"); + void showAndLogInformationMessage( + extLogger, + "Database downloaded and imported successfully.", + ); + } + return item; + } + + /** + * Prompts a user to fetch a database from GitHub. + * User enters a GitHub repository and then the user is asked which language + * to download (if there is more than one) + * + * @param progress the progress callback + * @param language the language to download. If undefined, the user will be prompted to choose a language. + * @param suggestedRepoNwo the suggested value to use when prompting for a github repo + * @param makeSelected make the new database selected in the databases panel (default: true) + * @param addSourceArchiveFolder whether to add a workspace folder containing the source archive to the workspace + */ + public async promptImportGithubDatabase( + progress: ProgressCallback, + language?: string, + suggestedRepoNwo?: string, + makeSelected = true, + addSourceArchiveFolder = addDatabaseSourceToWorkspace(), + ): Promise { + const githubRepo = await this.askForGitHubRepo(progress, suggestedRepoNwo); + if (!githubRepo) { + return; + } + + const databaseItem = await this.downloadGitHubDatabase( + githubRepo, + progress, + language, + makeSelected, + addSourceArchiveFolder, + ); + + if (databaseItem) { + if (makeSelected) { + await this.app.commands.execute("codeQLDatabases.focus"); + } + void showAndLogInformationMessage( + extLogger, + "Database downloaded and imported successfully.", + ); + return databaseItem; + } + + return; + } + + private async askForGitHubRepo( + progress?: ProgressCallback, + suggestedValue?: string, + ): Promise { + progress?.({ + message: "Choose repository", + step: 1, + maxStep: 2, + }); + + const instanceUrl = getGitHubInstanceUrl(); + + const options: InputBoxOptions = { + title: `Enter a GitHub repository URL or "name with owner" (e.g. ${new URL("/github/codeql", instanceUrl).toString()} or github/codeql)`, + placeHolder: `${new URL("/", instanceUrl).toString()}/ or /`, + ignoreFocusOut: true, + }; + + if (suggestedValue) { + options.value = suggestedValue; + } + + return await window.showInputBox(options); + } + + /** + * Downloads a database from GitHub + * + * @param githubRepo the GitHub repository to download the database from + * @param progress the progress callback + * @param language the language to download. If undefined, the user will be prompted to choose a language. + * @param makeSelected make the new database selected in the databases panel (default: true) + * @param addSourceArchiveFolder whether to add a workspace folder containing the source archive to the workspace + **/ + private async downloadGitHubDatabase( + githubRepo: string, + progress: ProgressCallback, + language?: string, + makeSelected = true, + addSourceArchiveFolder = addDatabaseSourceToWorkspace(), + ): Promise { + const nwo = + getNwoFromGitHubUrl(githubRepo, getGitHubInstanceUrl()) || githubRepo; + if (!isValidGitHubNwo(nwo)) { + throw new Error(`Invalid GitHub repository: ${githubRepo}`); + } + + const octokit = await this.app.credentials.getOctokit(); + + const result = await convertGithubNwoToDatabaseUrl( + nwo, + octokit, + progress, + language, + ); + if (!result) { + return; + } + + const { + databaseUrl, + name, + owner, + databaseId, + databaseCreatedAt, + commitOid, + } = result; + + return this.downloadGitHubDatabaseFromUrl( + databaseUrl, + databaseId, + databaseCreatedAt, + commitOid, + owner, + name, + octokit, + progress, + makeSelected, + addSourceArchiveFolder, + ); + } + + public async downloadGitHubDatabaseFromUrl( + databaseUrl: string, + databaseId: number, + databaseCreatedAt: string, + commitOid: string | null, + owner: string, + name: string, + octokit: Octokit, + progress: ProgressCallback, + makeSelected = true, + addSourceArchiveFolder = true, + ): Promise { + /** + * The 'token' property of the token object returned by `octokit.auth()`. + * The object is undocumented, but looks something like this: + * { + * token: 'xxxx', + * tokenType: 'oauth', + * type: 'token', + * } + * We only need the actual token string. + */ + const octokitToken = ((await octokit.auth()) as { token: string })?.token; + return await this.fetchDatabaseToWorkspaceStorage( + databaseUrl, + { + Accept: "application/zip", + Authorization: octokitToken ? `Bearer ${octokitToken}` : "", + }, + `${owner}/${name}`, + { + type: "github", + repository: `${owner}/${name}`, + databaseId, + databaseCreatedAt, + commitOid, + }, + progress, + makeSelected, + addSourceArchiveFolder, + ); + } + + /** + * Imports a database from a local archive or a test database that is in a folder + * ending with `.testproj`. + * + * @param databaseUrl the file url of the archive or directory to import + * @param progress the progress callback + */ + public async importLocalDatabase( + databaseUrl: string, + progress: ProgressCallback, + ): Promise { + try { + const origin: DatabaseOrigin = { + type: databaseUrl.endsWith(".testproj") ? "testproj" : "archive", + path: Uri.parse(databaseUrl).fsPath, + }; + const item = await this.fetchDatabaseToWorkspaceStorage( + databaseUrl, + {}, + undefined, + origin, + progress, + ); + if (item) { + await this.app.commands.execute("codeQLDatabases.focus"); + void showAndLogInformationMessage( + extLogger, + origin.type === "testproj" + ? "Test database imported successfully." + : "Database unzipped and imported successfully.", + ); + } + return item; + } catch (e) { + if (getErrorMessage(e).includes("unexpected end of file")) { + throw new Error( + "Database is corrupt or too large. Try unzipping outside of VS Code and importing the unzipped folder instead.", + ); + } else { + // delegate + throw e; + } + } + } + + /** + * Fetches a database into workspace storage. The database might be on the internet + * or in the local filesystem. + * + * @param databaseUrl URL from which to grab the database. This could be a local archive file, a local directory, or a remote URL. + * @param requestHeaders Headers to send with the request + * @param nameOverride a name for the database that overrides the default + * @param origin the origin of the database + * @param progress callback to send progress messages to + * @param makeSelected make the new database selected in the databases panel (default: true) + * @param addSourceArchiveFolder whether to add a workspace folder containing the source archive to the workspace + */ + private async fetchDatabaseToWorkspaceStorage( + databaseUrl: string, + requestHeaders: { [key: string]: string }, + nameOverride: string | undefined, + origin: DatabaseOrigin, + progress: ProgressCallback, + makeSelected = true, + addSourceArchiveFolder = addDatabaseSourceToWorkspace(), + ): Promise { + progress({ + message: "Getting database", + step: 1, + maxStep: 4, + }); + if (!this.storagePath) { + throw new Error("No storage path specified."); + } + await ensureDir(this.storagePath); + const unzipPath = await this.getStorageFolder(databaseUrl, nameOverride); + + if (Uri.parse(databaseUrl).scheme === "file") { + if (origin.type === "testproj") { + await this.copyDatabase(databaseUrl, unzipPath, progress); + } else { + await this.readAndUnzip(databaseUrl, unzipPath, progress); + } + } else { + await this.fetchAndUnzip( + databaseUrl, + requestHeaders, + unzipPath, + progress, + ); + } + + progress({ + message: "Opening database", + step: 3, + maxStep: 4, + }); + + // find the path to the database. The actual database might be in a sub-folder + const dbPath = await findDirWithFile( + unzipPath, + ".dbinfo", + "codeql-database.yml", + ); + if (dbPath) { + progress({ + message: "Validating and fixing source location", + step: 4, + maxStep: 4, + }); + await ensureZippedSourceLocation(dbPath); + + const item = await this.databaseManager.openDatabase( + Uri.file(dbPath), + origin, + makeSelected, + nameOverride, + { + addSourceArchiveFolder, + extensionManagedLocation: unzipPath, + }, + ); + return item; + } else { + throw new Error("Database not found in archive."); + } + } + + private async getStorageFolder(urlStr: string, nameOverrride?: string) { + let lastName: string; + + if (nameOverrride) { + lastName = createFilenameFromString(nameOverrride); + } else { + // we need to generate a folder name for the unzipped archive, + // this needs to be human readable since we may use this name as the initial + // name for the database + const url = Uri.parse(urlStr); + // MacOS has a max filename length of 255 + // and remove a few extra chars in case we need to add a counter at the end. + lastName = basename(url.path).substring(0, 250); + if (lastName.endsWith(".zip")) { + lastName = lastName.substring(0, lastName.length - 4); + } else if (lastName.endsWith(".testproj")) { + lastName = lastName.substring(0, lastName.length - 9); + } + } + + const realpath = await fs_realpath(this.storagePath); + let folderName = lastName; + + // get all existing files instead of calling pathExists on every + // single combination of realpath and folderName + const existingFiles = await readdir(realpath); + + // avoid overwriting existing folders + let counter = 0; + while (existingFiles.includes(basename(folderName))) { + counter++; + + if (counter <= DUPLICATE_FILENAMES_TRIES) { + // First try to use a counter to make the name unique. + folderName = `${lastName}-${counter}`; + } else if (counter <= DUPLICATE_FILENAMES_TRIES + 5) { + // If there are more than 10,000 similarly named databases, + // give up on using a counter and use a random string instead. + folderName = `${lastName}-${nanoid()}`; + } else { + // This should almost never happen, but just in case, we don't want to + // get stuck in an infinite loop. + throw new Error( + "Could not find a unique name for downloaded database. Please remove some databases and try again.", + ); + } + } + return join(realpath, folderName); + } + + private validateUrl(databaseUrl: string) { + let uri; + try { + uri = Uri.parse(databaseUrl, true); + } catch { + throw new Error(`Invalid url: ${databaseUrl}`); + } + + if (!allowHttp() && uri.scheme !== "https") { + throw new Error("Must use https for downloading a database."); + } + } + + /** + * Copies a database folder from the file system into the workspace storage. + * @param scrDirURL the original location of the database as a URL string + * @param destDir the location to copy the database to. This should be a folder in the workspace storage. + * @param progress callback to send progress messages to + */ + private async copyDatabase( + srcDirURL: string, + destDir: string, + progress?: ProgressCallback, + ) { + progress?.({ + maxStep: 10, + step: 9, + message: `Copying database ${basename(destDir)} into the workspace`, + }); + await ensureDir(destDir); + await copy(Uri.parse(srcDirURL).fsPath, destDir); + } + + private async readAndUnzip( + zipUrl: string, + unzipPath: string, + progress?: ProgressCallback, + ) { + const zipFile = Uri.parse(zipUrl).fsPath; + progress?.({ + maxStep: 10, + step: 9, + message: `Unzipping into ${basename(unzipPath)}`, + }); + + await this.cli.databaseUnbundle(zipFile, unzipPath); + } + + private async fetchAndUnzip( + databaseUrl: string, + requestHeaders: { [key: string]: string }, + unzipPath: string, + progress?: ProgressCallback, + ) { + // Although it is possible to download and stream directly to an unzipped directory, + // we need to avoid this for two reasons. The central directory is located at the + // end of the zip file. It is the source of truth of the content locations. Individual + // file headers may be incorrect. Additionally, saving to file first will reduce memory + // pressure compared with unzipping while downloading the archive. + + const archivePath = join(tmpDir.name, `archive-${Date.now()}.zip`); + + progress?.({ + maxStep: 3, + message: "Downloading database", + step: 1, + }); + + const { + signal, + onData, + dispose: disposeTimeout, + } = createTimeoutSignal(downloadTimeout()); + + let response: Response; + try { + response = await this.checkForFailingResponse( + await fetch(databaseUrl, { + headers: requestHeaders, + signal, + }), + "Error downloading database", + ); + } catch (e) { + disposeTimeout(); + + if (e instanceof DOMException && e.name === "AbortError") { + const thrownError = new Error("The request timed out."); + thrownError.stack = e.stack; + throw thrownError; + } + + throw e; + } + + const body = response.body; + if (!body) { + throw new Error("No response body found"); + } + + const archiveFileStream = createWriteStream(archivePath); + + const contentLength = response.headers.get("content-length"); + const totalNumBytes = contentLength + ? parseInt(contentLength, 10) + : undefined; + + const reportProgress = reportStreamProgress( + "Downloading database", + totalNumBytes, + progress, + ); + + try { + const reader = body.getReader(); + for (;;) { + const { done, value } = await reader.read(); + if (done) { + break; + } + + onData(); + reportProgress(value?.length ?? 0); + + await new Promise((resolve, reject) => { + archiveFileStream.write(value, (err) => { + if (err) { + reject(err); + } + resolve(undefined); + }); + }); + } + + await new Promise((resolve, reject) => { + archiveFileStream.close((err) => { + if (err) { + reject(err); + } + resolve(undefined); + }); + }); + } catch (e) { + // Close and remove the file if an error occurs + archiveFileStream.close(() => { + void remove(archivePath); + }); + + if (e instanceof DOMException && e.name === "AbortError") { + const thrownError = new Error("The download timed out."); + thrownError.stack = e.stack; + throw thrownError; + } + + throw e; + } finally { + disposeTimeout(); + } + + await this.readAndUnzip( + Uri.file(archivePath).toString(true), + unzipPath, + progress, + ); + + // remove archivePath eagerly since these archives can be large. + await remove(archivePath); + } + + private async checkForFailingResponse( + response: Response, + errorMessage: string, + ): Promise { + if (response.ok) { + return response; + } + + // An error downloading the database. Attempt to extract the reason behind it. + const text = await response.text(); + let msg: string; + try { + const obj = JSON.parse(text); + msg = + obj.error || obj.message || obj.reason || JSON.stringify(obj, null, 2); + } catch { + msg = text; + } + throw new Error(`${errorMessage}.\n\nReason: ${msg}`); + } +} diff --git a/extensions/ql-vscode/src/databases/db-item-expansion.ts b/extensions/ql-vscode/src/databases/db-item-expansion.ts new file mode 100644 index 00000000000..968d011d8a7 --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-item-expansion.ts @@ -0,0 +1,100 @@ +import type { DbItem } from "./db-item"; +import { DbItemKind, flattenDbItems } from "./db-item"; + +export type ExpandedDbItem = + | RootRemoteExpandedDbItem + | RemoteUserDefinedListExpandedDbItem; + +export enum ExpandedDbItemKind { + RootRemote = "rootRemote", + RemoteUserDefinedList = "remoteUserDefinedList", +} + +interface RootRemoteExpandedDbItem { + kind: ExpandedDbItemKind.RootRemote; +} + +export interface RemoteUserDefinedListExpandedDbItem { + kind: ExpandedDbItemKind.RemoteUserDefinedList; + listName: string; +} + +export function updateExpandedItem( + currentExpandedItems: ExpandedDbItem[], + dbItem: DbItem, + itemExpanded: boolean, +): ExpandedDbItem[] { + if (itemExpanded) { + const expandedDbItem = mapDbItemToExpandedDbItem(dbItem); + const expandedItems = [...currentExpandedItems]; + if (!expandedItems.some((i) => isDbItemEqualToExpandedDbItem(dbItem, i))) { + expandedItems.push(expandedDbItem); + } + return expandedItems; + } else { + return currentExpandedItems.filter( + (i) => !isDbItemEqualToExpandedDbItem(dbItem, i), + ); + } +} + +export function replaceExpandedItem( + currentExpandedItems: ExpandedDbItem[], + currentDbItem: DbItem, + newDbItem: DbItem, +): ExpandedDbItem[] { + const newExpandedItems: ExpandedDbItem[] = []; + + for (const item of currentExpandedItems) { + if (isDbItemEqualToExpandedDbItem(currentDbItem, item)) { + newExpandedItems.push(mapDbItemToExpandedDbItem(newDbItem)); + } else { + newExpandedItems.push(item); + } + } + + return newExpandedItems; +} + +export function cleanNonExistentExpandedItems( + currentExpandedItems: ExpandedDbItem[], + dbItems: DbItem[], +): ExpandedDbItem[] { + const flattenedDbItems = flattenDbItems(dbItems); + return currentExpandedItems.filter((i) => + flattenedDbItems.some((dbItem) => isDbItemEqualToExpandedDbItem(dbItem, i)), + ); +} + +function mapDbItemToExpandedDbItem(dbItem: DbItem): ExpandedDbItem { + switch (dbItem.kind) { + case DbItemKind.RootRemote: + return { kind: ExpandedDbItemKind.RootRemote }; + case DbItemKind.RemoteUserDefinedList: + return { + kind: ExpandedDbItemKind.RemoteUserDefinedList, + listName: dbItem.listName, + }; + default: + throw Error(`Unknown db item kind ${dbItem.kind}`); + } +} + +function isDbItemEqualToExpandedDbItem( + dbItem: DbItem, + expandedDbItem: ExpandedDbItem, +) { + switch (dbItem.kind) { + case DbItemKind.RootRemote: + return expandedDbItem.kind === ExpandedDbItemKind.RootRemote; + case DbItemKind.RemoteUserDefinedList: + return ( + expandedDbItem.kind === ExpandedDbItemKind.RemoteUserDefinedList && + expandedDbItem.listName === dbItem.listName + ); + case DbItemKind.RemoteSystemDefinedList: + case DbItemKind.RemoteOwner: + case DbItemKind.RemoteRepo: + return false; + } +} diff --git a/extensions/ql-vscode/src/databases/db-item-naming.ts b/extensions/ql-vscode/src/databases/db-item-naming.ts new file mode 100644 index 00000000000..ca003f61103 --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-item-naming.ts @@ -0,0 +1,16 @@ +import type { DbItem } from "./db-item"; +import { DbItemKind } from "./db-item"; + +export function getDbItemName(dbItem: DbItem): string | undefined { + switch (dbItem.kind) { + case DbItemKind.RootRemote: + return undefined; + case DbItemKind.RemoteUserDefinedList: + case DbItemKind.RemoteSystemDefinedList: + return dbItem.listName; + case DbItemKind.RemoteOwner: + return dbItem.ownerName; + case DbItemKind.RemoteRepo: + return dbItem.repoFullName; + } +} diff --git a/extensions/ql-vscode/src/databases/db-item-selection.ts b/extensions/ql-vscode/src/databases/db-item-selection.ts new file mode 100644 index 00000000000..bf3a7f0b95a --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-item-selection.ts @@ -0,0 +1,74 @@ +import type { DbItem, RemoteDbItem } from "./db-item"; +import { DbItemKind } from "./db-item"; +import type { SelectedDbItem } from "./config/db-config"; +import { SelectedDbItemKind } from "./config/db-config"; + +export function getSelectedDbItem(dbItems: DbItem[]): DbItem | undefined { + for (const dbItem of dbItems) { + if (dbItem.kind === DbItemKind.RootRemote) { + for (const child of dbItem.children) { + const selectedItem = extractSelected(child); + if (selectedItem) { + return selectedItem; + } + } + } else { + const selectedItem = extractSelected(dbItem); + if (selectedItem) { + return selectedItem; + } + } + } + return undefined; +} + +function extractSelected(dbItem: RemoteDbItem): DbItem | undefined { + if (dbItem.selected) { + return dbItem; + } + switch (dbItem.kind) { + case DbItemKind.RemoteUserDefinedList: + for (const repo of dbItem.repos) { + if (repo.selected) { + return repo; + } + } + break; + } + return undefined; +} + +export function mapDbItemToSelectedDbItem( + dbItem: DbItem, +): SelectedDbItem | undefined { + switch (dbItem.kind) { + case DbItemKind.RootRemote: + // Root items are not selectable. + return undefined; + + case DbItemKind.RemoteUserDefinedList: + return { + kind: SelectedDbItemKind.VariantAnalysisUserDefinedList, + listName: dbItem.listName, + }; + + case DbItemKind.RemoteSystemDefinedList: + return { + kind: SelectedDbItemKind.VariantAnalysisSystemDefinedList, + listName: dbItem.listName, + }; + + case DbItemKind.RemoteOwner: + return { + kind: SelectedDbItemKind.VariantAnalysisOwner, + ownerName: dbItem.ownerName, + }; + + case DbItemKind.RemoteRepo: + return { + kind: SelectedDbItemKind.VariantAnalysisRepository, + repositoryName: dbItem.repoFullName, + listName: dbItem?.parentListName, + }; + } +} diff --git a/extensions/ql-vscode/src/databases/db-item.ts b/extensions/ql-vscode/src/databases/db-item.ts new file mode 100644 index 00000000000..69e681cbc70 --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-item.ts @@ -0,0 +1,103 @@ +// This file contains models that are used to represent the databases. + +export enum DbItemKind { + RootRemote = "RootRemote", + RemoteSystemDefinedList = "RemoteSystemDefinedList", + RemoteUserDefinedList = "RemoteUserDefinedList", + RemoteOwner = "RemoteOwner", + RemoteRepo = "RemoteRepo", +} + +export interface RootRemoteDbItem { + kind: DbItemKind.RootRemote; + expanded: boolean; + children: RemoteDbItem[]; +} + +export type DbItem = RootRemoteDbItem | RemoteDbItem; + +export type RemoteDbItem = + | RemoteSystemDefinedListDbItem + | RemoteUserDefinedListDbItem + | RemoteOwnerDbItem + | RemoteRepoDbItem; + +export interface RemoteSystemDefinedListDbItem { + kind: DbItemKind.RemoteSystemDefinedList; + selected: boolean; + listName: string; + listDisplayName: string; + listDescription: string; +} + +export interface RemoteUserDefinedListDbItem { + kind: DbItemKind.RemoteUserDefinedList; + expanded: boolean; + selected: boolean; + listName: string; + repos: RemoteRepoDbItem[]; +} + +export interface RemoteOwnerDbItem { + kind: DbItemKind.RemoteOwner; + selected: boolean; + ownerName: string; +} + +export interface RemoteRepoDbItem { + kind: DbItemKind.RemoteRepo; + selected: boolean; + repoFullName: string; + parentListName?: string; +} + +export function isRemoteUserDefinedListDbItem( + dbItem: DbItem, +): dbItem is RemoteUserDefinedListDbItem { + return dbItem.kind === DbItemKind.RemoteUserDefinedList; +} + +export function isRemoteOwnerDbItem( + dbItem: DbItem, +): dbItem is RemoteOwnerDbItem { + return dbItem.kind === DbItemKind.RemoteOwner; +} + +export function isRemoteRepoDbItem(dbItem: DbItem): dbItem is RemoteRepoDbItem { + return dbItem.kind === DbItemKind.RemoteRepo; +} + +type SelectableDbItem = RemoteDbItem; + +export function isSelectableDbItem(dbItem: DbItem): dbItem is SelectableDbItem { + return SelectableDbItemKinds.includes(dbItem.kind); +} + +const SelectableDbItemKinds = [ + DbItemKind.RemoteSystemDefinedList, + DbItemKind.RemoteUserDefinedList, + DbItemKind.RemoteOwner, + DbItemKind.RemoteRepo, +]; + +export function flattenDbItems(dbItems: DbItem[]): DbItem[] { + const allItems: DbItem[] = []; + + for (const dbItem of dbItems) { + allItems.push(dbItem); + switch (dbItem.kind) { + case DbItemKind.RootRemote: + allItems.push(...flattenDbItems(dbItem.children)); + break; + case DbItemKind.RemoteUserDefinedList: + allItems.push(...dbItem.repos); + break; + case DbItemKind.RemoteSystemDefinedList: + case DbItemKind.RemoteOwner: + case DbItemKind.RemoteRepo: + break; + } + } + + return allItems; +} diff --git a/extensions/ql-vscode/src/databases/db-manager.ts b/extensions/ql-vscode/src/databases/db-manager.ts new file mode 100644 index 00000000000..7d9013d31e2 --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-manager.ts @@ -0,0 +1,204 @@ +import type { App } from "../common/app"; +import type { AppEvent, AppEventEmitter } from "../common/events"; +import { ValueResult } from "../common/value-result"; +import { DisposableObject } from "../common/disposable-object"; +import type { DbConfigStore } from "./config/db-config-store"; +import type { DbItem, RemoteUserDefinedListDbItem } from "./db-item"; +import type { ExpandedDbItem } from "./db-item-expansion"; +import { + updateExpandedItem, + replaceExpandedItem, + cleanNonExistentExpandedItems, +} from "./db-item-expansion"; +import { + getSelectedDbItem, + mapDbItemToSelectedDbItem, +} from "./db-item-selection"; +import { createRemoteTree } from "./db-tree-creator"; +import type { DbConfigValidationError } from "./db-validation-errors"; +import type { VariantAnalysisConfig } from "../config"; + +export class DbManager extends DisposableObject { + public readonly onDbItemsChanged: AppEvent; + public static readonly DB_EXPANDED_STATE_KEY = "db_expanded"; + private readonly onDbItemsChangesEventEmitter: AppEventEmitter; + + constructor( + private readonly app: App, + private readonly dbConfigStore: DbConfigStore, + private readonly variantAnalysisConfigListener: VariantAnalysisConfig, + ) { + super(); + + this.onDbItemsChangesEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onDbItemsChanged = this.onDbItemsChangesEventEmitter.event; + + this.dbConfigStore.onDidChangeConfig(() => { + this.onDbItemsChangesEventEmitter.fire(); + }); + + this.variantAnalysisConfigListener.onDidChangeConfiguration?.(() => { + this.onDbItemsChangesEventEmitter.fire(); + }); + } + + public getSelectedDbItem(): DbItem | undefined { + const dbItemsResult = this.getDbItems(); + + if (dbItemsResult.errors.length > 0) { + return undefined; + } + + return getSelectedDbItem(dbItemsResult.value); + } + + public getDbItems(): ValueResult { + const configResult = this.dbConfigStore.getConfig(); + if (configResult.isFailure) { + return ValueResult.fail(configResult.errors); + } + + const expandedItems = this.getExpandedItems(); + + const remoteTree = createRemoteTree( + configResult.value, + this.variantAnalysisConfigListener, + expandedItems, + ); + return ValueResult.ok(remoteTree.children); + } + + public getConfigPath(): string { + return this.dbConfigStore.getConfigPath(); + } + + public async setSelectedDbItem(dbItem: DbItem): Promise { + const selectedDbItem = mapDbItemToSelectedDbItem(dbItem); + if (selectedDbItem) { + await this.dbConfigStore.setSelectedDbItem(selectedDbItem); + } + } + + public async removeDbItem(dbItem: DbItem): Promise { + await this.dbConfigStore.removeDbItem(dbItem); + + await this.removeDbItemFromExpandedState(dbItem); + } + + public async removeDbItemFromExpandedState(dbItem: DbItem): Promise { + // When collapsing or expanding a list we clean up the expanded state and remove + // all items that don't exist anymore. + + await this.updateDbItemExpandedState(dbItem, false); + } + + public async addDbItemToExpandedState(dbItem: DbItem): Promise { + // When collapsing or expanding a list we clean up the expanded state and remove + // all items that don't exist anymore. + + await this.updateDbItemExpandedState(dbItem, true); + } + + public async addNewRemoteRepo( + nwo: string, + parentList?: string, + ): Promise { + await this.dbConfigStore.addRemoteRepo(nwo, parentList); + } + + public async addNewRemoteReposToList( + nwoList: string[], + parentList: string, + ): Promise { + await this.dbConfigStore.addRemoteReposToList(nwoList, parentList); + } + + public async addNewRemoteOwner(owner: string): Promise { + await this.dbConfigStore.addRemoteOwner(owner); + } + + public async addNewList(listName: string): Promise { + await this.dbConfigStore.addRemoteList(listName); + } + + public async renameList( + currentDbItem: RemoteUserDefinedListDbItem, + newName: string, + ): Promise { + await this.dbConfigStore.renameRemoteList(currentDbItem, newName); + + const newDbItem = { ...currentDbItem, listName: newName }; + const newExpandedItems = replaceExpandedItem( + this.getExpandedItems(), + currentDbItem, + newDbItem, + ); + + await this.setExpandedItems(newExpandedItems); + } + + public doesListExist(listName: string): boolean { + return this.dbConfigStore.doesRemoteListExist(listName); + } + + public doesRemoteOwnerExist(owner: string): boolean { + return this.dbConfigStore.doesRemoteOwnerExist(owner); + } + + public doesRemoteRepoExist(nwo: string, listName?: string): boolean { + return this.dbConfigStore.doesRemoteDbExist(nwo, listName); + } + + private getExpandedItems(): ExpandedDbItem[] { + const items = this.app.workspaceState.get( + DbManager.DB_EXPANDED_STATE_KEY, + ); + + return items || []; + } + + private async setExpandedItems(items: ExpandedDbItem[]): Promise { + await this.app.workspaceState.update( + DbManager.DB_EXPANDED_STATE_KEY, + items, + ); + } + + private async updateExpandedItems(items: ExpandedDbItem[]): Promise { + let itemsToStore; + + const dbItemsResult = this.getDbItems(); + + if (dbItemsResult.isFailure) { + // Log an error but don't throw an exception since if the db items are failing + // to be read, then there is a bigger problem than the expanded state. + void this.app.logger.log( + `Could not read db items when calculating expanded state: ${JSON.stringify( + dbItemsResult.errors, + )}`, + ); + itemsToStore = items; + } else { + itemsToStore = cleanNonExistentExpandedItems(items, dbItemsResult.value); + } + + await this.setExpandedItems(itemsToStore); + } + + private async updateDbItemExpandedState( + dbItem: DbItem, + itemExpanded: boolean, + ): Promise { + const currentExpandedItems = this.getExpandedItems(); + + const newExpandedItems = updateExpandedItem( + currentExpandedItems, + dbItem, + itemExpanded, + ); + + await this.updateExpandedItems(newExpandedItems); + } +} diff --git a/extensions/ql-vscode/src/databases/db-module.ts b/extensions/ql-vscode/src/databases/db-module.ts new file mode 100644 index 00000000000..54cb2b976ac --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-module.ts @@ -0,0 +1,62 @@ +import { window } from "vscode"; +import type { App } from "../common/app"; +import { extLogger } from "../common/logging/vscode"; +import { DisposableObject } from "../common/disposable-object"; +import { DbConfigStore } from "./config/db-config-store"; +import { DbManager } from "./db-manager"; +import { DbPanel } from "./ui/db-panel"; +import { DbSelectionDecorationProvider } from "./ui/db-selection-decoration-provider"; +import type { DatabasePanelCommands } from "../common/commands"; +import { VariantAnalysisConfigListener } from "../config"; + +export class DbModule extends DisposableObject { + public readonly dbManager: DbManager; + private readonly dbConfigStore: DbConfigStore; + private dbPanel: DbPanel | undefined; + + private constructor(app: App) { + super(); + + this.dbConfigStore = new DbConfigStore(app); + this.dbManager = this.push( + new DbManager( + app, + this.dbConfigStore, + new VariantAnalysisConfigListener(), + ), + ); + } + + public static async initialize(app: App): Promise { + const dbModule = new DbModule(app); + app.subscriptions.push(dbModule); + + await dbModule.initialize(app); + return dbModule; + } + + public getCommands(): DatabasePanelCommands { + if (!this.dbPanel) { + throw new Error("Database panel not initialized"); + } + + return { + ...this.dbPanel.getCommands(), + }; + } + + private async initialize(app: App): Promise { + void extLogger.log("Initializing database module"); + + await this.dbConfigStore.initialize(); + + this.dbPanel = new DbPanel(app, this.dbManager); + + this.push(this.dbPanel); + this.push(this.dbConfigStore); + + const dbSelectionDecorationProvider = new DbSelectionDecorationProvider(); + + window.registerFileDecorationProvider(dbSelectionDecorationProvider); + } +} diff --git a/extensions/ql-vscode/src/databases/db-tree-creator.ts b/extensions/ql-vscode/src/databases/db-tree-creator.ts new file mode 100644 index 00000000000..c77ebacf713 --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-tree-creator.ts @@ -0,0 +1,133 @@ +import type { VariantAnalysisConfig } from "../config"; +import type { DbConfig, RemoteRepositoryList } from "./config/db-config"; +import { SelectedDbItemKind } from "./config/db-config"; +import type { + RemoteOwnerDbItem, + RemoteRepoDbItem, + RemoteSystemDefinedListDbItem, + RemoteUserDefinedListDbItem, + RootRemoteDbItem, +} from "./db-item"; +import { DbItemKind } from "./db-item"; +import type { ExpandedDbItem } from "./db-item-expansion"; +import { ExpandedDbItemKind } from "./db-item-expansion"; + +export function createRemoteTree( + dbConfig: DbConfig, + variantAnalysisConfig: VariantAnalysisConfig, + expandedItems: ExpandedDbItem[], +): RootRemoteDbItem { + const systemDefinedLists = + variantAnalysisConfig.showSystemDefinedRepositoryLists + ? [ + createSystemDefinedList(10, dbConfig), + createSystemDefinedList(100, dbConfig), + createSystemDefinedList(1000, dbConfig), + ] + : []; + + const userDefinedRepoLists = + dbConfig.databases.variantAnalysis.repositoryLists.map((r) => + createVariantAnalysisUserDefinedList(r, dbConfig, expandedItems), + ); + const owners = dbConfig.databases.variantAnalysis.owners.map((o) => + createOwnerItem(o, dbConfig), + ); + const repos = dbConfig.databases.variantAnalysis.repositories.map((r) => + createRepoItem(r, dbConfig), + ); + + const expanded = expandedItems.some( + (e) => e.kind === ExpandedDbItemKind.RootRemote, + ); + + return { + kind: DbItemKind.RootRemote, + children: [ + ...systemDefinedLists, + ...owners, + ...userDefinedRepoLists, + ...repos, + ], + expanded: !!expanded, + }; +} + +function createSystemDefinedList( + n: number, + dbConfig: DbConfig, +): RemoteSystemDefinedListDbItem { + const listName = `top_${n}`; + + const selected = + dbConfig.selected && + dbConfig.selected.kind === + SelectedDbItemKind.VariantAnalysisSystemDefinedList && + dbConfig.selected.listName === listName; + + return { + kind: DbItemKind.RemoteSystemDefinedList, + listName, + listDisplayName: `Top ${n} repositories`, + listDescription: `Top ${n} repositories of a language`, + selected: !!selected, + }; +} + +function createVariantAnalysisUserDefinedList( + list: RemoteRepositoryList, + dbConfig: DbConfig, + expandedItems: ExpandedDbItem[], +): RemoteUserDefinedListDbItem { + const selected = + dbConfig.selected && + dbConfig.selected.kind === + SelectedDbItemKind.VariantAnalysisUserDefinedList && + dbConfig.selected.listName === list.name; + + const expanded = expandedItems.some( + (e) => + e.kind === ExpandedDbItemKind.RemoteUserDefinedList && + e.listName === list.name, + ); + + return { + kind: DbItemKind.RemoteUserDefinedList, + listName: list.name, + repos: list.repositories.map((r) => createRepoItem(r, dbConfig, list.name)), + selected: !!selected, + expanded: !!expanded, + }; +} + +function createOwnerItem(owner: string, dbConfig: DbConfig): RemoteOwnerDbItem { + const selected = + dbConfig.selected && + dbConfig.selected.kind === SelectedDbItemKind.VariantAnalysisOwner && + dbConfig.selected.ownerName === owner; + + return { + kind: DbItemKind.RemoteOwner, + ownerName: owner, + selected: !!selected, + }; +} + +function createRepoItem( + repo: string, + dbConfig: DbConfig, + listName?: string, +): RemoteRepoDbItem { + const selected = + dbConfig.selected && + dbConfig.selected.kind === SelectedDbItemKind.VariantAnalysisRepository && + dbConfig.selected.repositoryName === repo && + dbConfig.selected.listName === listName; + + return { + kind: DbItemKind.RemoteRepo, + repoFullName: repo, + selected: !!selected, + parentListName: listName, + }; +} diff --git a/extensions/ql-vscode/src/databases/db-validation-errors.ts b/extensions/ql-vscode/src/databases/db-validation-errors.ts new file mode 100644 index 00000000000..cc614694cbf --- /dev/null +++ b/extensions/ql-vscode/src/databases/db-validation-errors.ts @@ -0,0 +1,10 @@ +export enum DbConfigValidationErrorKind { + InvalidJson = "InvalidJson", + InvalidConfig = "InvalidConfig", + DuplicateNames = "DuplicateNames", +} + +export interface DbConfigValidationError { + kind: DbConfigValidationErrorKind; + message: string; +} diff --git a/extensions/ql-vscode/src/databases/github-databases/api.ts b/extensions/ql-vscode/src/databases/github-databases/api.ts new file mode 100644 index 00000000000..fe92498e832 --- /dev/null +++ b/extensions/ql-vscode/src/databases/github-databases/api.ts @@ -0,0 +1,208 @@ +import { RequestError } from "@octokit/request-error"; +import type { Octokit } from "@octokit/rest"; +import type { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods"; +import { showNeverAskAgainDialog } from "../../common/vscode/dialog"; +import type { GitHubDatabaseConfig } from "../../config"; +import { hasGhecDrUri } from "../../config"; +import type { Credentials } from "../../common/authentication"; +import { AppOctokit } from "../../common/octokit"; +import type { ProgressCallback } from "../../common/vscode/progress"; +import { getErrorMessage } from "../../common/helpers-pure"; +import { getLanguageDisplayName } from "../../common/query-language"; +import { window } from "vscode"; +import { extLogger } from "../../common/logging/vscode"; + +export type CodeqlDatabase = + RestEndpointMethodTypes["codeScanning"]["listCodeqlDatabases"]["response"]["data"][number]; + +/** + * Ask the user if they want to connect to GitHub to download CodeQL databases. + * This should be used when the user does not have an access token and should + * be followed by an access token prompt. + */ +async function askForGitHubConnect( + config: GitHubDatabaseConfig, +): Promise { + const answer = await showNeverAskAgainDialog( + "This repository has an origin (GitHub) that may have one or more CodeQL databases. Connect to GitHub and download any existing databases?", + false, + "Connect", + "Not now", + "Never", + ); + + if (answer === "Not now" || answer === undefined) { + return false; + } + + if (answer === "Never") { + await config.setDownload("never"); + return false; + } + + return true; +} + +export type ListDatabasesResult = { + /** + * Whether the user has been prompted for credentials. This can be used to determine + * follow-up actions based on whether the user has already had any feedback. + */ + promptedForCredentials: boolean; + databases: CodeqlDatabase[]; + octokit: Octokit; +}; + +/** + * List CodeQL databases for a GitHub repository. + * + * This will first try to fetch the CodeQL databases for the repository with + * existing credentials (or none if there are none). If that fails, it will + * prompt the user to connect to GitHub and try again. + * + * If the user does not want to connect to GitHub, this will return `undefined`. + */ +export async function listDatabases( + owner: string, + repo: string, + credentials: Credentials, + config: GitHubDatabaseConfig, +): Promise { + // On GHEC-DR, unauthenticated requests will never work, so we should always ask + // for authentication. + const hasAccessToken = + !!(await credentials.getExistingAccessToken()) || hasGhecDrUri(); + + let octokit = hasAccessToken + ? await credentials.getOctokit() + : new AppOctokit(); + + let promptedForCredentials = false; + + let databases: CodeqlDatabase[]; + try { + const response = await octokit.rest.codeScanning.listCodeqlDatabases({ + owner, + repo, + }); + databases = response.data; + } catch (e) { + // If we get a 404 when we don't have an access token, it might be because + // the repository is private/internal. Therefore, we should ask the user + // whether they want to connect to GitHub and try again. + if (e instanceof RequestError && e.status === 404 && !hasAccessToken) { + // Check whether the user wants to connect to GitHub + if (!(await askForGitHubConnect(config))) { + return; + } + + // Prompt for credentials + octokit = await credentials.getOctokit(); + + promptedForCredentials = true; + + const response = await octokit.rest.codeScanning.listCodeqlDatabases({ + owner, + repo, + }); + databases = response.data; + } else { + throw e; + } + } + + return { + promptedForCredentials, + databases, + octokit, + }; +} + +export async function convertGithubNwoToDatabaseUrl( + nwo: string, + octokit: Octokit, + progress: ProgressCallback, + language?: string, +): Promise< + | { + databaseUrl: string; + owner: string; + name: string; + databaseId: number; + databaseCreatedAt: string; + commitOid: string | null; + } + | undefined +> { + try { + const [owner, repo] = nwo.split("/"); + + const response = await octokit.rest.codeScanning.listCodeqlDatabases({ + owner, + repo, + }); + + const languages = response.data.map((db) => db.language); + + if (!language || !languages.includes(language)) { + language = await promptForLanguage(languages, progress); + if (!language) { + return; + } + } + + const databaseForLanguage = response.data.find( + (db) => db.language === language, + ); + if (!databaseForLanguage) { + throw new Error(`No database found for language '${language}'`); + } + + return { + databaseUrl: databaseForLanguage.url, + owner, + name: repo, + databaseId: databaseForLanguage.id, + databaseCreatedAt: databaseForLanguage.created_at, + commitOid: databaseForLanguage.commit_oid ?? null, + }; + } catch (e) { + void extLogger.log(`Error: ${getErrorMessage(e)}`); + throw new Error(`Unable to get database for '${nwo}'`); + } +} + +async function promptForLanguage( + languages: string[], + progress: ProgressCallback | undefined, +): Promise { + progress?.({ + message: "Choose language", + step: 2, + maxStep: 2, + }); + if (!languages.length) { + throw new Error("No databases found"); + } + if (languages.length === 1) { + return languages[0]; + } + + const items = languages + .map((language) => ({ + label: getLanguageDisplayName(language), + description: language, + language, + })) + .sort((a, b) => a.label.localeCompare(b.label)); + + const selectedItem = await window.showQuickPick(items, { + placeHolder: "Select the database language to download:", + ignoreFocusOut: true, + }); + if (!selectedItem) { + return undefined; + } + + return selectedItem.language; +} diff --git a/extensions/ql-vscode/src/databases/github-databases/download.ts b/extensions/ql-vscode/src/databases/github-databases/download.ts new file mode 100644 index 00000000000..e417a18505e --- /dev/null +++ b/extensions/ql-vscode/src/databases/github-databases/download.ts @@ -0,0 +1,164 @@ +import { window } from "vscode"; +import type { Octokit } from "@octokit/rest"; +import { showNeverAskAgainDialog } from "../../common/vscode/dialog"; +import { getLanguageDisplayName } from "../../common/query-language"; +import type { DatabaseFetcher } from "../database-fetcher"; +import { withProgress } from "../../common/vscode/progress"; +import type { AppCommandManager } from "../../common/commands"; +import type { GitHubDatabaseConfig } from "../../config"; +import type { CodeqlDatabase } from "./api"; + +/** + * Ask whether the user wants to download a database from GitHub. + * @return true if the user wants to download a database, false otherwise. + */ +export async function askForGitHubDatabaseDownload( + databases: CodeqlDatabase[], + config: GitHubDatabaseConfig, +): Promise { + const languages = databases.map((database) => database.language); + + const message = + databases.length === 1 + ? `This repository has an origin (GitHub) that has a ${getLanguageDisplayName( + languages[0], + )} CodeQL database. Download the existing database from GitHub?` + : `This repository has an origin (GitHub) that has ${joinLanguages( + languages, + )} CodeQL databases. Download any existing databases from GitHub?`; + + const answer = await showNeverAskAgainDialog( + message, + false, + "Download", + "Not now", + "Never", + ); + + if (answer === "Not now" || answer === undefined) { + return false; + } + + if (answer === "Never") { + await config.setDownload("never"); + return false; + } + + return true; +} + +/** + * Download a database from GitHub by asking the user for a language and then + * downloading the database for that language. + */ +export async function downloadDatabaseFromGitHub( + octokit: Octokit, + owner: string, + repo: string, + databases: CodeqlDatabase[], + databaseFetcher: DatabaseFetcher, + commandManager: AppCommandManager, +): Promise { + const selectedDatabases = await promptForDatabases(databases); + if (selectedDatabases.length === 0) { + return; + } + + await Promise.all( + selectedDatabases.map((database) => + withProgress( + async (progress) => { + await databaseFetcher.downloadGitHubDatabaseFromUrl( + database.url, + database.id, + database.created_at, + database.commit_oid ?? null, + owner, + repo, + octokit, + progress, + true, + false, + ); + + await commandManager.execute("codeQLDatabases.focus"); + void window.showInformationMessage( + `Downloaded ${getLanguageDisplayName( + database.language, + )} database from GitHub.`, + ); + }, + { + title: `Adding ${getLanguageDisplayName( + database.language, + )} database from GitHub`, + }, + ), + ), + ); +} + +/** + * Join languages into a string for display. Will automatically add `,` and `and` as appropriate. + * + * @param languages The languages to join. These should be language identifiers, such as `csharp`. + */ +export function joinLanguages(languages: string[]): string { + const languageDisplayNames = languages + .map((language) => getLanguageDisplayName(language)) + .sort(); + + let result = ""; + for (let i = 0; i < languageDisplayNames.length; i++) { + if (i > 0) { + if (i === languageDisplayNames.length - 1) { + result += " and "; + } else { + result += ", "; + } + } + result += languageDisplayNames[i]; + } + + return result; +} + +type PromptForDatabasesOptions = { + title?: string; + placeHolder?: string; +}; + +export async function promptForDatabases( + databases: CodeqlDatabase[], + { + title = "Select databases to download", + placeHolder = "Databases found in this repository", + }: PromptForDatabasesOptions = {}, +): Promise { + if (databases.length === 1) { + return databases; + } + + const items = databases + .map((database) => { + const bytesToDisplayMB = `${(database.size / (1024 * 1024)).toFixed( + 1, + )} MB`; + + return { + label: getLanguageDisplayName(database.language), + description: bytesToDisplayMB, + database, + }; + }) + .sort((a, b) => a.label.localeCompare(b.label)); + + const selectedItems = await window.showQuickPick(items, { + title, + placeHolder, + ignoreFocusOut: true, + canPickMany: true, + }); + + return selectedItems?.map((selectedItem) => selectedItem.database) ?? []; +} diff --git a/extensions/ql-vscode/src/databases/github-databases/github-databases-module.ts b/extensions/ql-vscode/src/databases/github-databases/github-databases-module.ts new file mode 100644 index 00000000000..6c97dd36b37 --- /dev/null +++ b/extensions/ql-vscode/src/databases/github-databases/github-databases-module.ts @@ -0,0 +1,214 @@ +import { window } from "vscode"; +import { DisposableObject } from "../../common/disposable-object"; +import type { App } from "../../common/app"; +import { findGitHubRepositoryForWorkspace } from "../github-repository-finder"; +import { redactableError } from "../../common/errors"; +import { + asError, + assertNever, + getErrorMessage, +} from "../../common/helpers-pure"; +import { + askForGitHubDatabaseDownload, + downloadDatabaseFromGitHub, +} from "./download"; +import type { GitHubDatabaseConfig } from "../../config"; +import type { DatabaseManager } from "../local-databases"; +import type { CodeqlDatabase, ListDatabasesResult } from "./api"; +import { listDatabases } from "./api"; +import type { DatabaseUpdate } from "./updates"; +import { + askForGitHubDatabaseUpdate, + downloadDatabaseUpdateFromGitHub, + isNewerDatabaseAvailable, +} from "./updates"; +import type { Octokit } from "@octokit/rest"; +import type { DatabaseFetcher } from "../database-fetcher"; + +export class GitHubDatabasesModule extends DisposableObject { + /** + * This constructor is public only for testing purposes. Please use the `initialize` method + * instead. + */ + constructor( + private readonly app: App, + private readonly databaseManager: DatabaseManager, + private readonly databaseFetcher: DatabaseFetcher, + private readonly config: GitHubDatabaseConfig, + ) { + super(); + } + + public static async initialize( + app: App, + databaseManager: DatabaseManager, + databaseFetcher: DatabaseFetcher, + config: GitHubDatabaseConfig, + ): Promise { + const githubDatabasesModule = new GitHubDatabasesModule( + app, + databaseManager, + databaseFetcher, + config, + ); + app.subscriptions.push(githubDatabasesModule); + + await githubDatabasesModule.initialize(); + return githubDatabasesModule; + } + + private async initialize(): Promise { + // Start the check and downloading the database asynchronously. We don't want to block on this + // in extension activation since this makes network requests and waits for user input. + void this.promptGitHubRepositoryDownload().catch((e: unknown) => { + const error = redactableError( + asError(e), + )`Failed to prompt for GitHub repository download`; + + void this.app.logger.log(error.fullMessageWithStack); + this.app.telemetry?.sendError(error); + }); + } + + /** + * This method is public only for testing purposes. + */ + public async promptGitHubRepositoryDownload(): Promise { + if (this.config.download === "never") { + return; + } + + const githubRepositoryResult = await findGitHubRepositoryForWorkspace(); + if (githubRepositoryResult.isFailure) { + void this.app.logger.log( + `Did not find a GitHub repository for workspace: ${githubRepositoryResult.errors.join( + ", ", + )}`, + ); + return; + } + + const githubRepository = githubRepositoryResult.value; + + let result: ListDatabasesResult | undefined; + try { + result = await listDatabases( + githubRepository.owner, + githubRepository.name, + this.app.credentials, + this.config, + ); + } catch (e) { + this.app.telemetry?.sendError( + redactableError( + asError(e), + )`Failed to prompt for GitHub database download`, + ); + + void this.app.logger.log( + `Failed to find GitHub databases for repository: ${getErrorMessage(e)}`, + ); + + return; + } + + // This means the user didn't want to connect, so we can just return. + if (result === undefined) { + return; + } + + const { databases, promptedForCredentials, octokit } = result; + + if (databases.length === 0) { + // If the user didn't have an access token, they have already been prompted, + // so we should give feedback. + if (promptedForCredentials) { + void window.showInformationMessage( + "The GitHub repository does not have any CodeQL databases.", + ); + } + + return; + } + + const updateStatus = isNewerDatabaseAvailable( + databases, + githubRepository.owner, + githubRepository.name, + this.databaseManager, + ); + + switch (updateStatus.type) { + case "upToDate": + return; + case "updateAvailable": + await this.updateGitHubDatabase( + octokit, + githubRepository.owner, + githubRepository.name, + updateStatus.databaseUpdates, + ); + break; + case "noDatabase": + await this.downloadGitHubDatabase( + octokit, + githubRepository.owner, + githubRepository.name, + databases, + promptedForCredentials, + ); + break; + default: + assertNever(updateStatus); + } + } + + private async downloadGitHubDatabase( + octokit: Octokit, + owner: string, + repo: string, + databases: CodeqlDatabase[], + promptedForCredentials: boolean, + ) { + // If the user already had an access token, first ask if they even want to download the DB. + if (!promptedForCredentials) { + if (!(await askForGitHubDatabaseDownload(databases, this.config))) { + return; + } + } + + await downloadDatabaseFromGitHub( + octokit, + owner, + repo, + databases, + this.databaseFetcher, + this.app.commands, + ); + } + + private async updateGitHubDatabase( + octokit: Octokit, + owner: string, + repo: string, + databaseUpdates: DatabaseUpdate[], + ): Promise { + if (this.config.update === "never") { + return; + } + + if (!(await askForGitHubDatabaseUpdate(databaseUpdates, this.config))) { + return; + } + + await downloadDatabaseUpdateFromGitHub( + octokit, + owner, + repo, + databaseUpdates, + this.databaseManager, + this.databaseFetcher, + this.app.commands, + ); + } +} diff --git a/extensions/ql-vscode/src/databases/github-databases/index.ts b/extensions/ql-vscode/src/databases/github-databases/index.ts new file mode 100644 index 00000000000..76c2486d30b --- /dev/null +++ b/extensions/ql-vscode/src/databases/github-databases/index.ts @@ -0,0 +1 @@ +export * from "./github-databases-module"; diff --git a/extensions/ql-vscode/src/databases/github-databases/updates.ts b/extensions/ql-vscode/src/databases/github-databases/updates.ts new file mode 100644 index 00000000000..2561f680db0 --- /dev/null +++ b/extensions/ql-vscode/src/databases/github-databases/updates.ts @@ -0,0 +1,216 @@ +import type { CodeqlDatabase } from "./api"; +import type { DatabaseItem, DatabaseManager } from "../local-databases"; +import type { Octokit } from "@octokit/rest"; +import type { AppCommandManager } from "../../common/commands"; +import { getLanguageDisplayName } from "../../common/query-language"; +import { showNeverAskAgainDialog } from "../../common/vscode/dialog"; +import type { DatabaseFetcher } from "../database-fetcher"; +import { withProgress } from "../../common/vscode/progress"; +import { window } from "vscode"; +import type { GitHubDatabaseConfig } from "../../config"; +import { joinLanguages, promptForDatabases } from "./download"; + +export type DatabaseUpdate = { + database: CodeqlDatabase; + databaseItem: DatabaseItem; +}; + +type DatabaseUpdateStatusUpdateAvailable = { + type: "updateAvailable"; + databaseUpdates: DatabaseUpdate[]; +}; + +type DatabaseUpdateStatusUpToDate = { + type: "upToDate"; +}; + +type DatabaseUpdateStatusNoDatabase = { + type: "noDatabase"; +}; + +type DatabaseUpdateStatus = + | DatabaseUpdateStatusUpdateAvailable + | DatabaseUpdateStatusUpToDate + | DatabaseUpdateStatusNoDatabase; + +/** + * Check whether a newer database is available for the given repository. Databases are considered updated if: + * - They have a different commit OID, or + * - They have the same commit OID, but the remote database was created after the local database. + */ +export function isNewerDatabaseAvailable( + databases: CodeqlDatabase[], + owner: string, + name: string, + databaseManager: DatabaseManager, +): DatabaseUpdateStatus { + // Sorted by date added ascending + const existingDatabasesForRepository = databaseManager.databaseItems + .filter( + (db) => + db.origin?.type === "github" && + db.origin.repository === `${owner}/${name}`, + ) + .sort((a, b) => (a.dateAdded ?? 0) - (b.dateAdded ?? 0)); + + if (existingDatabasesForRepository.length === 0) { + return { + type: "noDatabase", + }; + } + + // Sort order is guaranteed by the sort call above. The newest database is the last one. + const newestExistingDatabasesByLanguage = new Map(); + for (const existingDatabase of existingDatabasesForRepository) { + newestExistingDatabasesByLanguage.set( + existingDatabase.language, + existingDatabase, + ); + } + + const databaseUpdates = Array.from(newestExistingDatabasesByLanguage.values()) + .map((newestExistingDatabase): DatabaseUpdate | null => { + const origin = newestExistingDatabase.origin; + if (origin?.type !== "github") { + return null; + } + + const matchingDatabase = databases.find( + (db) => db.language === newestExistingDatabase.language, + ); + if (!matchingDatabase) { + return null; + } + + // If they are not equal, we assume that the remote database is newer. + if (matchingDatabase.commit_oid === origin.commitOid) { + const remoteDatabaseCreatedAt = new Date(matchingDatabase.created_at); + const localDatabaseCreatedAt = new Date(origin.databaseCreatedAt); + + // If the remote database was created before the local database, + // we assume that the local database is newer. + if (remoteDatabaseCreatedAt <= localDatabaseCreatedAt) { + return null; + } + } + + return { + database: matchingDatabase, + databaseItem: newestExistingDatabase, + }; + }) + .filter((update): update is DatabaseUpdate => update !== null) + .sort((a, b) => a.database.language.localeCompare(b.database.language)); + + if (databaseUpdates.length === 0) { + return { + type: "upToDate", + }; + } + + return { + type: "updateAvailable", + databaseUpdates, + }; +} + +export async function askForGitHubDatabaseUpdate( + updates: DatabaseUpdate[], + config: GitHubDatabaseConfig, +): Promise { + const languages = updates.map((update) => update.database.language); + + const message = + updates.length === 1 + ? `There is a newer ${getLanguageDisplayName( + languages[0], + )} CodeQL database available for this repository. Download the database update from GitHub?` + : `There are newer ${joinLanguages( + languages, + )} CodeQL databases available for this repository. Download the database updates from GitHub?`; + + const answer = await showNeverAskAgainDialog( + message, + false, + "Download", + "Not now", + "Never", + ); + + if (answer === "Not now" || answer === undefined) { + return false; + } + + if (answer === "Never") { + await config.setUpdate("never"); + return false; + } + + return true; +} + +export async function downloadDatabaseUpdateFromGitHub( + octokit: Octokit, + owner: string, + repo: string, + updates: DatabaseUpdate[], + databaseManager: DatabaseManager, + databaseFetcher: DatabaseFetcher, + commandManager: AppCommandManager, +): Promise { + const selectedDatabases = await promptForDatabases( + updates.map((update) => update.database), + { + title: "Select databases to update", + }, + ); + if (selectedDatabases.length === 0) { + return; + } + + await Promise.all( + selectedDatabases + .map((database) => { + const update = updates.find((update) => update.database === database); + if (!update) { + return undefined; + } + + return withProgress( + async (progress) => { + const newDatabase = + await databaseFetcher.downloadGitHubDatabaseFromUrl( + database.url, + database.id, + database.created_at, + database.commit_oid ?? null, + owner, + repo, + octokit, + progress, + databaseManager.currentDatabaseItem === update.databaseItem, + update.databaseItem.hasSourceArchiveInExplorer(), + ); + if (newDatabase === undefined) { + return; + } + + await databaseManager.removeDatabaseItem(update.databaseItem); + + await commandManager.execute("codeQLDatabases.focus"); + void window.showInformationMessage( + `Updated ${getLanguageDisplayName( + database.language, + )} database from GitHub.`, + ); + }, + { + title: `Updating ${getLanguageDisplayName( + database.language, + )} database from GitHub`, + }, + ); + }) + .filter((p): p is Promise => p !== undefined), + ); +} diff --git a/extensions/ql-vscode/src/databases/github-repository-finder.ts b/extensions/ql-vscode/src/databases/github-repository-finder.ts new file mode 100644 index 00000000000..719d90f497b --- /dev/null +++ b/extensions/ql-vscode/src/databases/github-repository-finder.ts @@ -0,0 +1,183 @@ +import type { + API as GitExtensionAPI, + GitExtension, + Repository, +} from "../common/vscode/extension/git"; +import type { Uri } from "vscode"; +import { extensions } from "vscode"; +import { getOnDiskWorkspaceFoldersObjects } from "../common/vscode/workspace-folders"; +import { ValueResult } from "../common/value-result"; + +// Based on https://github.com/microsoft/sarif-vscode-extension/blob/a1740e766122c1759d9f39d580c18b82d9e0dea4/src/extension/index.activateGithubAnalyses.ts + +async function getGitExtensionAPI(): Promise< + ValueResult +> { + const gitExtension = extensions.getExtension("vscode.git"); + if (!gitExtension) { + return ValueResult.fail(["Git extension not found"]); + } + + if (!gitExtension.isActive) { + await gitExtension.activate(); + } + + const gitExtensionExports = gitExtension.exports; + + if (!gitExtensionExports.enabled) { + return ValueResult.fail(["Git extension is not enabled"]); + } + + const git = gitExtensionExports.getAPI(1); + if (git.state === "initialized") { + return ValueResult.ok(git); + } + + return new Promise((resolve) => { + git.onDidChangeState((state) => { + if (state === "initialized") { + resolve(ValueResult.ok(git)); + } + }); + }); +} + +async function findRepositoryForWorkspaceFolder( + git: GitExtensionAPI, + workspaceFolderUri: Uri, +): Promise { + return git.repositories.find( + (repo) => repo.rootUri.toString() === workspaceFolderUri.toString(), + ); +} + +/** + * Finds the primary remote fetch URL for a repository. + * + * The priority is: + * 1. The remote associated with the current branch + * 2. The remote named "origin" + * 3. The first remote + * + * If none of these are found, undefined is returned. + * + * This is just a heuristic. We may not find the correct remote in all cases, + * for example when the user has defined an alias in their SSH or Git config. + * + * @param repository The repository to find the remote for. + */ +async function findRemote(repository: Repository): Promise { + // Try to retrieve the remote 5 times with a 5 second delay between each attempt. + // This is to account for the case where the Git extension has not yet retrieved + // the state for all Git repositories. + // This can happen on Codespaces where the Git extension is initialized before the + // filesystem is ready. + for (let count = 0; count < 5; count++) { + const remoteName = repository.state.HEAD?.upstream?.remote ?? "origin"; + const upstreamRemoteUrl = repository.state.remotes.find( + (remote) => remote.name === remoteName, + )?.fetchUrl; + if (upstreamRemoteUrl) { + return upstreamRemoteUrl; + } + + if (remoteName !== "origin") { + const originRemoteUrl = repository.state.remotes.find( + (remote) => remote.name === "origin", + )?.fetchUrl; + + if (originRemoteUrl) { + return originRemoteUrl; + } + } + + // Maybe they have a different remote that is not named origin and is not the + // upstream of the current branch. If so, just select the first one. + const firstRemoteUrl = repository.state.remotes[0]?.fetchUrl; + if (firstRemoteUrl) { + return firstRemoteUrl; + } + + // Wait for 5 seconds before trying again. + await new Promise((resolve) => setTimeout(resolve, 5000)); + } + + return undefined; +} + +// Example: https://github.com/github/vscode-codeql.git +const githubHTTPSRegex = + /https:\/\/github\.com\/(?[^/]+)\/(?[^/]+)/; + +// Example: git@github.com:github/vscode-codeql.git +const githubSSHRegex = /git@github\.com:(?[^/]+)\/(?[^/]+)/; + +function findGitHubRepositoryForRemote(remoteUrl: string): + | { + owner: string; + name: string; + } + | undefined { + const match = + remoteUrl.match(githubHTTPSRegex) ?? remoteUrl.match(githubSSHRegex); + if (!match) { + return undefined; + } + + const owner = match.groups?.owner; + let name = match.groups?.name; + + if (!owner || !name) { + return undefined; + } + + // If a repository ends with ".git", remove it. + if (name.endsWith(".git")) { + name = name.slice(0, -4); + } + + return { + owner, + name, + }; +} + +export async function findGitHubRepositoryForWorkspace(): Promise< + ValueResult<{ owner: string; name: string }, string> +> { + const gitResult = await getGitExtensionAPI(); + if (gitResult.isFailure) { + return ValueResult.fail(gitResult.errors); + } + + const git = gitResult.value; + + const primaryWorkspaceFolder = getOnDiskWorkspaceFoldersObjects()[0]?.uri; + if (!primaryWorkspaceFolder) { + return ValueResult.fail(["No workspace folder found"]); + } + + const primaryRepository = await findRepositoryForWorkspaceFolder( + git, + primaryWorkspaceFolder, + ); + if (!primaryRepository) { + return ValueResult.fail([ + "No Git repository found in primary workspace folder", + ]); + } + + const remoteUrl = await findRemote(primaryRepository); + if (!remoteUrl) { + return ValueResult.fail(["No remote found"]); + } + + const repoNwo = findGitHubRepositoryForRemote(remoteUrl); + if (!repoNwo) { + return ValueResult.fail(["Remote is not a GitHub repository"]); + } + + const { owner, name } = repoNwo; + + return ValueResult.ok({ owner, name }); +} diff --git a/extensions/ql-vscode/src/databases/local-databases-ui.ts b/extensions/ql-vscode/src/databases/local-databases-ui.ts new file mode 100644 index 00000000000..823093bfe49 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases-ui.ts @@ -0,0 +1,1135 @@ +import { join, basename, dirname as path_dirname } from "path"; +import { DisposableObject } from "../common/disposable-object"; +import type { + Event, + ProviderResult, + TreeDataProvider, + CancellationToken, + QuickPickItem, +} from "vscode"; +import { + EventEmitter, + TreeItem, + Uri, + window, + env, + ThemeIcon, + ThemeColor, + workspace, + FileType, +} from "vscode"; +import { pathExists, stat, readdir, remove } from "fs-extra"; + +import type { + DatabaseChangedEvent, + DatabaseItem, + DatabaseManager, +} from "./local-databases"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { + UserCancellationException, + withProgress, +} from "../common/vscode/progress"; +import { + isLikelyDatabaseRoot, + isLikelyDbLanguageFolder, +} from "./local-databases/db-contents-heuristics"; +import { + showAndLogExceptionWithTelemetry, + showAndLogErrorMessage, + showAndLogInformationMessage, +} from "../common/logging"; +import type { DatabaseFetcher } from "./database-fetcher"; +import { asError, asyncFilter, getErrorMessage } from "../common/helpers-pure"; +import type { QueryRunner } from "../query-server"; +import type { App } from "../common/app"; +import { redactableError } from "../common/errors"; +import type { LocalDatabasesCommands } from "../common/commands"; +import { + createMultiSelectionCommand, + createSingleSelectionCommand, +} from "../common/vscode/selection-commands"; +import { + getLanguageDisplayName, + tryGetQueryLanguage, +} from "../common/query-language"; +import type { LanguageContextStore } from "../language-context-store"; + +enum SortOrder { + NameAsc = "NameAsc", + NameDesc = "NameDesc", + LanguageAsc = "LanguageAsc", + LanguageDesc = "LanguageDesc", + DateAddedAsc = "DateAddedAsc", + DateAddedDesc = "DateAddedDesc", +} + +/** + * Tree data provider for the databases view. + */ +class DatabaseTreeDataProvider + extends DisposableObject + implements TreeDataProvider +{ + private _sortOrder = SortOrder.NameAsc; + + private readonly _onDidChangeTreeData = this.push( + new EventEmitter(), + ); + private currentDatabaseItem: DatabaseItem | undefined; + + constructor( + private databaseManager: DatabaseManager, + private languageContext: LanguageContextStore, + ) { + super(); + + this.currentDatabaseItem = databaseManager.currentDatabaseItem; + + this.push( + this.databaseManager.onDidChangeDatabaseItem( + this.handleDidChangeDatabaseItem.bind(this), + ), + ); + this.push( + this.databaseManager.onDidChangeCurrentDatabaseItem( + this.handleDidChangeCurrentDatabaseItem.bind(this), + ), + ); + this.push( + this.languageContext.onLanguageContextChanged(async () => { + this._onDidChangeTreeData.fire(undefined); + }), + ); + } + + public get onDidChangeTreeData(): Event { + return this._onDidChangeTreeData.event; + } + + private handleDidChangeDatabaseItem(event: DatabaseChangedEvent): void { + // Note that events from the database manager are instances of DatabaseChangedEvent + // and events fired by the UI are instances of DatabaseItem + + // When a full refresh has occurred, then all items are refreshed by passing undefined. + this._onDidChangeTreeData.fire(event.fullRefresh ? undefined : event.item); + } + + private handleDidChangeCurrentDatabaseItem( + event: DatabaseChangedEvent, + ): void { + if (this.currentDatabaseItem) { + this._onDidChangeTreeData.fire(this.currentDatabaseItem); + } + this.currentDatabaseItem = event.item; + if (this.currentDatabaseItem) { + this._onDidChangeTreeData.fire(this.currentDatabaseItem); + } + } + + public getTreeItem(element: DatabaseItem): TreeItem { + const item = new TreeItem(element.name); + if (element === this.currentDatabaseItem) { + item.iconPath = new ThemeIcon("check"); + + item.contextValue = "currentDatabase"; + } else if (element.error !== undefined) { + item.iconPath = new ThemeIcon("error", new ThemeColor("errorForeground")); + } + item.tooltip = element.databaseUri.fsPath; + item.description = + element.language + (element.origin?.type === "testproj" ? " (test)" : ""); + return item; + } + + public getChildren(element?: DatabaseItem): ProviderResult { + if (element === undefined) { + // Filter items by language + const displayItems = this.databaseManager.databaseItems.filter((item) => { + return this.languageContext.shouldInclude( + tryGetQueryLanguage(item.language), + ); + }); + + // Sort items + return displayItems.slice(0).sort((db1, db2) => { + switch (this.sortOrder) { + case SortOrder.NameAsc: + return db1.name.localeCompare(db2.name, env.language); + case SortOrder.NameDesc: + return db2.name.localeCompare(db1.name, env.language); + case SortOrder.LanguageAsc: + return ( + db1.language.localeCompare(db2.language, env.language) || + // If the languages are the same, sort by name + db1.name.localeCompare(db2.name, env.language) + ); + case SortOrder.LanguageDesc: + return ( + db2.language.localeCompare(db1.language, env.language) || + // If the languages are the same, sort by name + db2.name.localeCompare(db1.name, env.language) + ); + case SortOrder.DateAddedAsc: + return (db1.dateAdded || 0) - (db2.dateAdded || 0); + case SortOrder.DateAddedDesc: + return (db2.dateAdded || 0) - (db1.dateAdded || 0); + } + }); + } else { + return []; + } + } + + public getParent(_element: DatabaseItem): ProviderResult { + return null; + } + + public getCurrent(): DatabaseItem | undefined { + return this.currentDatabaseItem; + } + + public get sortOrder() { + return this._sortOrder; + } + + public set sortOrder(newSortOrder: SortOrder) { + this._sortOrder = newSortOrder; + this._onDidChangeTreeData.fire(undefined); + } +} + +/** Gets the first element in the given list, if any, or undefined if the list is empty or undefined. */ +function getFirst(list: Uri[] | undefined): Uri | undefined { + if (list === undefined || list.length === 0) { + return undefined; + } else { + return list[0]; + } +} + +/** + * Displays file selection dialog. Expects the user to choose a + * database directory, which should be the parent directory of a + * directory of the form `db-[language]`, for example, `db-cpp`. + * + * XXX: no validation is done other than checking the directory name + * to make sure it really is a database directory. + */ +async function chooseDatabaseDir(byFolder: boolean): Promise { + const chosen = await window.showOpenDialog({ + openLabel: byFolder ? "Choose Database folder" : "Choose Database archive", + canSelectFiles: !byFolder, + canSelectFolders: byFolder, + canSelectMany: false, + filters: byFolder ? {} : { Archives: ["zip"] }, + }); + return getFirst(chosen); +} + +export interface DatabaseSelectionQuickPickItem extends QuickPickItem { + databaseKind: "new" | "existing"; +} + +export interface DatabaseQuickPickItem extends QuickPickItem { + databaseItem: DatabaseItem; +} + +export interface DatabaseImportQuickPickItems extends QuickPickItem { + importType: "URL" | "github" | "archive" | "folder"; +} + +export class DatabaseUI extends DisposableObject { + private treeDataProvider: DatabaseTreeDataProvider; + + public constructor( + private app: App, + private databaseManager: DatabaseManager, + private readonly databaseFetcher: DatabaseFetcher, + languageContext: LanguageContextStore, + private readonly queryServer: QueryRunner, + private readonly storagePath: string, + readonly extensionPath: string, + ) { + super(); + + this.treeDataProvider = this.push( + new DatabaseTreeDataProvider(databaseManager, languageContext), + ); + this.push( + window.createTreeView("codeQLDatabases", { + treeDataProvider: this.treeDataProvider, + canSelectMany: true, + }), + ); + } + + public getCommands(): LocalDatabasesCommands { + return { + "codeQL.getCurrentDatabase": this.handleGetCurrentDatabase.bind(this), + "codeQL.chooseDatabaseFolder": + this.handleChooseDatabaseFolderFromPalette.bind(this), + "codeQL.chooseDatabaseFoldersParent": + this.handleChooseDatabaseFoldersParentFromPalette.bind(this), + "codeQL.chooseDatabaseArchive": + this.handleChooseDatabaseArchiveFromPalette.bind(this), + "codeQL.chooseDatabaseInternet": + this.handleChooseDatabaseInternet.bind(this), + "codeQL.chooseDatabaseGithub": this.handleChooseDatabaseGithub.bind(this), + "codeQL.setCurrentDatabase": this.handleSetCurrentDatabase.bind(this), + "codeQL.importTestDatabase": this.handleImportTestDatabase.bind(this), + "codeQL.setDefaultTourDatabase": + this.handleSetDefaultTourDatabase.bind(this), + "codeQL.upgradeCurrentDatabase": + this.handleUpgradeCurrentDatabase.bind(this), + "codeQL.clearCache": this.handleClearCache.bind(this), + "codeQL.trimCache": this.handleTrimCache.bind(this), + "codeQL.trimOverlayBaseCache": this.handleTrimOverlayBaseCache.bind(this), + "codeQLDatabases.chooseDatabaseFolder": + this.handleChooseDatabaseFolder.bind(this), + "codeQLDatabases.chooseDatabaseArchive": + this.handleChooseDatabaseArchive.bind(this), + "codeQLDatabases.chooseDatabaseInternet": + this.handleChooseDatabaseInternet.bind(this), + "codeQLDatabases.chooseDatabaseGithub": + this.handleChooseDatabaseGithub.bind(this), + "codeQLDatabases.setCurrentDatabase": + this.handleMakeCurrentDatabase.bind(this), + "codeQLDatabases.sortByName": this.handleSortByName.bind(this), + "codeQLDatabases.sortByLanguage": this.handleSortByLanguage.bind(this), + "codeQLDatabases.sortByDateAdded": this.handleSortByDateAdded.bind(this), + "codeQLDatabases.removeDatabase": createMultiSelectionCommand( + this.handleRemoveDatabase.bind(this), + ), + "codeQLDatabases.upgradeDatabase": createMultiSelectionCommand( + this.handleUpgradeDatabase.bind(this), + ), + "codeQLDatabases.renameDatabase": createSingleSelectionCommand( + this.app.logger, + this.handleRenameDatabase.bind(this), + "database", + ), + "codeQLDatabases.openDatabaseFolder": createMultiSelectionCommand( + this.handleOpenFolder.bind(this), + ), + "codeQLDatabases.addDatabaseSource": createMultiSelectionCommand( + this.handleAddSource.bind(this), + ), + "codeQLDatabases.removeOrphanedDatabases": + this.handleRemoveOrphanedDatabases.bind(this), + }; + } + + private async handleMakeCurrentDatabase( + databaseItem: DatabaseItem, + ): Promise { + await this.databaseManager.setCurrentDatabaseItem(databaseItem); + } + + private async chooseDatabaseFolder( + progress: ProgressCallback, + ): Promise { + try { + await this.chooseAndSetDatabase(true, progress); + } catch (e) { + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError( + asError(e), + )`Failed to choose and set database: ${getErrorMessage(e)}`, + ); + } + } + + private async handleChooseDatabaseFolder(): Promise { + return withProgress( + async (progress) => { + await this.chooseDatabaseFolder(progress); + }, + { + title: "Adding database from folder", + }, + ); + } + + private async handleChooseDatabaseFolderFromPalette(): Promise { + return withProgress( + async (progress) => { + await this.chooseDatabaseFolder(progress); + }, + { + title: "Choose a Database from a Folder", + }, + ); + } + + private async handleChooseDatabaseFoldersParentFromPalette(): Promise { + return withProgress(async (progress) => { + await this.chooseDatabasesParentFolder(progress); + }); + } + + private async handleSetDefaultTourDatabase(): Promise { + return withProgress( + async () => { + try { + if (!workspace.workspaceFolders?.length) { + throw new Error("No workspace folder is open."); + } else { + // This specifically refers to the database folder in + // https://github.com/github/codespaces-codeql + const uri = Uri.parse( + `${workspace.workspaceFolders[0].uri.toString()}/.tours/codeql-tutorial-database`, + ); + + const databaseItem = this.databaseManager.findDatabaseItem(uri); + if (databaseItem === undefined) { + const makeSelected = true; + const nameOverride = "CodeQL Tutorial Database"; + + await this.databaseManager.openDatabase( + uri, + { + type: "folder", + }, + makeSelected, + nameOverride, + { + isTutorialDatabase: true, + }, + ); + } + await this.handleTourDependencies(); + } + } catch (e) { + // rethrow and let this be handled by default error handling. + throw new Error( + `Could not set the database for the Code Tour. Please make sure you are using the default workspace in your codespace: ${getErrorMessage( + e, + )}`, + ); + } + }, + { + title: "Set Default Database for Codespace CodeQL Tour", + }, + ); + } + + private async handleTourDependencies(): Promise { + if (!workspace.workspaceFolders?.length) { + throw new Error("No workspace folder is open."); + } else { + const tutorialQueriesPath = join( + workspace.workspaceFolders[0].uri.fsPath, + "tutorial-queries", + ); + const cli = this.queryServer.cliServer; + await cli.packInstall(tutorialQueriesPath); + } + } + + // Public because it's used in tests + public async handleRemoveOrphanedDatabases(): Promise { + void this.app.logger.log( + "Removing orphaned databases from workspace storage.", + ); + let dbDirs = undefined; + + if ( + !(await pathExists(this.storagePath)) || + !(await stat(this.storagePath)).isDirectory() + ) { + void this.app.logger.log( + "Missing or invalid storage directory. Not trying to remove orphaned databases.", + ); + return; + } + + dbDirs = + // read directory + (await readdir(this.storagePath, { withFileTypes: true })) + // remove non-directories + .filter((dirent) => dirent.isDirectory()) + // get the full path + .map((dirent) => join(this.storagePath, dirent.name)) + // remove databases still in workspace + .filter((dbDir) => { + const dbUri = Uri.file(dbDir); + return this.databaseManager.databaseItems.every( + (item) => item.databaseUri.fsPath !== dbUri.fsPath, + ); + }); + + // remove non-databases + dbDirs = await asyncFilter(dbDirs, isLikelyDatabaseRoot); + + if (!dbDirs.length) { + void this.app.logger.log("No orphaned databases found."); + return; + } + + // delete + const failures = [] as string[]; + await Promise.all( + dbDirs.map(async (dbDir) => { + try { + void this.app.logger.log(`Deleting orphaned database '${dbDir}'.`); + await remove(dbDir); + } catch (e) { + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError( + asError(e), + )`Failed to delete orphaned database: ${getErrorMessage(e)}`, + ); + failures.push(`${basename(dbDir)}`); + } + }), + ); + + if (failures.length) { + const dirname = path_dirname(failures[0]); + void showAndLogErrorMessage( + this.app.logger, + `Failed to delete unused databases (${failures.join( + ", ", + )}).\nTo delete unused databases, please remove them manually from the storage folder ${dirname}.`, + ); + } + } + + private async chooseDatabaseArchive( + progress: ProgressCallback, + ): Promise { + try { + await this.chooseAndSetDatabase(false, progress); + } catch (e) { + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError( + asError(e), + )`Failed to choose and set database: ${getErrorMessage(e)}`, + ); + } + } + + private async handleChooseDatabaseArchive(): Promise { + return withProgress( + async (progress) => { + await this.chooseDatabaseArchive(progress); + }, + { + title: "Adding database from archive", + }, + ); + } + + private async handleChooseDatabaseArchiveFromPalette(): Promise { + return withProgress( + async (progress) => { + await this.chooseDatabaseArchive(progress); + }, + { + title: "Choose a Database from an Archive", + }, + ); + } + + private async handleChooseDatabaseInternet(): Promise { + return withProgress( + async (progress) => { + await this.databaseFetcher.promptImportInternetDatabase(progress); + }, + { + title: "Adding database from URL", + }, + ); + } + + private async handleChooseDatabaseGithub(): Promise { + return withProgress( + async (progress) => { + await this.databaseFetcher.promptImportGithubDatabase(progress); + }, + { + title: "Adding database from GitHub", + }, + ); + } + + private async handleSortByName() { + if (this.treeDataProvider.sortOrder === SortOrder.NameAsc) { + this.treeDataProvider.sortOrder = SortOrder.NameDesc; + } else { + this.treeDataProvider.sortOrder = SortOrder.NameAsc; + } + } + + private async handleSortByLanguage() { + if (this.treeDataProvider.sortOrder === SortOrder.LanguageAsc) { + this.treeDataProvider.sortOrder = SortOrder.LanguageDesc; + } else { + this.treeDataProvider.sortOrder = SortOrder.LanguageAsc; + } + } + + private async handleSortByDateAdded() { + if (this.treeDataProvider.sortOrder === SortOrder.DateAddedAsc) { + this.treeDataProvider.sortOrder = SortOrder.DateAddedDesc; + } else { + this.treeDataProvider.sortOrder = SortOrder.DateAddedAsc; + } + } + + private async handleUpgradeCurrentDatabase(): Promise { + return withProgress( + async (progress, token) => { + if (this.databaseManager.currentDatabaseItem !== undefined) { + await this.handleUpgradeDatabasesInternal(progress, token, [ + this.databaseManager.currentDatabaseItem, + ]); + } + }, + { + title: "Upgrading current database", + cancellable: true, + }, + ); + } + + private async handleUpgradeDatabase( + databaseItems: DatabaseItem[], + ): Promise { + return withProgress( + async (progress, token) => { + return await this.handleUpgradeDatabasesInternal( + progress, + token, + databaseItems, + ); + }, + { + title: "Upgrading database", + cancellable: true, + }, + ); + } + + private async handleUpgradeDatabasesInternal( + progress: ProgressCallback, + token: CancellationToken, + databaseItems: DatabaseItem[], + ): Promise { + await Promise.all( + databaseItems.map(async (databaseItem) => { + if (this.queryServer === undefined) { + throw new Error( + "Received request to upgrade database, but there is no running query server.", + ); + } + if (databaseItem.contents === undefined) { + throw new Error( + "Received request to upgrade database, but database contents could not be found.", + ); + } + if (databaseItem.contents.dbSchemeUri === undefined) { + throw new Error( + "Received request to upgrade database, but database has no schema.", + ); + } + + // Search for upgrade scripts in any workspace folders available + + await this.queryServer.upgradeDatabaseExplicit( + databaseItem, + progress, + token, + ); + }), + ); + } + + private async handleClearCache(): Promise { + return withProgress( + async () => { + if ( + this.queryServer !== undefined && + this.databaseManager.currentDatabaseItem !== undefined + ) { + await this.queryServer.clearCacheInDatabase( + this.databaseManager.currentDatabaseItem, + ); + } + }, + { + title: "Clearing cache", + }, + ); + } + + private async handleTrimCache(): Promise { + return withProgress( + async () => { + if ( + this.queryServer !== undefined && + this.databaseManager.currentDatabaseItem !== undefined + ) { + await this.queryServer.trimCacheInDatabase( + this.databaseManager.currentDatabaseItem, + ); + } + }, + { + title: "Trimming cache", + }, + ); + } + + private async handleTrimOverlayBaseCache(): Promise { + return withProgress( + async () => { + if ( + this.queryServer !== undefined && + this.databaseManager.currentDatabaseItem !== undefined + ) { + await this.queryServer.trimCacheWithModeInDatabase( + this.databaseManager.currentDatabaseItem, + "overlay", + ); + } + }, + { + title: "Removing all overlay-dependent data from cache", + }, + ); + } + + private async handleGetCurrentDatabase(): Promise { + const dbItem = await this.getDatabaseItemInternal(undefined); + return dbItem?.databaseUri.fsPath; + } + + private async handleSetCurrentDatabase(uri: Uri): Promise { + return withProgress( + async (progress) => { + try { + // Assume user has selected an archive if the file has a .zip extension + if (uri.path.endsWith(".zip")) { + await this.databaseFetcher.importLocalDatabase( + uri.toString(true), + progress, + ); + } else { + await this.databaseManager.openDatabase(uri, { + type: "folder", + }); + } + } catch (e) { + // rethrow and let this be handled by default error handling. + throw new Error( + `Could not set database to ${basename( + uri.fsPath, + )}. Reason: ${getErrorMessage(e)}`, + ); + } + }, + { + title: "Importing database from archive", + }, + ); + } + + private async handleImportTestDatabase(uri: Uri): Promise { + return withProgress( + async (progress) => { + try { + if (!uri.path.endsWith(".testproj")) { + throw new Error( + "Please select a valid test database to import. Test databases end with `.testproj`.", + ); + } + + // Check if the database is already in the workspace. If + // so, delete it first before importing the new one. + const existingItem = this.databaseManager.findTestDatabase(uri); + const baseName = basename(uri.fsPath); + if (existingItem !== undefined) { + progress({ + maxStep: 9, + step: 1, + message: `Removing existing test database ${baseName}`, + }); + await this.databaseManager.removeDatabaseItem(existingItem); + } + + await this.databaseFetcher.importLocalDatabase( + uri.toString(true), + progress, + ); + + if (existingItem !== undefined) { + progress({ + maxStep: 9, + step: 9, + message: `Successfully re-imported ${baseName}`, + }); + } + } catch (e) { + // rethrow and let this be handled by default error handling. + throw new Error( + `Could not set database to ${basename( + uri.fsPath, + )}. Reason: ${getErrorMessage(e)}`, + ); + } + }, + { + title: "(Re-)importing test database from directory", + }, + ); + } + + private async handleRemoveDatabase( + databaseItems: DatabaseItem[], + ): Promise { + return withProgress( + async () => { + await Promise.all( + databaseItems.map((dbItem) => + this.databaseManager.removeDatabaseItem(dbItem), + ), + ); + }, + { + title: "Removing database", + cancellable: false, + }, + ); + } + + private async handleRenameDatabase( + databaseItem: DatabaseItem, + ): Promise { + const newName = await window.showInputBox({ + prompt: "Choose new database name", + value: databaseItem.name, + }); + + if (newName) { + await this.databaseManager.renameDatabaseItem(databaseItem, newName); + } + } + + private async handleOpenFolder(databaseItems: DatabaseItem[]): Promise { + await Promise.all( + databaseItems.map((dbItem) => env.openExternal(dbItem.databaseUri)), + ); + } + + /** + * Adds the source folder of a CodeQL database to the workspace. + * When a database is first added in the "Databases" view, its source folder is added to the workspace. + * If the source folder is removed from the workspace for some reason, we want to be able to re-add it if need be. + */ + private async handleAddSource(databaseItems: DatabaseItem[]): Promise { + for (const dbItem of databaseItems) { + await this.databaseManager.addDatabaseSourceArchiveFolder(dbItem); + } + } + + /** + * Return the current database directory. If we don't already have a + * current database, ask the user for one, and return that, or + * undefined if they cancel. + */ + public async getDatabaseItem( + progress: ProgressCallback, + ): Promise { + return await this.getDatabaseItemInternal(progress); + } + + /** + * Return the current database directory. If we don't already have a + * current database, ask the user for one, and return that, or + * undefined if they cancel. + * + * Unlike `getDatabaseItem()`, this function does not require the caller to pass in a progress + * context. If `progress` is `undefined`, then this command will create a new progress + * notification if it tries to perform any long-running operations. + */ + private async getDatabaseItemInternal( + progress: ProgressCallback | undefined, + ): Promise { + if (this.databaseManager.currentDatabaseItem === undefined) { + progress?.({ + maxStep: 2, + step: 1, + message: "Choosing database", + }); + await this.promptForDatabase(); + } + return this.databaseManager.currentDatabaseItem; + } + + private async promptForDatabase(): Promise { + // If there aren't any existing databases, + // don't bother asking the user if they want to pick one. + if (this.databaseManager.databaseItems.length === 0) { + return this.importNewDatabase(); + } + + const quickPickItems: DatabaseSelectionQuickPickItem[] = [ + { + label: "$(database) Existing database", + detail: "Select an existing database from your workspace", + alwaysShow: true, + databaseKind: "existing", + }, + { + label: "$(arrow-down) New database", + detail: + "Import a new database from GitHub, a URL, or your local machine...", + alwaysShow: true, + databaseKind: "new", + }, + ]; + const selectedOption = + await window.showQuickPick( + quickPickItems, + { + placeHolder: "Select an option", + ignoreFocusOut: true, + }, + ); + + if (!selectedOption) { + throw new UserCancellationException("No database selected", true); + } + + if (selectedOption.databaseKind === "existing") { + await this.selectExistingDatabase(); + } else if (selectedOption.databaseKind === "new") { + await this.importNewDatabase(); + } + } + + private async selectExistingDatabase() { + const dbItems: DatabaseQuickPickItem[] = + this.databaseManager.databaseItems.map((dbItem) => ({ + label: dbItem.name, + description: getLanguageDisplayName(dbItem.language), + databaseItem: dbItem, + })); + + const selectedDatabase = await window.showQuickPick(dbItems, { + placeHolder: "Select an existing database from your workspace...", + ignoreFocusOut: true, + }); + + if (!selectedDatabase) { + throw new UserCancellationException("No database selected", true); + } + + await this.databaseManager.setCurrentDatabaseItem( + selectedDatabase.databaseItem, + ); + } + + private async importNewDatabase() { + const importOptions: DatabaseImportQuickPickItems[] = [ + { + label: "$(github) GitHub", + detail: "Import a database from a GitHub repository", + alwaysShow: true, + importType: "github", + }, + { + label: "$(link) URL", + detail: "Import a database archive or folder from a remote URL", + alwaysShow: true, + importType: "URL", + }, + { + label: "$(file-zip) Archive", + detail: "Import a database from a local ZIP archive", + alwaysShow: true, + importType: "archive", + }, + { + label: "$(folder) Folder", + detail: "Import a database from a local folder", + alwaysShow: true, + importType: "folder", + }, + ]; + const selectedImportOption = + await window.showQuickPick(importOptions, { + placeHolder: + "Import a new database from GitHub, a URL, or your local machine...", + ignoreFocusOut: true, + }); + if (!selectedImportOption) { + throw new UserCancellationException("No database selected", true); + } + if (selectedImportOption.importType === "github") { + await this.handleChooseDatabaseGithub(); + } else if (selectedImportOption.importType === "URL") { + await this.handleChooseDatabaseInternet(); + } else if (selectedImportOption.importType === "archive") { + await this.handleChooseDatabaseArchive(); + } else if (selectedImportOption.importType === "folder") { + await this.handleChooseDatabaseFolder(); + } + } + + /** + * Import database from uri. Returns the imported database, or `undefined` if the + * operation was unsuccessful or canceled. + */ + private async importDatabase( + uri: Uri, + byFolder: boolean, + progress: ProgressCallback, + ): Promise { + if (byFolder && !uri.fsPath.endsWith(".testproj")) { + const fixedUri = await this.fixDbUri(uri); + // we are selecting a database folder + return await this.databaseManager.openDatabase(fixedUri, { + type: "folder", + }); + } else { + // we are selecting a database archive or a .testproj. + // Unzip archives (if an archive) and copy into a workspace-controlled area + // before importing. + return await this.databaseFetcher.importLocalDatabase( + uri.toString(true), + progress, + ); + } + } + + /** + * Ask the user for a database directory. Returns the chosen database, or `undefined` if the + * operation was canceled. + */ + private async chooseAndSetDatabase( + byFolder: boolean, + progress: ProgressCallback, + ): Promise { + const uri = await chooseDatabaseDir(byFolder); + if (!uri) { + return undefined; + } + + return await this.importDatabase(uri, byFolder, progress); + } + + /** + * Ask the user for a parent directory that contains all databases. + * Returns all valid databases, or `undefined` if the operation was canceled. + */ + private async chooseDatabasesParentFolder( + progress: ProgressCallback, + ): Promise { + const uri = await chooseDatabaseDir(true); + if (!uri) { + return undefined; + } + + const databases: DatabaseItem[] = []; + const failures: string[] = []; + const entries = await workspace.fs.readDirectory(uri); + const validFileTypes = [FileType.File, FileType.Directory]; + + for (const [index, entry] of entries.entries()) { + progress({ + step: index + 1, + maxStep: entries.length, + message: `Importing '${entry[0]}'`, + }); + + const subProgress: ProgressCallback = (p) => { + progress({ + step: index + 1, + maxStep: entries.length, + message: `Importing '${entry[0]}': (${p.step}/${p.maxStep}) ${p.message}`, + }); + }; + + if (!validFileTypes.includes(entry[1])) { + void this.app.logger.log( + `Skipping import for '${entry[0]}', invalid file type: ${entry[1]}`, + ); + continue; + } + + try { + const databaseUri = Uri.joinPath(uri, entry[0]); + void this.app.logger.log(`Importing from ${databaseUri.toString()}`); + + const database = await this.importDatabase( + databaseUri, + entry[1] === FileType.Directory, + subProgress, + ); + if (database) { + databases.push(database); + } else { + failures.push(entry[0]); + } + } catch (e) { + failures.push(`${entry[0]}: ${getErrorMessage(e)}`.trim()); + } + } + + if (failures.length) { + void showAndLogErrorMessage( + this.app.logger, + `Failed to import ${failures.length} database(s), successfully imported ${databases.length} database(s).`, + { + fullMessage: `Failed to import ${failures.length} database(s), successfully imported ${databases.length} database(s).\nFailed databases:\n - ${failures.join("\n - ")}`, + }, + ); + } else if (databases.length === 0) { + void showAndLogErrorMessage( + this.app.logger, + `No database folder to import.`, + ); + return undefined; + } else { + void showAndLogInformationMessage( + this.app.logger, + `Successfully imported ${databases.length} database(s).`, + ); + } + + return databases; + } + + /** + * Perform some heuristics to ensure a proper database location is chosen. + * + * 1. If the selected URI to add is a file, choose the containing directory + * 2. If the selected URI appears to be a db language folder, choose the containing directory + * 3. choose the current directory + * + * @param uri a URI that is a database folder or inside it + * + * @return the actual database folder found by using the heuristics above. + */ + private async fixDbUri(uri: Uri): Promise { + let dbPath = uri.fsPath; + if ((await stat(dbPath)).isFile()) { + dbPath = path_dirname(dbPath); + } + + if (await isLikelyDbLanguageFolder(dbPath)) { + dbPath = path_dirname(dbPath); + } + return Uri.file(dbPath); + } +} diff --git a/extensions/ql-vscode/src/databases/local-databases/database-contents.ts b/extensions/ql-vscode/src/databases/local-databases/database-contents.ts new file mode 100644 index 00000000000..8d74fc071f4 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-contents.ts @@ -0,0 +1,56 @@ +import { pathExists, remove } from "fs-extra"; +import { join } from "path"; +import type { Uri } from "vscode"; +import { zip } from "zip-a-folder"; + +/** + * The layout of the database. + */ +export enum DatabaseKind { + /** A CodeQL database */ + Database, + /** A raw QL dataset */ + RawDataset, +} + +export interface DatabaseContents { + /** The layout of the database */ + kind: DatabaseKind; + /** + * The name of the database. + */ + name: string; + /** The URI of the QL dataset within the database. */ + datasetUri: Uri; + /** The URI of the source archive within the database, if one exists. */ + sourceArchiveUri?: Uri; + /** The URI of the CodeQL database scheme within the database, if exactly one exists. */ + dbSchemeUri?: Uri; +} + +export interface DatabaseContentsWithDbScheme extends DatabaseContents { + dbSchemeUri: Uri; // Always present +} + +/** + * Databases created by the old odasa tool will not have a zipped + * source location. However, this extension works better if sources + * are zipped. + * + * This function ensures that the source location is zipped. If the + * `src` folder exists and the `src.zip` file does not, the `src` + * folder will be zipped and then deleted. + * + * @param databasePath The full path to the unzipped database + */ +export async function ensureZippedSourceLocation( + databasePath: string, +): Promise { + const srcFolderPath = join(databasePath, "src"); + const srcZipPath = `${srcFolderPath}.zip`; + + if ((await pathExists(srcFolderPath)) && !(await pathExists(srcZipPath))) { + await zip(srcFolderPath, srcZipPath); + await remove(srcFolderPath); + } +} diff --git a/extensions/ql-vscode/src/databases/local-databases/database-events.ts b/extensions/ql-vscode/src/databases/local-databases/database-events.ts new file mode 100644 index 00000000000..d41a9f31949 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-events.ts @@ -0,0 +1,23 @@ +import type { DatabaseItem } from "./database-item"; + +export enum DatabaseEventKind { + Add = "Add", + Remove = "Remove", + + // Fired when databases are refreshed from persisted state + Refresh = "Refresh", + + // Fired when the current database changes + Change = "Change", + + Rename = "Rename", +} + +export interface DatabaseChangedEvent { + kind: DatabaseEventKind; + item: DatabaseItem | undefined; + // If true, event handlers should consider the database manager + // to have been fully refreshed. Any state managed by the + // event handler should be fully refreshed as well. + fullRefresh: boolean; +} diff --git a/extensions/ql-vscode/src/databases/local-databases/database-item-impl.ts b/extensions/ql-vscode/src/databases/local-databases/database-item-impl.ts new file mode 100644 index 00000000000..dab6c01d98e --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-item-impl.ts @@ -0,0 +1,237 @@ +// Exported for testing +import type { CodeQLCliServer, DbInfo } from "../../codeql-cli/cli"; +import { Uri, workspace } from "vscode"; +import type { FullDatabaseOptions } from "./database-options"; +import { basename, dirname, extname, join } from "path"; +import { + decodeSourceArchiveUri, + encodeArchiveBasePath, + encodeSourceArchiveUri, + zipArchiveScheme, +} from "../../common/vscode/archive-filesystem-provider"; +import type { DatabaseItem, PersistedDatabaseItem } from "./database-item"; +import { isLikelyDatabaseRoot } from "./db-contents-heuristics"; +import { stat } from "fs-extra"; +import { containsPath, pathsEqual } from "../../common/files"; +import type { DatabaseContents } from "./database-contents"; +import type { DatabaseOrigin } from "./database-origin"; + +export class DatabaseItemImpl implements DatabaseItem { + // These are only public in the implementation, they are readonly in the interface + public error: Error | undefined = undefined; + public contents: DatabaseContents | undefined; + /** A cache of database info */ + private _dbinfo: DbInfo | undefined; + + public constructor( + public readonly databaseUri: Uri, + contents: DatabaseContents | undefined, + private options: FullDatabaseOptions, + ) { + this.contents = contents; + } + + public get name(): string { + if (this.options.displayName) { + return this.options.displayName; + } else if (this.contents) { + return this.contents.name; + } else { + return basename(this.databaseUri.fsPath); + } + } + + public set name(newName: string) { + this.options.displayName = newName; + } + + public get sourceArchive(): Uri | undefined { + if (this.ignoreSourceArchive || this.contents === undefined) { + return undefined; + } else { + return this.contents.sourceArchiveUri; + } + } + + private get ignoreSourceArchive(): boolean { + // Ignore the source archive for QLTest databases. + return extname(this.databaseUri.fsPath) === ".testproj"; + } + + public get dateAdded(): number | undefined { + return this.options.dateAdded; + } + + public get origin(): DatabaseOrigin | undefined { + return this.options.origin; + } + + public get extensionManagedLocation(): string | undefined { + return this.options.extensionManagedLocation; + } + + public resolveSourceFile(uriStr: string | undefined): Uri { + const sourceArchive = this.sourceArchive; + const uri = uriStr ? Uri.parse(uriStr, true) : undefined; + if (uri && uri.scheme !== "file") { + throw new Error( + `Invalid uri scheme in ${uriStr}. Only 'file' is allowed.`, + ); + } + if (!sourceArchive) { + if (uri) { + return uri; + } else { + return this.databaseUri; + } + } + + if (uri) { + const relativeFilePath = decodeURI(uri.path) + .replace(":", "_") + .replace(/^\/*/, ""); + if (sourceArchive.scheme === zipArchiveScheme) { + const zipRef = decodeSourceArchiveUri(sourceArchive); + const pathWithinSourceArchive = + zipRef.pathWithinSourceArchive === "/" + ? relativeFilePath + : `${zipRef.pathWithinSourceArchive}/${relativeFilePath}`; + return encodeSourceArchiveUri({ + pathWithinSourceArchive, + sourceArchiveZipPath: zipRef.sourceArchiveZipPath, + }); + } else { + let newPath = sourceArchive.path; + if (!newPath.endsWith("/")) { + // Ensure a trailing slash. + newPath += "/"; + } + newPath += relativeFilePath; + + return sourceArchive.with({ path: newPath }); + } + } else { + return sourceArchive; + } + } + + /** + * Gets the state of this database, to be persisted in the workspace state. + */ + public getPersistedState(): PersistedDatabaseItem { + return { + uri: this.databaseUri.toString(true), + options: this.options, + }; + } + + /** + * Holds if the database item refers to an exported snapshot + */ + public async hasMetadataFile(): Promise { + return await isLikelyDatabaseRoot(this.databaseUri.fsPath); + } + + /** + * Returns information about a database. + */ + private async getDbInfo(server: CodeQLCliServer): Promise { + if (this._dbinfo === undefined) { + this._dbinfo = await server.resolveDatabase(this.databaseUri.fsPath); + } + return this._dbinfo; + } + + /** + * Returns `sourceLocationPrefix` of database. Requires that the database + * has a `.dbinfo` file, which is the source of the prefix. + */ + public async getSourceLocationPrefix( + server: CodeQLCliServer, + ): Promise { + const dbInfo = await this.getDbInfo(server); + return dbInfo.sourceLocationPrefix; + } + + /** + * Returns path to dataset folder of database. + */ + public async getDatasetFolder(server: CodeQLCliServer): Promise { + const dbInfo = await this.getDbInfo(server); + return dbInfo.datasetFolder; + } + + public get language() { + return this.options.language || ""; + } + + /** + * Returns the root uri of the virtual filesystem for this database's source archive. + */ + public getSourceArchiveExplorerUri(): Uri { + const sourceArchive = this.sourceArchive; + if (sourceArchive === undefined || !sourceArchive.fsPath.endsWith(".zip")) { + throw new Error(this.verifyZippedSources()); + } + return encodeArchiveBasePath(sourceArchive.fsPath); + } + + /** + * Returns true if the database's source archive is in the workspace. + */ + public hasSourceArchiveInExplorer(): boolean { + return (workspace.workspaceFolders || []).some((folder) => + this.belongsToSourceArchiveExplorerUri(folder.uri), + ); + } + + public verifyZippedSources(): string | undefined { + const sourceArchive = this.sourceArchive; + if (sourceArchive === undefined) { + return `${this.name} has no source archive.`; + } + + if (!sourceArchive.fsPath.endsWith(".zip")) { + return `${this.name} has a source folder that is unzipped.`; + } + return; + } + + /** + * Holds if `uri` belongs to this database's source archive. + */ + public belongsToSourceArchiveExplorerUri(uri: Uri): boolean { + if (this.sourceArchive === undefined) { + return false; + } + return ( + uri.scheme === zipArchiveScheme && + decodeSourceArchiveUri(uri).sourceArchiveZipPath === + this.sourceArchive.fsPath + ); + } + + public async isAffectedByTest(testPath: string): Promise { + const databasePath = this.databaseUri.fsPath; + if (!databasePath.endsWith(".testproj")) { + return false; + } + try { + const stats = await stat(testPath); + if (stats.isDirectory()) { + return containsPath(testPath, databasePath); + } else { + // database for /one/two/three/test.ql is at /one/two/three/three.testproj + const testdir = dirname(testPath); + const testdirbase = basename(testdir); + return pathsEqual( + databasePath, + join(testdir, `${testdirbase}.testproj`), + ); + } + } catch { + // No information available for test path - assume database is unaffected. + return false; + } + } +} diff --git a/extensions/ql-vscode/src/databases/local-databases/database-item.ts b/extensions/ql-vscode/src/databases/local-databases/database-item.ts new file mode 100644 index 00000000000..72f5a37eed7 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-item.ts @@ -0,0 +1,100 @@ +import type { Uri } from "vscode"; +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import type { DatabaseContents } from "./database-contents"; +import type { DatabaseOptions } from "./database-options"; +import type { DatabaseOrigin } from "./database-origin"; + +/** An item in the list of available databases */ +export interface DatabaseItem { + /** The URI of the database */ + readonly databaseUri: Uri; + /** The name of the database to be displayed in the UI */ + name: string; + + /** The primary language of the database or empty string if unknown */ + readonly language: string; + /** The URI of the database's source archive, or `undefined` if no source archive is to be used. */ + readonly sourceArchive: Uri | undefined; + /** + * The contents of the database. + * Will be `undefined` if the database is invalid. Can be updated by calling `refresh()`. + */ + readonly contents: DatabaseContents | undefined; + + /** + * The date this database was added as a unix timestamp. Or undefined if we don't know. + */ + readonly dateAdded: number | undefined; + + /** + * The origin this database item was retrieved from or undefined if unknown. + */ + readonly origin: DatabaseOrigin | undefined; + + /** + * The location of the base storage location as managed by the extension, or undefined + * if unknown or not managed by the extension. + */ + readonly extensionManagedLocation: string | undefined; + + /** If the database is invalid, describes why. */ + readonly error: Error | undefined; + + /** + * Resolves a filename to its URI in the source archive. + * + * @param file Filename within the source archive. May be `undefined` to return a dummy file path. + */ + resolveSourceFile(file: string | undefined): Uri; + + /** + * Holds if the database item has a `.dbinfo` or `codeql-database.yml` file. + */ + hasMetadataFile(): Promise; + + /** + * Returns `sourceLocationPrefix` of exported database. + */ + getSourceLocationPrefix(server: CodeQLCliServer): Promise; + + /** + * Returns dataset folder of exported database. + */ + getDatasetFolder(server: CodeQLCliServer): Promise; + + /** + * Returns the root uri of the virtual filesystem for this database's source archive, + * as displayed in the filesystem explorer. + */ + getSourceArchiveExplorerUri(): Uri; + + /** + * Returns true if the database's source archive is in the workspace. + */ + hasSourceArchiveInExplorer(): boolean; + + /** + * Holds if `uri` belongs to this database's source archive. + */ + belongsToSourceArchiveExplorerUri(uri: Uri): boolean; + + /** + * Whether the database may be affected by test execution for the given path. + */ + isAffectedByTest(testPath: string): Promise; + + /** + * Gets the state of this database, to be persisted in the workspace state. + */ + getPersistedState(): PersistedDatabaseItem; + + /** + * Verifies that this database item has a zipped source folder. Returns an error message if it does not. + */ + verifyZippedSources(): string | undefined; +} + +export interface PersistedDatabaseItem { + uri: string; + options?: DatabaseOptions; +} diff --git a/extensions/ql-vscode/src/databases/local-databases/database-manager.ts b/extensions/ql-vscode/src/databases/local-databases/database-manager.ts new file mode 100644 index 00000000000..6847d1ad95a --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-manager.ts @@ -0,0 +1,847 @@ +import type { ExtensionContext } from "vscode"; +import vscode from "vscode"; +import type { Logger } from "../../common/logging"; +import { showAndLogExceptionWithTelemetry } from "../../common/logging"; +import { extLogger } from "../../common/logging/vscode"; +import { DisposableObject } from "../../common/disposable-object"; +import type { App } from "../../common/app"; +import type { QueryRunner } from "../../query-server"; +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import type { ProgressCallback } from "../../common/vscode/progress"; +import { withProgress } from "../../common/vscode/progress"; +import { + addDatabaseSourceToWorkspace, + getAutogenerateQlPacks, + isCodespacesTemplate, + setAutogenerateQlPacks, +} from "../../config"; +import { join } from "path"; +import type { FullDatabaseOptions } from "./database-options"; +import { DatabaseItemImpl } from "./database-item-impl"; +import { + showBinaryChoiceDialog, + showNeverAskAgainDialog, +} from "../../common/vscode/dialog"; +import { + getFirstWorkspaceFolder, + isFolderAlreadyInWorkspace, +} from "../../common/vscode/workspace-folders"; +import { + isQueryLanguage, + tryGetQueryLanguage, +} from "../../common/query-language"; +import { existsSync } from "fs"; +import { QlPackGenerator } from "../../local-queries/qlpack-generator"; +import { asError, getErrorMessage } from "../../common/helpers-pure"; +import type { DatabaseItem, PersistedDatabaseItem } from "./database-item"; +import { redactableError } from "../../common/errors"; +import { copy, remove, stat } from "fs-extra"; +import { containsPath } from "../../common/files"; +import type { DatabaseChangedEvent } from "./database-events"; +import { DatabaseEventKind } from "./database-events"; +import { DatabaseResolver } from "./database-resolver"; +import { telemetryListener } from "../../common/vscode/telemetry"; +import type { LanguageContextStore } from "../../language-context-store"; +import type { DatabaseOrigin } from "./database-origin"; +import { ensureZippedSourceLocation } from "./database-contents"; + +/** + * The name of the key in the workspaceState dictionary in which we + * persist the current database across sessions. + */ +const CURRENT_DB = "currentDatabase"; + +/** + * The name of the key in the workspaceState dictionary in which we + * persist the list of databases across sessions. + */ +const DB_LIST = "databaseList"; + +/** + * A promise that resolves to an event's result value when the event + * `event` fires. If waiting for the event takes too long (by default + * >1000ms) log a warning, and resolve to undefined. + */ +function eventFired( + event: vscode.Event, + eventName: string, + timeoutMs = 1000, +): Promise { + return new Promise((res, _rej) => { + const timeout = setTimeout(() => { + void extLogger.log( + `Waiting for event '${eventName}' timed out after ${timeoutMs}ms`, + ); + res(undefined); + dispose(); + }, timeoutMs); + const disposable = event((e) => { + res(e); + dispose(); + }); + function dispose() { + clearTimeout(timeout); + disposable.dispose(); + } + }); +} + +type OpenDatabaseOptions = { + /** + * A location that is managed by the extension. + */ + extensionManagedLocation?: string; + isTutorialDatabase?: boolean; + /** + * Whether to add a workspace folder containing the source archive to the workspace. Default is true. + */ + addSourceArchiveFolder?: boolean; +}; + +export class DatabaseManager extends DisposableObject { + private readonly _onDidChangeDatabaseItem = this.push( + new vscode.EventEmitter(), + ); + + readonly onDidChangeDatabaseItem = this._onDidChangeDatabaseItem.event; + + private readonly _onDidChangeCurrentDatabaseItem = this.push( + new vscode.EventEmitter(), + ); + readonly onDidChangeCurrentDatabaseItem = + this._onDidChangeCurrentDatabaseItem.event; + + private readonly _databaseItems: DatabaseItemImpl[] = []; + private _currentDatabaseItem: DatabaseItem | undefined = undefined; + + constructor( + private readonly ctx: ExtensionContext, + private readonly app: App, + private readonly qs: QueryRunner, + private readonly cli: CodeQLCliServer, + private readonly languageContext: LanguageContextStore, + public logger: Logger, + ) { + super(); + + qs.onStart(this.reregisterDatabases.bind(this)); + qs.onQueryRunStarting(this.maybeReimportTestDatabase.bind(this)); + + this.push( + this.languageContext.onLanguageContextChanged(async () => { + if ( + this.currentDatabaseItem !== undefined && + !this.languageContext.shouldInclude( + tryGetQueryLanguage(this.currentDatabaseItem.language), + ) + ) { + await this.setCurrentDatabaseItem(undefined); + } + }), + ); + } + + /** + * Creates a {@link DatabaseItem} for the specified database, and adds it to the list of open + * databases. + */ + public async openDatabase( + uri: vscode.Uri, + origin: DatabaseOrigin | undefined, + makeSelected = true, + displayName?: string, + { + extensionManagedLocation, + isTutorialDatabase = false, + addSourceArchiveFolder = addDatabaseSourceToWorkspace(), + }: OpenDatabaseOptions = {}, + ): Promise { + const databaseItem = await this.createDatabaseItem( + uri, + origin, + displayName, + extensionManagedLocation, + ); + + return await this.addExistingDatabaseItem( + databaseItem, + makeSelected, + isTutorialDatabase, + addSourceArchiveFolder, + ); + } + + /** + * Finds a test database that was originally imported from `uri`. + * A test database is creeated by the `codeql test run` command + * and ends with `.testproj`. + * @param uri The original location of the database + * @returns The first database item found that matches the uri + */ + public findTestDatabase(uri: vscode.Uri): DatabaseItem | undefined { + const originPath = uri.fsPath; + for (const item of this._databaseItems) { + if (item.origin?.type === "testproj" && item.origin.path === originPath) { + return item; + } + } + return undefined; + } + + public async maybeReimportTestDatabase( + databaseUri: vscode.Uri, + forceImport = false, + ): Promise { + const res = await this.isTestDatabaseOutdated(databaseUri); + if (!res) { + return; + } + const doit = + forceImport || + (await showBinaryChoiceDialog( + "This test database is outdated. Do you want to reimport it?", + )); + + if (doit) { + await this.reimportTestDatabase(databaseUri); + } + } + + /** + * Checks if the origin of the imported database is newer. + * The imported database must be a test database. + * @param databaseUri the URI of the imported database to check + * @returns true if both databases exist and the origin database is newer. + */ + private async isTestDatabaseOutdated( + databaseUri: vscode.Uri, + ): Promise { + const dbItem = this.findDatabaseItem(databaseUri); + if (dbItem === undefined || dbItem.origin?.type !== "testproj") { + return false; + } + + // Compare timestmps of the codeql-database.yml files of the original and the + // imported databases. + const originDbYml = join(dbItem.origin.path, "codeql-database.yml"); + const importedDbYml = join( + dbItem.databaseUri.fsPath, + "codeql-database.yml", + ); + + let originStat; + try { + originStat = await stat(originDbYml); + } catch { + // if there is an error here, assume that the origin database + // is no longer available. Safely ignore and do not try to re-import. + return false; + } + + try { + const importedStat = await stat(importedDbYml); + return originStat.mtimeMs > importedStat.mtimeMs; + } catch { + // If either of the files does not exist, we assume the origin is newer. + // This shouldn't happen unless the user manually deleted one of the files. + return true; + } + } + + /** + * Reimport the specified imported database from its origin. + * The imported databsae must be a testproj database. + * + * @param databaseUri the URI of the imported database to reimport + */ + private async reimportTestDatabase(databaseUri: vscode.Uri): Promise { + const dbItem = this.findDatabaseItem(databaseUri); + if (dbItem === undefined || dbItem.origin?.type !== "testproj") { + throw new Error(`Database ${databaseUri.toString()} is not a testproj.`); + } + + await this.removeDatabaseItem(dbItem); + await copy(dbItem.origin.path, databaseUri.fsPath); + await ensureZippedSourceLocation(databaseUri.fsPath); + const newDbItem = new DatabaseItemImpl(databaseUri, dbItem.contents, { + dateAdded: Date.now(), + language: dbItem.language, + origin: dbItem.origin, + extensionManagedLocation: dbItem.extensionManagedLocation, + }); + await this.addDatabaseItem(newDbItem); + await this.setCurrentDatabaseItem(newDbItem); + } + + /** + * Adds a {@link DatabaseItem} to the list of open databases, if that database is not already on + * the list. + * + * Typically, the item will have been created by {@link createOrOpenDatabaseItem} or {@link openDatabase}. + */ + private async addExistingDatabaseItem( + databaseItem: DatabaseItemImpl, + makeSelected: boolean, + isTutorialDatabase?: boolean, + addSourceArchiveFolder = addDatabaseSourceToWorkspace(), + ): Promise { + const existingItem = this.findDatabaseItem(databaseItem.databaseUri); + if (existingItem !== undefined) { + if (makeSelected) { + await this.setCurrentDatabaseItem(existingItem); + } + return existingItem; + } + + await this.addDatabaseItem(databaseItem); + if (makeSelected) { + await this.setCurrentDatabaseItem(databaseItem); + } + if (addSourceArchiveFolder) { + await this.addDatabaseSourceArchiveFolder(databaseItem); + } + + if (isCodespacesTemplate() && !isTutorialDatabase) { + await this.createSkeletonPacks(databaseItem); + } + + return databaseItem; + } + + /** + * Creates a {@link DatabaseItem} for the specified database, without adding it to the list of + * open databases. + */ + private async createDatabaseItem( + uri: vscode.Uri, + origin: DatabaseOrigin | undefined, + displayName: string | undefined, + extensionManagedLocation?: string, + ): Promise { + const contents = await DatabaseResolver.resolveDatabaseContents(uri); + const fullOptions: FullDatabaseOptions = { + // If a displayName is not passed in, the basename of folder containing the database is used. + displayName, + dateAdded: Date.now(), + language: await this.getPrimaryLanguage(uri.fsPath), + origin, + extensionManagedLocation, + }; + const databaseItem = new DatabaseItemImpl(uri, contents, fullOptions); + + return databaseItem; + } + + /** + * If the specified database is already on the list of open databases, returns that database's + * {@link DatabaseItem}. Otherwise, creates a new {@link DatabaseItem} without adding it to the + * list of open databases. + * + * The {@link DatabaseItem} can be added to the list of open databases later, via {@link addExistingDatabaseItem}. + */ + public async createOrOpenDatabaseItem( + uri: vscode.Uri, + origin: DatabaseOrigin | undefined, + ): Promise { + const existingItem = this.findDatabaseItem(uri); + if (existingItem !== undefined) { + // Use the one we already have. + return existingItem; + } + + // We don't add this to the list automatically, but the user can add it later. + return this.createDatabaseItem(uri, origin, undefined); + } + + public async createSkeletonPacks(databaseItem: DatabaseItem) { + if (databaseItem === undefined) { + void this.logger.log( + "Could not create QL pack because no database is selected. Please add a database.", + ); + return; + } + + if (databaseItem.language === "") { + void this.logger.log( + "Could not create skeleton QL pack because the selected database's language is not set.", + ); + return; + } + + if (!isQueryLanguage(databaseItem.language)) { + void this.logger.log( + "Could not create skeleton QL pack because the selected database's language is not supported.", + ); + return; + } + + const firstWorkspaceFolder = getFirstWorkspaceFolder(); + const folderName = `codeql-custom-queries-${databaseItem.language}`; + + const qlpackStoragePath = join(firstWorkspaceFolder, folderName); + + if ( + existsSync(qlpackStoragePath) || + isFolderAlreadyInWorkspace(folderName) + ) { + return; + } + + if (getAutogenerateQlPacks() === "never") { + return; + } + + const answer = await showNeverAskAgainDialog( + `We've noticed you don't have a CodeQL pack available to analyze this database. Can we set up a query pack for you?`, + ); + + if (answer === "No" || answer === undefined) { + return; + } + + if (answer === "No, and never ask me again") { + await setAutogenerateQlPacks("never"); + return; + } + + try { + const qlPackGenerator = new QlPackGenerator( + databaseItem.language, + this.cli, + qlpackStoragePath, + qlpackStoragePath, + ); + await qlPackGenerator.generate(); + } catch (e) { + void this.logger.log( + `Could not create skeleton QL pack: ${getErrorMessage(e)}`, + ); + } + } + + private async reregisterDatabases(progress: ProgressCallback) { + let completed = 0; + await Promise.all( + this._databaseItems.map(async (databaseItem) => { + await this.registerDatabase(databaseItem); + completed++; + progress({ + maxStep: this._databaseItems.length, + step: completed, + message: "Re-registering databases", + }); + }), + ); + } + + public async addDatabaseSourceArchiveFolder(item: DatabaseItem) { + // The folder may already be in workspace state from a previous + // session. If not, add it. + const index = this.getDatabaseWorkspaceFolderIndex(item); + if (index === -1) { + // Add that filesystem as a folder to the current workspace. + // + // It's important that we add workspace folders to the end, + // rather than beginning of the list, because the first + // workspace folder is special; if it gets updated, the entire + // extension host is restarted. (cf. + // https://github.com/microsoft/vscode/blob/e0d2ed907d1b22808c56127678fb436d604586a7/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts#L209-L214) + // + // This is undesirable, as we might be adding and removing many + // workspace folders as the user adds and removes databases. + const end = (vscode.workspace.workspaceFolders || []).length; + + const msg = item.verifyZippedSources(); + if (msg) { + void extLogger.log(`Could not add source folder because ${msg}`); + return; + } + + const uri = item.getSourceArchiveExplorerUri(); + void extLogger.log( + `Adding workspace folder for ${item.name} source archive at index ${end}`, + ); + if ((vscode.workspace.workspaceFolders || []).length < 2) { + // Adding this workspace folder makes the workspace + // multi-root, which may surprise the user. Let them know + // we're doing this. + void vscode.window.showInformationMessage( + `Adding workspace folder for source archive of database ${item.name}.`, + ); + } + vscode.workspace.updateWorkspaceFolders(end, 0, { + name: `[${item.name} source archive]`, + uri, + }); + // vscode api documentation says we must to wait for this event + // between multiple `updateWorkspaceFolders` calls. + await eventFired( + vscode.workspace.onDidChangeWorkspaceFolders, + "vscode.workspace.onDidChangeWorkspaceFolders", + ); + } + } + + private async createDatabaseItemFromPersistedState( + state: PersistedDatabaseItem, + ): Promise { + let displayName: string | undefined = undefined; + let dateAdded = undefined; + let language = undefined; + let origin = undefined; + let extensionManagedLocation = undefined; + if (state.options) { + if (typeof state.options.displayName === "string") { + displayName = state.options.displayName; + } + if (typeof state.options.dateAdded === "number") { + dateAdded = state.options.dateAdded; + } + language = state.options.language; + origin = state.options.origin; + extensionManagedLocation = state.options.extensionManagedLocation; + } + + const dbBaseUri = vscode.Uri.parse(state.uri, true); + if (language === undefined) { + // we haven't been successful yet at getting the language. try again + language = await this.getPrimaryLanguage(dbBaseUri.fsPath); + } + + const fullOptions: FullDatabaseOptions = { + displayName, + dateAdded, + language, + origin, + extensionManagedLocation, + }; + const item = new DatabaseItemImpl(dbBaseUri, undefined, fullOptions); + + // Avoid persisting the database state after adding since that should happen only after + // all databases have been added. + await this.addDatabaseItem(item, false); + return item; + } + + public async loadPersistedState(): Promise { + return withProgress(async (progress) => { + const currentDatabaseUri = + this.ctx.workspaceState.get(CURRENT_DB); + const databases = this.ctx.workspaceState.get( + DB_LIST, + [], + ); + let step = 0; + progress({ + maxStep: databases.length, + message: "Loading persisted databases", + step, + }); + try { + void this.logger.log( + `Found ${databases.length} persisted databases: ${databases + .map((db) => db.uri) + .join(", ")}`, + ); + for (const database of databases) { + progress({ + maxStep: databases.length, + message: `Loading ${database.options?.displayName || "databases"}`, + step: ++step, + }); + + const databaseItem = + await this.createDatabaseItemFromPersistedState(database); + try { + await this.refreshDatabase(databaseItem); + await this.registerDatabase(databaseItem); + if (currentDatabaseUri === database.uri) { + await this.setCurrentDatabaseItem(databaseItem, true); + } + void this.logger.log( + `Loaded database ${databaseItem.name} at URI ${database.uri}.`, + ); + } catch (e) { + // When loading from persisted state, leave invalid databases in the list. They will be + // marked as invalid, and cannot be set as the current database. + void this.logger.log( + `Error loading database ${database.uri}: ${getErrorMessage(e)}.`, + ); + } + } + await this.updatePersistedDatabaseList(); + } catch (e) { + // database list had an unexpected type - nothing to be done? + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(e), + )`Database list loading failed: ${getErrorMessage(e)}`, + ); + } + + void this.logger.log("Finished loading persisted databases."); + }); + } + + public get databaseItems(): readonly DatabaseItem[] { + return this._databaseItems; + } + + public get currentDatabaseItem(): DatabaseItem | undefined { + return this._currentDatabaseItem; + } + + public async setCurrentDatabaseItem( + item: DatabaseItem | undefined, + skipRefresh = false, + ): Promise { + if ( + !skipRefresh && + item !== undefined && + item instanceof DatabaseItemImpl + ) { + await this.refreshDatabase(item); // Will throw on invalid database. + } + if (this._currentDatabaseItem !== item) { + this._currentDatabaseItem = item; + this.updatePersistedCurrentDatabaseItem(); + + await this.app.commands.execute( + "setContext", + "codeQL.currentDatabaseItem", + item?.name, + ); + + this._onDidChangeCurrentDatabaseItem.fire({ + item, + kind: DatabaseEventKind.Change, + fullRefresh: false, + }); + } + } + + /** + * Returns the index of the workspace folder that corresponds to the source archive of `item` + * if there is one, and -1 otherwise. + */ + private getDatabaseWorkspaceFolderIndex(item: DatabaseItem): number { + return (vscode.workspace.workspaceFolders || []).findIndex((folder) => + item.belongsToSourceArchiveExplorerUri(folder.uri), + ); + } + + public findDatabaseItem(uri: vscode.Uri): DatabaseItem | undefined { + const uriString = uri.toString(true); + return this._databaseItems.find( + (item) => item.databaseUri.toString(true) === uriString, + ); + } + + public findDatabaseItemBySourceArchive( + uri: vscode.Uri, + ): DatabaseItem | undefined { + const uriString = uri.toString(true); + return this._databaseItems.find( + (item) => + item.sourceArchive && item.sourceArchive.toString(true) === uriString, + ); + } + + private async addDatabaseItem( + item: DatabaseItemImpl, + updatePersistedState = true, + ) { + this._databaseItems.push(item); + + if (updatePersistedState) { + await this.updatePersistedDatabaseList(); + } + + // Add this database item to the allow-list + // Database items reconstituted from persisted state + // will not have their contents yet. + if (item.contents?.datasetUri) { + await this.registerDatabase(item); + } + // note that we use undefined as the item in order to reset the entire tree + this._onDidChangeDatabaseItem.fire({ + item, + kind: DatabaseEventKind.Add, + fullRefresh: true, + }); + } + + public async renameDatabaseItem(item: DatabaseItem, newName: string) { + item.name = newName; + await this.updatePersistedDatabaseList(); + this._onDidChangeDatabaseItem.fire({ + item, + kind: DatabaseEventKind.Rename, + fullRefresh: true, + }); + } + + public async removeDatabaseItem(item: DatabaseItem) { + if (this._currentDatabaseItem === item) { + this._currentDatabaseItem = undefined; + } + const index = this.databaseItems.findIndex( + (searchItem) => searchItem === item, + ); + if (index >= 0) { + this._databaseItems.splice(index, 1); + } + await this.updatePersistedDatabaseList(); + + // Delete folder from workspace, if it is still there + const folderIndex = (vscode.workspace.workspaceFolders || []).findIndex( + (folder) => item.belongsToSourceArchiveExplorerUri(folder.uri), + ); + if (folderIndex >= 0) { + void extLogger.log(`Removing workspace folder at index ${folderIndex}`); + vscode.workspace.updateWorkspaceFolders(folderIndex, 1); + } + + // Remove this database item from the allow-list + await this.deregisterDatabase(item); + + // Find whether we know directly which directory we should remove + const directoryToRemove = item.extensionManagedLocation + ? vscode.Uri.file(item.extensionManagedLocation) + : item.databaseUri; + + // Delete folder from file system only if it is controlled by the extension + if (this.isExtensionControlledLocation(directoryToRemove)) { + void extLogger.log("Deleting database from filesystem."); + await remove(directoryToRemove.fsPath).then( + () => void extLogger.log(`Deleted '${directoryToRemove.fsPath}'`), + (e: unknown) => + void extLogger.log( + `Failed to delete '${ + directoryToRemove.fsPath + }'. Reason: ${getErrorMessage(e)}`, + ), + ); + } + + this._onDidChangeDatabaseItem.fire({ + item, + kind: DatabaseEventKind.Remove, + fullRefresh: true, + }); + } + + public async removeAllDatabases() { + for (const item of this.databaseItems) { + await this.removeDatabaseItem(item); + } + } + + public async runWithDatabaseInSeparateQueryRunner( + queryRunner: QueryRunner, + whatToDo: () => Promise, + ) { + try { + if (this._currentDatabaseItem) { + const dbItem = this._currentDatabaseItem; + await this.qs.deregisterDatabase(dbItem); + await queryRunner.registerDatabase(dbItem); + } + await whatToDo(); + if (this._currentDatabaseItem) { + const dbItem = this._currentDatabaseItem; + await queryRunner.deregisterDatabase(dbItem); + await this.qs.registerDatabase(dbItem); + } + } catch (e) { + const message = getErrorMessage(e); + if (message === "Connection is disposed.") { + // This is expected if the query server is not running. + void extLogger.log( + `Could not use database for warming overlay-base cache because query server is not running.`, + ); + return; + } + throw e; + } + } + + private async deregisterDatabase(dbItem: DatabaseItem) { + try { + await this.qs.deregisterDatabase(dbItem); + } catch (e) { + const message = getErrorMessage(e); + if (message === "Connection is disposed.") { + // This is expected if the query server is not running. + void extLogger.log( + `Could not de-register database '${dbItem.name}' because query server is not running.`, + ); + return; + } + throw e; + } + } + private async registerDatabase(dbItem: DatabaseItem) { + await this.qs.registerDatabase(dbItem); + } + + /** + * Resolves the contents of the database. + * + * @remarks + * The contents include the database directory, source archive, and metadata about the database. + * If the database is invalid, `databaseItem.error` is updated with the error object that describes why + * the database is invalid. This error is also thrown. + */ + private async refreshDatabase(databaseItem: DatabaseItemImpl) { + try { + try { + databaseItem.contents = await DatabaseResolver.resolveDatabaseContents( + databaseItem.databaseUri, + ); + databaseItem.error = undefined; + } catch (e) { + databaseItem.contents = undefined; + databaseItem.error = asError(e); + throw e; + } + } finally { + this._onDidChangeDatabaseItem.fire({ + kind: DatabaseEventKind.Refresh, + item: databaseItem, + fullRefresh: false, + }); + } + } + + private updatePersistedCurrentDatabaseItem(): void { + void this.ctx.workspaceState.update( + CURRENT_DB, + this._currentDatabaseItem + ? this._currentDatabaseItem.databaseUri.toString(true) + : undefined, + ); + } + + private async updatePersistedDatabaseList(): Promise { + await this.ctx.workspaceState.update( + DB_LIST, + this._databaseItems.map((item) => item.getPersistedState()), + ); + } + + private isExtensionControlledLocation(uri: vscode.Uri) { + const storageUri = this.ctx.storageUri || this.ctx.globalStorageUri; + if (storageUri) { + return containsPath(storageUri.fsPath, uri.fsPath); + } + return false; + } + + private async getPrimaryLanguage(dbPath: string) { + const dbInfo = await this.cli.resolveDatabase(dbPath); + return dbInfo.languages?.[0] || ""; + } +} diff --git a/extensions/ql-vscode/src/databases/local-databases/database-options.ts b/extensions/ql-vscode/src/databases/local-databases/database-options.ts new file mode 100644 index 00000000000..25b8e6a4bf4 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-options.ts @@ -0,0 +1,16 @@ +import type { DatabaseOrigin } from "./database-origin"; + +export interface DatabaseOptions { + displayName?: string; + dateAdded?: number | undefined; + language?: string; + origin?: DatabaseOrigin; + extensionManagedLocation?: string; +} + +export interface FullDatabaseOptions extends DatabaseOptions { + dateAdded: number | undefined; + language: string | undefined; + origin: DatabaseOrigin | undefined; + extensionManagedLocation: string | undefined; +} diff --git a/extensions/ql-vscode/src/databases/local-databases/database-origin.ts b/extensions/ql-vscode/src/databases/local-databases/database-origin.ts new file mode 100644 index 00000000000..e81caafc9f6 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-origin.ts @@ -0,0 +1,38 @@ +interface DatabaseOriginFolder { + type: "folder"; +} + +interface DatabaseOriginArchive { + type: "archive"; + path: string; +} + +interface DatabaseOriginGitHub { + type: "github"; + repository: string; + databaseId: number; + databaseCreatedAt: string; + commitOid: string | null; +} + +interface DatabaseOriginInternet { + type: "url"; + url: string; +} + +interface DatabaseOriginDebugger { + type: "debugger"; +} + +interface DatabaseOriginTestProj { + type: "testproj"; + path: string; +} + +export type DatabaseOrigin = + | DatabaseOriginFolder + | DatabaseOriginArchive + | DatabaseOriginGitHub + | DatabaseOriginInternet + | DatabaseOriginDebugger + | DatabaseOriginTestProj; diff --git a/extensions/ql-vscode/src/databases/local-databases/database-resolver.ts b/extensions/ql-vscode/src/databases/local-databases/database-resolver.ts new file mode 100644 index 00000000000..d14a0a1f7c8 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/database-resolver.ts @@ -0,0 +1,147 @@ +import { Uri } from "vscode"; +import { pathExists } from "fs-extra"; +import { basename, join, resolve } from "path"; +import type { + DatabaseContents, + DatabaseContentsWithDbScheme, +} from "./database-contents"; +import { DatabaseKind } from "./database-contents"; +import { glob } from "glob"; +import { encodeArchiveBasePath } from "../../common/vscode/archive-filesystem-provider"; +import { + showAndLogInformationMessage, + showAndLogWarningMessage, +} from "../../common/logging"; +import { extLogger } from "../../common/logging/vscode"; + +export class DatabaseResolver { + public static async resolveDatabaseContents( + uri: Uri, + ): Promise { + if (uri.scheme !== "file") { + throw new Error( + `Database URI scheme '${uri.scheme}' not supported; only 'file' URIs are supported.`, + ); + } + const databasePath = uri.fsPath; + if (!(await pathExists(databasePath))) { + throw new InvalidDatabaseError( + `Database '${databasePath}' does not exist.`, + ); + } + + const contents = await this.resolveDatabase(databasePath); + + if (contents === undefined) { + throw new InvalidDatabaseError( + `'${databasePath}' is not a valid database.`, + ); + } + + // Look for a single dbscheme file within the database. + // This should be found in the dataset directory, regardless of the form of database. + const dbPath = contents.datasetUri.fsPath; + const dbSchemeFiles = await getDbSchemeFiles(dbPath); + if (dbSchemeFiles.length === 0) { + throw new InvalidDatabaseError( + `Database '${databasePath}' does not contain a CodeQL dbscheme under '${dbPath}'.`, + ); + } else if (dbSchemeFiles.length > 1) { + throw new InvalidDatabaseError( + `Database '${databasePath}' contains multiple CodeQL dbschemes under '${dbPath}'.`, + ); + } else { + const dbSchemeUri = Uri.file(resolve(dbPath, dbSchemeFiles[0])); + return { + ...contents, + dbSchemeUri, + }; + } + } + + public static async resolveDatabase( + databasePath: string, + ): Promise { + const name = basename(databasePath); + + // Look for dataset and source archive. + const datasetUri = await findDataset(databasePath); + const sourceArchiveUri = await findSourceArchive(databasePath); + + return { + kind: DatabaseKind.Database, + name, + datasetUri, + sourceArchiveUri, + }; + } +} + +/** + * An error thrown when we cannot find a valid database in a putative + * database directory. + */ +class InvalidDatabaseError extends Error {} + +async function findDataset(parentDirectory: string): Promise { + /* + * Look directly in the root + */ + let dbRelativePaths = await glob("db-*/", { + cwd: parentDirectory, + }); + + if (dbRelativePaths.length === 0) { + /* + * Check If they are in the old location + */ + dbRelativePaths = await glob("working/db-*/", { + cwd: parentDirectory, + }); + } + if (dbRelativePaths.length === 0) { + throw new InvalidDatabaseError( + `'${parentDirectory}' does not contain a dataset directory.`, + ); + } + + const dbAbsolutePath = join(parentDirectory, dbRelativePaths[0]); + if (dbRelativePaths.length > 1) { + void showAndLogWarningMessage( + extLogger, + `Found multiple dataset directories in database, using '${dbAbsolutePath}'.`, + ); + } + + return Uri.file(dbAbsolutePath); +} + +/** Gets the relative paths of all `.dbscheme` files in the given directory. */ +async function getDbSchemeFiles(dbDirectory: string): Promise { + return await glob("*.dbscheme", { cwd: dbDirectory }); +} + +// exported for testing +export async function findSourceArchive( + databasePath: string, +): Promise { + const relativePaths = ["src", "output/src_archive"]; + + for (const relativePath of relativePaths) { + const basePath = join(databasePath, relativePath); + const zipPath = `${basePath}.zip`; + + // Prefer using a zip archive over a directory. + if (await pathExists(zipPath)) { + return encodeArchiveBasePath(zipPath); + } else if (await pathExists(basePath)) { + return Uri.file(basePath); + } + } + + void showAndLogInformationMessage( + extLogger, + `Could not find source archive for database '${databasePath}'. Assuming paths are absolute.`, + ); + return undefined; +} diff --git a/extensions/ql-vscode/src/databases/local-databases/db-contents-heuristics.ts b/extensions/ql-vscode/src/databases/local-databases/db-contents-heuristics.ts new file mode 100644 index 00000000000..d76ac4e6571 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/db-contents-heuristics.ts @@ -0,0 +1,35 @@ +import { pathExists } from "fs-extra"; +import { basename, join } from "path"; +import { glob } from "glob"; + +/** + * The following functions al heuristically determine metadata about databases. + */ + +/** + * Heuristically determines if the directory passed in corresponds + * to a database root. A database root is a directory that contains + * a codeql-database.yml or (historically) a .dbinfo file. It also + * contains a folder starting with `db-`. + */ +export async function isLikelyDatabaseRoot(maybeRoot: string) { + const [a, b, c] = await Promise.all([ + // databases can have either .dbinfo or codeql-database.yml. + pathExists(join(maybeRoot, ".dbinfo")), + pathExists(join(maybeRoot, "codeql-database.yml")), + + // they *must* have a db-{language} folder + glob("db-*/", { cwd: maybeRoot }), + ]); + + return (a || b) && c.length > 0; +} + +/** + * A language folder is any folder starting with `db-` that is itself not a database root. + */ +export async function isLikelyDbLanguageFolder(dbPath: string) { + return ( + basename(dbPath).startsWith("db-") && !(await isLikelyDatabaseRoot(dbPath)) + ); +} diff --git a/extensions/ql-vscode/src/databases/local-databases/index.ts b/extensions/ql-vscode/src/databases/local-databases/index.ts new file mode 100644 index 00000000000..fbca66f647c --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/index.ts @@ -0,0 +1,11 @@ +export { + DatabaseContents, + DatabaseContentsWithDbScheme, + DatabaseKind, +} from "./database-contents"; +export { DatabaseChangedEvent, DatabaseEventKind } from "./database-events"; +export { DatabaseItem } from "./database-item"; +export { DatabaseItemImpl } from "./database-item-impl"; +export { DatabaseManager } from "./database-manager"; +export { DatabaseResolver } from "./database-resolver"; +export { DatabaseOptions, FullDatabaseOptions } from "./database-options"; diff --git a/extensions/ql-vscode/src/databases/local-databases/locations.ts b/extensions/ql-vscode/src/databases/local-databases/locations.ts new file mode 100644 index 00000000000..b5295f2ed21 --- /dev/null +++ b/extensions/ql-vscode/src/databases/local-databases/locations.ts @@ -0,0 +1,177 @@ +import { + Location, + Range, + Selection, + TextEditorRevealType, + ThemeColor, + Uri, + ViewColumn, + window as Window, + workspace, +} from "vscode"; +import { assertNever, getErrorMessage } from "../../common/helpers-pure"; +import type { Logger } from "../../common/logging"; +import type { DatabaseItem } from "./database-item"; +import type { DatabaseManager } from "./database-manager"; +import type { + UrlValueLineColumnLocation, + UrlValueResolvable, + UrlValueWholeFileLocation, +} from "../../common/raw-result-types"; + +const findMatchBackground = new ThemeColor("editor.findMatchBackground"); +const findRangeHighlightBackground = new ThemeColor( + "editor.findRangeHighlightBackground", +); + +export const shownLocationDecoration = Window.createTextEditorDecorationType({ + backgroundColor: findMatchBackground, +}); + +export const shownLocationLineDecoration = + Window.createTextEditorDecorationType({ + backgroundColor: findRangeHighlightBackground, + isWholeLine: true, + }); + +/** + * Resolves the specified CodeQL location to a URI into the source archive. + * @param loc CodeQL location to resolve. Must have a non-empty value for `loc.file`. + * @param databaseItem Database in which to resolve the file location, or `undefined` to resolve + * from the local file system. + */ +function resolveFivePartLocation( + loc: UrlValueLineColumnLocation, + databaseItem: DatabaseItem | undefined, +): Location { + // `Range` is a half-open interval, and is zero-based. CodeQL locations are closed intervals, and + // are one-based. Adjust accordingly. + const range = new Range( + Math.max(0, loc.startLine - 1), + Math.max(0, loc.startColumn - 1), + Math.max(0, loc.endLine - 1), + Math.max(1, loc.endColumn), + ); + + return new Location( + databaseItem?.resolveSourceFile(loc.uri) ?? Uri.parse(loc.uri), + range, + ); +} + +/** + * Resolves the specified CodeQL filesystem resource location to a URI into the source archive. + * @param loc CodeQL location to resolve, corresponding to an entire filesystem resource. Must have a non-empty value for `loc.file`. + * @param databaseItem Database in which to resolve the filesystem resource location. + */ +function resolveWholeFileLocation( + loc: UrlValueWholeFileLocation, + databaseItem: DatabaseItem | undefined, +): Location { + // A location corresponding to the start of the file. + const range = new Range(0, 0, 0, 0); + return new Location( + databaseItem?.resolveSourceFile(loc.uri) ?? Uri.parse(loc.uri), + range, + ); +} + +/** + * Try to resolve the specified CodeQL location to a URI into the source archive. If no exact location + * can be resolved, returns `undefined`. + * @param loc CodeQL location to resolve + * @param databaseItem Database in which to resolve the file location, or `undefined` to resolve + * from the local file system. + */ +export function tryResolveLocation( + loc: UrlValueResolvable | undefined, + databaseItem: DatabaseItem | undefined, +): Location | undefined { + if (!loc) { + return; + } + + switch (loc.type) { + case "wholeFileLocation": + return resolveWholeFileLocation(loc, databaseItem); + case "lineColumnLocation": + return resolveFivePartLocation(loc, databaseItem); + default: + assertNever(loc); + } +} + +export async function showResolvableLocation( + loc: UrlValueResolvable, + databaseItem: DatabaseItem | undefined, + logger: Logger, +): Promise { + try { + return showLocation(tryResolveLocation(loc, databaseItem)); + } catch (e) { + if (e instanceof Error && e.message.match(/File not found/)) { + void Window.showErrorMessage( + "Original file of this result is not in the database's source archive.", + ); + } else { + void logger.log(`Unable to jump to location: ${getErrorMessage(e)}`); + } + return null; + } +} + +export async function showLocation( + location?: Location, +): Promise { + if (!location) { + return null; + } + + const doc = await workspace.openTextDocument(location.uri); + const editorsWithDoc = Window.visibleTextEditors.filter( + (e) => e.document === doc, + ); + const editor = + editorsWithDoc.length > 0 + ? editorsWithDoc[0] + : await Window.showTextDocument(doc, { + // avoid preview mode so editor is sticky and will be added to navigation and search histories. + preview: false, + viewColumn: ViewColumn.One, + // Keep the focus on the results view so that the user can easily navigate to the next result. + preserveFocus: true, + }); + + const range = location.range; + // When highlighting the range, vscode's occurrence-match and bracket-match highlighting will + // trigger based on where we place the cursor/selection, and will compete for the user's attention. + // For reference: + // - Occurences are highlighted when the cursor is next to or inside a word or a whole word is selected. + // - Brackets are highlighted when the cursor is next to a bracket and there is an empty selection. + // - Multi-line selections explicitly highlight line-break characters, but multi-line decorators do not. + // + // For single-line ranges, select the whole range, mainly to disable bracket highlighting. + // For multi-line ranges, place the cursor at the beginning to avoid visual artifacts from selected line-breaks. + // Multi-line ranges are usually large enough to overshadow the noise from bracket highlighting. + const selectionEnd = + range.start.line === range.end.line ? range.end : range.start; + editor.selection = new Selection(range.start, selectionEnd); + editor.revealRange(range, TextEditorRevealType.InCenter); + editor.setDecorations(shownLocationDecoration, [range]); + editor.setDecorations(shownLocationLineDecoration, [range]); + + return location; +} + +export async function jumpToLocation( + databaseUri: string | undefined, + loc: UrlValueResolvable, + databaseManager: DatabaseManager, + logger: Logger, +): Promise { + const databaseItem = + databaseUri !== undefined + ? databaseManager.findDatabaseItem(Uri.parse(databaseUri)) + : undefined; + return showResolvableLocation(loc, databaseItem, logger); +} diff --git a/extensions/ql-vscode/src/databases/qlpack.ts b/extensions/ql-vscode/src/databases/qlpack.ts new file mode 100644 index 00000000000..fc82606560f --- /dev/null +++ b/extensions/ql-vscode/src/databases/qlpack.ts @@ -0,0 +1,130 @@ +import { window } from "vscode"; +import { glob } from "glob"; +import { basename } from "path"; +import { load } from "js-yaml"; +import { readFile } from "fs-extra"; +import { getQlPackFilePath } from "../common/ql"; +import type { CodeQLCliServer, QlpacksInfo } from "../codeql-cli/cli"; +import { extLogger } from "../common/logging/vscode"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; + +export interface QlPacksForLanguage { + /** The name of the pack containing the dbscheme. */ + dbschemePack: string; + /** `true` if `dbschemePack` is a library pack. */ + dbschemePackIsLibraryPack: boolean; + /** + * The name of the corresponding standard query pack. + * Only defined if `dbschemePack` is a library pack. + */ + queryPack?: string; +} + +interface QlPackWithPath { + packName: string; + packDir: string | undefined; +} + +async function findDbschemePack( + packs: QlPackWithPath[], + dbschemePath: string, +): Promise<{ name: string; isLibraryPack: boolean }> { + for (const { packDir, packName } of packs) { + if (packDir !== undefined) { + const qlpackPath = await getQlPackFilePath(packDir); + + if (qlpackPath !== undefined) { + const qlpack = load(await readFile(qlpackPath, "utf8")) as { + dbscheme?: string; + library?: boolean; + }; + if ( + qlpack.dbscheme !== undefined && + basename(qlpack.dbscheme) === basename(dbschemePath) + ) { + return { + name: packName, + isLibraryPack: qlpack.library === true, + }; + } + } + } + } + throw new Error(`Could not find qlpack file for dbscheme ${dbschemePath}`); +} + +function findStandardQueryPack( + qlpacks: QlpacksInfo, + dbschemePackName: string, +): string | undefined { + const matches = dbschemePackName.match(/^codeql\/(?[a-z]+)-all$/); + if (matches) { + const queryPackName = `codeql/${matches.groups!.language}-queries`; + if (qlpacks[queryPackName] !== undefined) { + return queryPackName; + } + } + + // Either the dbscheme pack didn't look like one where the queries might be in the query pack, or + // no query pack was found in the search path. Either is OK. + return undefined; +} + +export async function getQlPackForDbscheme( + cliServer: Pick, + dbschemePath: string, +): Promise { + const qlpacks = await cliServer.resolveQlpacks(getOnDiskWorkspaceFolders()); + const packs: QlPackWithPath[] = Object.entries(qlpacks).map( + ([packName, dirs]) => { + if (dirs.length < 1) { + void extLogger.log( + `In getQlPackFor ${dbschemePath}, qlpack ${packName} has no directories`, + ); + return { packName, packDir: undefined }; + } + if (dirs.length > 1) { + void extLogger.log( + `In getQlPackFor ${dbschemePath}, qlpack ${packName} has more than one directory; arbitrarily choosing the first`, + ); + } + return { + packName, + packDir: dirs[0], + }; + }, + ); + const dbschemePack = await findDbschemePack(packs, dbschemePath); + const queryPack = dbschemePack.isLibraryPack + ? findStandardQueryPack(qlpacks, dbschemePack.name) + : undefined; + return { + dbschemePack: dbschemePack.name, + dbschemePackIsLibraryPack: dbschemePack.isLibraryPack, + queryPack, + }; +} + +export async function getPrimaryDbscheme( + datasetFolder: string, +): Promise { + const dbschemes = await glob("*.dbscheme", { + cwd: datasetFolder, + }); + + if (dbschemes.length < 1) { + throw new Error( + `Can't find dbscheme for current database in ${datasetFolder}`, + ); + } + + dbschemes.sort(); + const dbscheme = dbschemes[0]; + + if (dbschemes.length > 1) { + void window.showErrorMessage( + `Found multiple dbschemes in ${datasetFolder} during quick query; arbitrarily choosing the first, ${dbscheme}, to decide what library to use.`, + ); + } + return dbscheme; +} diff --git a/extensions/ql-vscode/src/databases/ui/db-item-mapper.ts b/extensions/ql-vscode/src/databases/ui/db-item-mapper.ts new file mode 100644 index 00000000000..15743f6e3da --- /dev/null +++ b/extensions/ql-vscode/src/databases/ui/db-item-mapper.ts @@ -0,0 +1,42 @@ +import type { DbItem } from "../db-item"; +import { DbItemKind } from "../db-item"; +import type { DbTreeViewItem } from "./db-tree-view-item"; +import { + createDbTreeViewItemOwner, + createDbTreeViewItemRepo, + createDbTreeViewItemRoot, + createDbTreeViewItemSystemDefinedList, + createDbTreeViewItemUserDefinedList, +} from "./db-tree-view-item"; + +export function mapDbItemToTreeViewItem(dbItem: DbItem): DbTreeViewItem { + switch (dbItem.kind) { + case DbItemKind.RootRemote: + return createDbTreeViewItemRoot( + dbItem, + "remote", + "Remote databases", + dbItem.children.map((c) => mapDbItemToTreeViewItem(c)), + ); + + case DbItemKind.RemoteSystemDefinedList: + return createDbTreeViewItemSystemDefinedList( + dbItem, + dbItem.listDisplayName, + dbItem.listDescription, + ); + + case DbItemKind.RemoteUserDefinedList: + return createDbTreeViewItemUserDefinedList( + dbItem, + dbItem.listName, + dbItem.repos.map(mapDbItemToTreeViewItem), + ); + + case DbItemKind.RemoteOwner: + return createDbTreeViewItemOwner(dbItem, dbItem.ownerName); + + case DbItemKind.RemoteRepo: + return createDbTreeViewItemRepo(dbItem, dbItem.repoFullName); + } +} diff --git a/extensions/ql-vscode/src/databases/ui/db-panel.ts b/extensions/ql-vscode/src/databases/ui/db-panel.ts new file mode 100644 index 00000000000..dbc61469d5a --- /dev/null +++ b/extensions/ql-vscode/src/databases/ui/db-panel.ts @@ -0,0 +1,448 @@ +import type { QuickPickItem, TreeView, TreeViewExpansionEvent } from "vscode"; +import { Uri, window, workspace } from "vscode"; +import { + UserCancellationException, + withProgress, +} from "../../common/vscode/progress"; +import { + getNwoFromGitHubUrl, + isValidGitHubNwo, + getOwnerFromGitHubUrl, + isValidGitHubOwner, +} from "../../common/github-url-identifier-helper"; +import { DisposableObject } from "../../common/disposable-object"; +import type { DbItem, RemoteUserDefinedListDbItem } from "../db-item"; +import { DbItemKind } from "../db-item"; +import { getDbItemName } from "../db-item-naming"; +import type { DbManager } from "../db-manager"; +import { DbTreeDataProvider } from "./db-tree-data-provider"; +import type { DbTreeViewItem } from "./db-tree-view-item"; +import { getGitHubUrl } from "./db-tree-view-item-action"; +import { getControllerRepo } from "../../variant-analysis/run-remote-query"; +import { getErrorMessage } from "../../common/helpers-pure"; +import type { DatabasePanelCommands } from "../../common/commands"; +import type { App } from "../../common/app"; +import { QueryLanguage } from "../../common/query-language"; +import { getCodeSearchRepositories } from "../code-search-api"; +import { showAndLogErrorMessage } from "../../common/logging"; +import { getGitHubInstanceUrl } from "../../config"; + +export interface RemoteDatabaseQuickPickItem extends QuickPickItem { + remoteDatabaseKind: string; +} + +interface CodeSearchQuickPickItem extends QuickPickItem { + language: string; +} + +export class DbPanel extends DisposableObject { + private readonly dataProvider: DbTreeDataProvider; + private readonly treeView: TreeView; + + public constructor( + private readonly app: App, + private readonly dbManager: DbManager, + ) { + super(); + + this.dataProvider = new DbTreeDataProvider(dbManager); + + this.treeView = window.createTreeView("codeQLVariantAnalysisRepositories", { + treeDataProvider: this.dataProvider, + canSelectMany: false, + }); + + this.push( + this.treeView.onDidCollapseElement(async (e) => { + await this.onDidCollapseElement(e); + }), + ); + this.push( + this.treeView.onDidExpandElement(async (e) => { + await this.onDidExpandElement(e); + }), + ); + + this.push(this.treeView); + } + + public getCommands(): DatabasePanelCommands { + return { + "codeQLVariantAnalysisRepositories.openConfigFile": + this.openConfigFile.bind(this), + "codeQLVariantAnalysisRepositories.addNewDatabase": + this.addNewRemoteDatabase.bind(this), + "codeQLVariantAnalysisRepositories.addNewList": + this.addNewList.bind(this), + "codeQLVariantAnalysisRepositories.setupControllerRepository": + this.setupControllerRepository.bind(this), + + "codeQLVariantAnalysisRepositories.setSelectedItem": + this.setSelectedItem.bind(this), + "codeQLVariantAnalysisRepositories.setSelectedItemContextMenu": + this.setSelectedItem.bind(this), + "codeQLVariantAnalysisRepositories.openOnGitHubContextMenu": + this.openOnGitHub.bind(this), + "codeQLVariantAnalysisRepositories.renameItemContextMenu": + this.renameItem.bind(this), + "codeQLVariantAnalysisRepositories.removeItemContextMenu": + this.removeItem.bind(this), + "codeQLVariantAnalysisRepositories.importFromCodeSearch": + this.importFromCodeSearch.bind(this), + }; + } + + private async openConfigFile(): Promise { + const configPath = this.dbManager.getConfigPath(); + const document = await workspace.openTextDocument(configPath); + await window.showTextDocument(document); + } + + private async addNewRemoteDatabase(): Promise { + const highlightedItem = await this.getHighlightedDbItem(); + + if (highlightedItem?.kind === DbItemKind.RemoteUserDefinedList) { + await this.addNewRemoteRepo(highlightedItem.listName); + } else if ( + highlightedItem?.kind === DbItemKind.RemoteRepo && + highlightedItem.parentListName + ) { + await this.addNewRemoteRepo(highlightedItem.parentListName); + } else { + const quickPickItems: RemoteDatabaseQuickPickItem[] = [ + { + label: "$(repo) From a GitHub repository", + detail: "Add a variant analysis repository from GitHub", + alwaysShow: true, + remoteDatabaseKind: "repo", + }, + { + label: "$(organization) All repositories of a GitHub org or owner", + detail: + "Add a variant analysis list of repositories from a GitHub organization/owner", + alwaysShow: true, + remoteDatabaseKind: "owner", + }, + ]; + const databaseKind = + await window.showQuickPick( + quickPickItems, + { + title: "Add a variant analysis repository", + placeHolder: "Select an option", + ignoreFocusOut: true, + }, + ); + if (!databaseKind) { + // We don't need to display a warning pop-up in this case, since the user just escaped out of the operation. + // We set 'true' to make this a silent exception. + throw new UserCancellationException("No repository selected", true); + } + if (databaseKind.remoteDatabaseKind === "repo") { + await this.addNewRemoteRepo(); + } else if (databaseKind.remoteDatabaseKind === "owner") { + await this.addNewRemoteOwner(); + } + } + } + + private async addNewRemoteRepo(parentList?: string): Promise { + const instanceUrl = getGitHubInstanceUrl(); + + const repoName = await window.showInputBox({ + title: "Add a repository", + prompt: "Insert a GitHub repository URL or name with owner", + placeHolder: `/ or ${new URL("/", instanceUrl).toString()}/`, + }); + if (!repoName) { + return; + } + + const nwo = + getNwoFromGitHubUrl(repoName, getGitHubInstanceUrl()) || repoName; + if (!isValidGitHubNwo(nwo)) { + void showAndLogErrorMessage( + this.app.logger, + `Invalid GitHub repository: ${repoName}`, + ); + return; + } + + if (this.dbManager.doesRemoteRepoExist(nwo, parentList)) { + void showAndLogErrorMessage( + this.app.logger, + `The repository '${nwo}' already exists`, + ); + return; + } + + await this.dbManager.addNewRemoteRepo(nwo, parentList); + } + + private async addNewRemoteOwner(): Promise { + const instanceUrl = getGitHubInstanceUrl(); + + const ownerName = await window.showInputBox({ + title: "Add all repositories of a GitHub org or owner", + prompt: "Insert a GitHub organization or owner name", + placeHolder: ` or ${new URL("/", instanceUrl).toString()}`, + }); + + if (!ownerName) { + return; + } + + const owner = + getOwnerFromGitHubUrl(ownerName, getGitHubInstanceUrl()) || ownerName; + if (!isValidGitHubOwner(owner)) { + void showAndLogErrorMessage( + this.app.logger, + `Invalid user or organization: ${owner}`, + ); + return; + } + + if (this.dbManager.doesRemoteOwnerExist(owner)) { + void showAndLogErrorMessage( + this.app.logger, + `The owner '${owner}' already exists`, + ); + return; + } + + await this.dbManager.addNewRemoteOwner(owner); + } + + private async addNewList(): Promise { + const listName = await window.showInputBox({ + prompt: "Enter a name for the new list", + placeHolder: "example-list", + }); + if (listName === undefined || listName === "") { + return; + } + + if (this.dbManager.doesListExist(listName)) { + void showAndLogErrorMessage( + this.app.logger, + `The list '${listName}' already exists`, + ); + return; + } + + await this.dbManager.addNewList(listName); + } + + private async setSelectedItem(treeViewItem: DbTreeViewItem): Promise { + if (treeViewItem.dbItem === undefined) { + throw new Error( + "Not a selectable database item. Please select a valid item.", + ); + } + + // Optimistically update the UI to select the item that the user + // selected to avoid delay in the UI. + this.dataProvider.updateSelectedItem(treeViewItem); + + await this.dbManager.setSelectedDbItem(treeViewItem.dbItem); + } + + private async renameItem(treeViewItem: DbTreeViewItem): Promise { + const dbItem = treeViewItem.dbItem; + if (dbItem === undefined) { + throw new Error( + "Not a database item that can be renamed. Please select a valid item.", + ); + } + + const oldName = getDbItemName(dbItem); + + const newName = await window.showInputBox({ + prompt: "Enter the new name", + value: oldName, + }); + + if (newName === undefined || newName === "") { + return; + } + + if (dbItem.kind === DbItemKind.RemoteUserDefinedList) { + await this.renameVariantAnalysisUserDefinedListItem(dbItem, newName); + } else { + throw Error(`Action not allowed for the '${dbItem.kind}' db item kind`); + } + } + + private async renameVariantAnalysisUserDefinedListItem( + dbItem: RemoteUserDefinedListDbItem, + newName: string, + ): Promise { + if (dbItem.listName === newName) { + return; + } + + if (this.dbManager.doesListExist(newName)) { + void showAndLogErrorMessage( + this.app.logger, + `The list '${newName}' already exists`, + ); + return; + } + + await this.dbManager.renameList(dbItem, newName); + } + + private async removeItem(treeViewItem: DbTreeViewItem): Promise { + if (treeViewItem.dbItem === undefined) { + throw new Error( + "Not a removable database item. Please select a valid item.", + ); + } + await this.dbManager.removeDbItem(treeViewItem.dbItem); + } + + private async importFromCodeSearch( + treeViewItem: DbTreeViewItem, + ): Promise { + if (treeViewItem.dbItem?.kind !== DbItemKind.RemoteUserDefinedList) { + throw new Error("Please select a valid list to add code search results."); + } + + const listName = treeViewItem.dbItem.listName; + + const languageQuickPickItems: CodeSearchQuickPickItem[] = [ + { + label: "No specific language", + alwaysShow: true, + language: "", + }, + ].concat( + Object.values(QueryLanguage).map((language) => ({ + label: language.toString(), + alwaysShow: true, + language: language.toString(), + })), + ); + + const codeSearchLanguage = + await window.showQuickPick( + languageQuickPickItems, + { + title: "Select a language for your search", + placeHolder: "Select an option", + ignoreFocusOut: true, + }, + ); + if (!codeSearchLanguage) { + return; + } + + const languagePrompt = codeSearchLanguage.language + ? `language:${codeSearchLanguage.language}` + : ""; + + const codeSearchQuery = await window.showInputBox({ + title: "GitHub Code Search", + prompt: + "Use [GitHub's Code Search syntax](https://docs.github.com/en/search-github/searching-on-github/searching-code), to search for repositories.", + placeHolder: "org:github", + }); + if (codeSearchQuery === undefined || codeSearchQuery === "") { + return; + } + + await withProgress( + async (progress, token) => { + const repositories = await getCodeSearchRepositories( + `${codeSearchQuery} ${languagePrompt}`, + progress, + token, + this.app.credentials, + this.app.logger, + ); + + if (token.isCancellationRequested) { + throw new UserCancellationException("Code search cancelled.", true); + } + + progress({ + maxStep: 12, + step: 12, + message: "Processing results...", + }); + + await this.dbManager.addNewRemoteReposToList(repositories, listName); + }, + { + title: "Searching for repositories...", + cancellable: true, + }, + ); + } + + private async onDidCollapseElement( + event: TreeViewExpansionEvent, + ): Promise { + const dbItem = event.element.dbItem; + if (!dbItem) { + throw Error("Expected a database item."); + } + + await this.dbManager.removeDbItemFromExpandedState(event.element.dbItem); + } + + private async onDidExpandElement( + event: TreeViewExpansionEvent, + ): Promise { + const dbItem = event.element.dbItem; + if (!dbItem) { + throw Error("Expected a database item."); + } + + await this.dbManager.addDbItemToExpandedState(event.element.dbItem); + } + + /** + * Gets the currently highlighted database item in the tree view. + * The VS Code API calls this the "selection", but we already have a notion of selection + * (i.e. which item has a check mark next to it), so we call this "highlighted". + * + * @returns The highlighted database item, or `undefined` if no item is highlighted. + */ + private async getHighlightedDbItem(): Promise { + // You can only select one item at a time, so selection[0] gives the selection + return this.treeView.selection[0]?.dbItem; + } + + private async openOnGitHub(treeViewItem: DbTreeViewItem): Promise { + if (treeViewItem.dbItem === undefined) { + throw new Error("Unable to open on GitHub. Please select a valid item."); + } + const githubUrl = getGitHubUrl(treeViewItem.dbItem, getGitHubInstanceUrl()); + if (!githubUrl) { + throw new Error( + "Unable to open on GitHub. Please select a variant analysis repository or owner.", + ); + } + + await this.app.commands.execute("vscode.open", Uri.parse(githubUrl)); + } + + private async setupControllerRepository(): Promise { + try { + // This will also validate that the controller repository is valid + await getControllerRepo(this.app.credentials); + } catch (e) { + if (e instanceof UserCancellationException) { + return; + } + + void showAndLogErrorMessage( + this.app.logger, + `An error occurred while setting up the controller repository: ${getErrorMessage( + e, + )}`, + ); + } + } +} diff --git a/extensions/ql-vscode/src/databases/ui/db-selection-decoration-provider.ts b/extensions/ql-vscode/src/databases/ui/db-selection-decoration-provider.ts new file mode 100644 index 00000000000..014f41a82f9 --- /dev/null +++ b/extensions/ql-vscode/src/databases/ui/db-selection-decoration-provider.ts @@ -0,0 +1,24 @@ +import type { + CancellationToken, + FileDecoration, + FileDecorationProvider, + ProviderResult, + Uri, +} from "vscode"; +import { SELECTED_DB_ITEM_RESOURCE_URI } from "./db-tree-view-item"; + +export class DbSelectionDecorationProvider implements FileDecorationProvider { + provideFileDecoration( + uri: Uri, + _token: CancellationToken, + ): ProviderResult { + if (uri.toString(true) === SELECTED_DB_ITEM_RESOURCE_URI) { + return { + badge: "✓", + tooltip: "Currently selected", + }; + } + + return undefined; + } +} diff --git a/extensions/ql-vscode/src/databases/ui/db-tree-data-provider.ts b/extensions/ql-vscode/src/databases/ui/db-tree-data-provider.ts new file mode 100644 index 00000000000..8249af56472 --- /dev/null +++ b/extensions/ql-vscode/src/databases/ui/db-tree-data-provider.ts @@ -0,0 +1,124 @@ +import type { Event, ProviderResult, TreeDataProvider, TreeItem } from "vscode"; +import { EventEmitter } from "vscode"; +import type { DbTreeViewItem } from "./db-tree-view-item"; +import { createDbTreeViewItemError } from "./db-tree-view-item"; +import type { DbManager } from "../db-manager"; +import { mapDbItemToTreeViewItem } from "./db-item-mapper"; +import { DisposableObject } from "../../common/disposable-object"; +import type { DbConfigValidationError } from "../db-validation-errors"; +import { DbConfigValidationErrorKind } from "../db-validation-errors"; +import { VariantAnalysisConfigListener } from "../../config"; + +export class DbTreeDataProvider + extends DisposableObject + implements TreeDataProvider +{ + // This is an event to signal that there's been a change in the tree which + // will case the view to refresh. It is part of the TreeDataProvider interface. + public readonly onDidChangeTreeData: Event; + + private _onDidChangeTreeData = this.push( + new EventEmitter(), + ); + private dbTreeItems: DbTreeViewItem[]; + + private variantAnalysisConfig: VariantAnalysisConfigListener; + + public constructor(private readonly dbManager: DbManager) { + super(); + + this.variantAnalysisConfig = this.push(new VariantAnalysisConfigListener()); + this.variantAnalysisConfig.onDidChangeConfiguration(() => { + this.dbTreeItems = this.createTree(); + this._onDidChangeTreeData.fire(undefined); + }); + + this.dbTreeItems = this.createTree(); + this.onDidChangeTreeData = this._onDidChangeTreeData.event; + + dbManager.onDbItemsChanged(() => { + this.dbTreeItems = this.createTree(); + this._onDidChangeTreeData.fire(undefined); + }); + } + + /** + * Updates the selected item and re-renders the tree. + * @param selectedItem The item to select. + */ + public updateSelectedItem(selectedItem: DbTreeViewItem): void { + // Unselect all items + for (const item of this.dbTreeItems) { + item.setAsUnselected(); + } + + // Select the new item + selectedItem.setAsSelected(); + + // Re-render the tree + this._onDidChangeTreeData.fire(undefined); + } + + /** + * Called when expanding a node (including the root node). + * @param node The node to expand. + * @returns The children of the node. + */ + public getChildren(node?: DbTreeViewItem): ProviderResult { + if (!node) { + // We're at the root. + return Promise.resolve(this.dbTreeItems); + } else { + return Promise.resolve(node.children); + } + } + + /** + * Returns the UI presentation of the element that gets displayed in the view. + * @param node The node to represent. + * @returns The UI presentation of the node. + */ + public getTreeItem(node: DbTreeViewItem): TreeItem | Thenable { + return node; + } + + private createTree(): DbTreeViewItem[] { + // Returning an empty tree here will show the welcome view + if (!this.variantAnalysisConfig.controllerRepo) { + return []; + } + + const dbItemsResult = this.dbManager.getDbItems(); + + if (dbItemsResult.isFailure) { + return this.createErrorItems(dbItemsResult.errors); + } + + return dbItemsResult.value.map(mapDbItemToTreeViewItem); + } + + private createErrorItems( + errors: DbConfigValidationError[], + ): DbTreeViewItem[] { + if ( + errors.some( + (e) => + e.kind === DbConfigValidationErrorKind.InvalidJson || + e.kind === DbConfigValidationErrorKind.InvalidConfig, + ) + ) { + const errorTreeViewItem = createDbTreeViewItemError( + "Error when reading databases config", + "Please open your databases config and address errors", + ); + + return [errorTreeViewItem]; + } else { + return errors + .filter((e) => e.kind === DbConfigValidationErrorKind.DuplicateNames) + .map((e) => + createDbTreeViewItemError(e.message, "Please remove duplicates"), + ); + } + } +} diff --git a/extensions/ql-vscode/src/databases/ui/db-tree-view-item-action.ts b/extensions/ql-vscode/src/databases/ui/db-tree-view-item-action.ts new file mode 100644 index 00000000000..aa85e0450db --- /dev/null +++ b/extensions/ql-vscode/src/databases/ui/db-tree-view-item-action.ts @@ -0,0 +1,77 @@ +import type { DbItem } from "../db-item"; +import { DbItemKind, isSelectableDbItem } from "../db-item"; + +type DbTreeViewItemAction = + | "canBeSelected" + | "canBeRemoved" + | "canBeRenamed" + | "canBeOpenedOnGitHub" + | "canImportCodeSearch"; + +export function getDbItemActions(dbItem: DbItem): DbTreeViewItemAction[] { + const actions: DbTreeViewItemAction[] = []; + + if (canBeSelected(dbItem)) { + actions.push("canBeSelected"); + } + if (canBeRemoved(dbItem)) { + actions.push("canBeRemoved"); + } + if (canBeRenamed(dbItem)) { + actions.push("canBeRenamed"); + } + if (canBeOpenedOnGitHub(dbItem)) { + actions.push("canBeOpenedOnGitHub"); + } + if (canImportCodeSearch(dbItem)) { + actions.push("canImportCodeSearch"); + } + return actions; +} + +const dbItemKindsThatCanBeRemoved = [ + DbItemKind.RemoteUserDefinedList, + DbItemKind.RemoteRepo, + DbItemKind.RemoteOwner, +]; + +const dbItemKindsThatCanBeRenamed = [DbItemKind.RemoteUserDefinedList]; + +const dbItemKindsThatCanBeOpenedOnGitHub = [ + DbItemKind.RemoteOwner, + DbItemKind.RemoteRepo, +]; + +function canBeSelected(dbItem: DbItem): boolean { + return isSelectableDbItem(dbItem) && !dbItem.selected; +} + +function canBeRemoved(dbItem: DbItem): boolean { + return dbItemKindsThatCanBeRemoved.includes(dbItem.kind); +} + +function canBeRenamed(dbItem: DbItem): boolean { + return dbItemKindsThatCanBeRenamed.includes(dbItem.kind); +} + +function canBeOpenedOnGitHub(dbItem: DbItem): boolean { + return dbItemKindsThatCanBeOpenedOnGitHub.includes(dbItem.kind); +} + +function canImportCodeSearch(dbItem: DbItem): boolean { + return DbItemKind.RemoteUserDefinedList === dbItem.kind; +} + +export function getGitHubUrl( + dbItem: DbItem, + githubUrl: URL, +): string | undefined { + switch (dbItem.kind) { + case DbItemKind.RemoteOwner: + return new URL(`/${dbItem.ownerName}`, githubUrl).toString(); + case DbItemKind.RemoteRepo: + return new URL(`/${dbItem.repoFullName}`, githubUrl).toString(); + default: + return undefined; + } +} diff --git a/extensions/ql-vscode/src/databases/ui/db-tree-view-item.ts b/extensions/ql-vscode/src/databases/ui/db-tree-view-item.ts new file mode 100644 index 00000000000..c6280369c0f --- /dev/null +++ b/extensions/ql-vscode/src/databases/ui/db-tree-view-item.ts @@ -0,0 +1,154 @@ +import { + ThemeColor, + ThemeIcon, + TreeItem, + TreeItemCollapsibleState, + Uri, +} from "vscode"; +import type { + DbItem, + RemoteOwnerDbItem, + RemoteRepoDbItem, + RemoteSystemDefinedListDbItem, + RemoteUserDefinedListDbItem, + RootRemoteDbItem, +} from "../db-item"; +import { isSelectableDbItem } from "../db-item"; +import { getDbItemActions } from "./db-tree-view-item-action"; + +export const SELECTED_DB_ITEM_RESOURCE_URI = "codeql://databases?selected=true"; + +/** + * Represents an item in the database tree view. This item could be + * representing an actual database item or a warning. + */ +export class DbTreeViewItem extends TreeItem { + constructor( + // iconPath and tooltip must have those names because + // they are part of the vscode.TreeItem interface + + public readonly dbItem: DbItem | undefined, + public readonly iconPath: ThemeIcon | undefined, + public readonly label: string, + public readonly tooltip: string | undefined, + public readonly collapsibleState: TreeItemCollapsibleState, + public readonly children: DbTreeViewItem[], + ) { + super(label, collapsibleState); + + if (dbItem) { + this.contextValue = getContextValue(dbItem); + if (isSelectableDbItem(dbItem) && dbItem.selected) { + this.setAsSelected(); + } + } + } + + public setAsSelected(): void { + // Define the resource id to drive the UI to render this item as selected. + this.resourceUri = Uri.parse(SELECTED_DB_ITEM_RESOURCE_URI); + } + + public setAsUnselected(): void { + this.resourceUri = undefined; + } +} + +function getContextValue(dbItem: DbItem): string | undefined { + const actions = getDbItemActions(dbItem); + return actions.length > 0 ? actions.join(",") : undefined; +} + +export function createDbTreeViewItemError( + label: string, + tooltip: string, +): DbTreeViewItem { + return new DbTreeViewItem( + undefined, + new ThemeIcon("error", new ThemeColor("problemsErrorIcon.foreground")), + label, + tooltip, + TreeItemCollapsibleState.None, + [], + ); +} + +export function createDbTreeViewItemRoot( + dbItem: RootRemoteDbItem, + label: string, + tooltip: string, + children: DbTreeViewItem[], +): DbTreeViewItem { + return new DbTreeViewItem( + dbItem, + undefined, + label, + tooltip, + getCollapsibleState(dbItem.expanded), + children, + ); +} + +export function createDbTreeViewItemSystemDefinedList( + dbItem: RemoteSystemDefinedListDbItem, + label: string, + tooltip: string, +): DbTreeViewItem { + return new DbTreeViewItem( + dbItem, + new ThemeIcon("github"), + label, + tooltip, + TreeItemCollapsibleState.None, + [], + ); +} + +export function createDbTreeViewItemUserDefinedList( + dbItem: RemoteUserDefinedListDbItem, + listName: string, + children: DbTreeViewItem[], +): DbTreeViewItem { + return new DbTreeViewItem( + dbItem, + undefined, + listName, + undefined, + getCollapsibleState(dbItem.expanded), + children, + ); +} + +export function createDbTreeViewItemOwner( + dbItem: RemoteOwnerDbItem, + ownerName: string, +): DbTreeViewItem { + return new DbTreeViewItem( + dbItem, + new ThemeIcon("organization"), + ownerName, + undefined, + TreeItemCollapsibleState.None, + [], + ); +} + +export function createDbTreeViewItemRepo( + dbItem: RemoteRepoDbItem, + repoName: string, +): DbTreeViewItem { + return new DbTreeViewItem( + dbItem, + new ThemeIcon("cloud"), + repoName, + undefined, + TreeItemCollapsibleState.None, + [], + ); +} + +function getCollapsibleState(expanded: boolean): TreeItemCollapsibleState { + return expanded + ? TreeItemCollapsibleState.Expanded + : TreeItemCollapsibleState.Collapsed; +} diff --git a/extensions/ql-vscode/src/debugger/debug-configuration.ts b/extensions/ql-vscode/src/debugger/debug-configuration.ts new file mode 100644 index 00000000000..a7abdfb2d00 --- /dev/null +++ b/extensions/ql-vscode/src/debugger/debug-configuration.ts @@ -0,0 +1,136 @@ +import type { + CancellationToken, + DebugConfiguration, + DebugConfigurationProvider, + WorkspaceFolder, +} from "vscode"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import type { LocalQueries } from "../local-queries"; +import { getQuickEvalContext, validateQueryPath } from "../run-queries-shared"; +import type { LaunchConfig } from "./debug-protocol"; +import type { NotArray } from "../common/helpers-pure"; +import { getErrorMessage } from "../common/helpers-pure"; +import { showAndLogErrorMessage } from "../common/logging"; +import { extLogger } from "../common/logging/vscode"; + +/** + * The CodeQL launch arguments, as specified in "launch.json". + */ +export interface QLDebugArgs { + query?: string; + database?: string; + additionalPacks?: string[] | string; + extensionPacks?: string[] | string; + quickEval?: boolean; + noDebug?: boolean; + additionalRunQueryArgs?: Record; +} + +/** + * The debug configuration for a CodeQL configuration. + * + * This just combines `QLDebugArgs` with the standard debug configuration properties. + */ +export type QLDebugConfiguration = DebugConfiguration & QLDebugArgs; + +/** + * A CodeQL debug configuration after all variables and defaults have been resolved. This is what + * is passed to the debug adapter via the `launch` request. + */ +export type QLResolvedDebugConfiguration = DebugConfiguration & LaunchConfig; + +/** If the specified value is a single element, then turn it into an array containing that element. */ +function makeArray(value: T | T[]): T[] { + if (Array.isArray(value)) { + return value; + } else { + return [value]; + } +} + +/** + * Implementation of `DebugConfigurationProvider` for CodeQL. + */ +export class QLDebugConfigurationProvider + implements DebugConfigurationProvider +{ + public constructor(private readonly localQueries: LocalQueries) {} + + public resolveDebugConfiguration( + _folder: WorkspaceFolder | undefined, + debugConfiguration: DebugConfiguration, + _token?: CancellationToken, + ): DebugConfiguration { + const qlConfiguration = debugConfiguration; + + // Fill in defaults for properties whose default value is a command invocation. VS Code will + // invoke any commands to fill in actual values, then call + // `resolveDebugConfigurationWithSubstitutedVariables()`with the result. + const resultConfiguration: QLDebugConfiguration = { + ...qlConfiguration, + query: qlConfiguration.query ?? "${command:currentQuery}", + database: qlConfiguration.database ?? "${command:currentDatabase}", + }; + + return resultConfiguration; + } + + public async resolveDebugConfigurationWithSubstitutedVariables( + _folder: WorkspaceFolder | undefined, + debugConfiguration: DebugConfiguration, + _token?: CancellationToken, + ): Promise { + try { + const qlConfiguration = debugConfiguration as QLDebugConfiguration; + if (qlConfiguration.query === undefined) { + throw new Error("No query was specified in the debug configuration."); + } + if (qlConfiguration.database === undefined) { + throw new Error( + "No database was specified in the debug configuration.", + ); + } + + // Fill in defaults here, instead of in `resolveDebugConfiguration`, to avoid the highly + // unusual case where one of the computed default values looks like a variable substitution. + const additionalPacks = makeArray( + qlConfiguration.additionalPacks ?? getOnDiskWorkspaceFolders(), + ); + + // Default to computing the extension packs based on the extension configuration and the search + // path. + const extensionPacks = makeArray( + qlConfiguration.extensionPacks ?? + (await this.localQueries.getDefaultExtensionPacks(additionalPacks)), + ); + + const quickEval = qlConfiguration.quickEval ?? false; + validateQueryPath(qlConfiguration.query, quickEval); + + const quickEvalContext = quickEval + ? await getQuickEvalContext(undefined, false) + : undefined; + + const resultConfiguration: QLResolvedDebugConfiguration = { + name: qlConfiguration.name, + request: qlConfiguration.request, + type: qlConfiguration.type, + query: qlConfiguration.query, + database: qlConfiguration.database, + additionalPacks, + extensionPacks, + quickEvalContext, + noDebug: qlConfiguration.noDebug ?? false, + additionalRunQueryArgs: qlConfiguration.additionalRunQueryArgs ?? {}, + }; + + return resultConfiguration; + } catch (e) { + // Any unhandled exception will result in an OS-native error message box, which seems ugly. + // We'll just show a real VS Code error message, then return null to prevent the debug session + // from starting. + void showAndLogErrorMessage(extLogger, getErrorMessage(e)); + return null; + } + } +} diff --git a/extensions/ql-vscode/src/debugger/debug-protocol.ts b/extensions/ql-vscode/src/debugger/debug-protocol.ts new file mode 100644 index 00000000000..c24d72e412b --- /dev/null +++ b/extensions/ql-vscode/src/debugger/debug-protocol.ts @@ -0,0 +1,104 @@ +import type { DebugProtocol } from "@vscode/debugprotocol"; +import type { QueryResultType } from "../query-server/messages"; +import type { QuickEvalContext } from "../run-queries-shared"; + +// Events + +export type Event = { type: "event" }; + +export type StoppedEvent = DebugProtocol.StoppedEvent & + Event & { event: "stopped" }; + +export type InitializedEvent = DebugProtocol.InitializedEvent & + Event & { event: "initialized" }; + +export type ExitedEvent = DebugProtocol.ExitedEvent & + Event & { event: "exited" }; + +export type OutputEvent = DebugProtocol.OutputEvent & + Event & { event: "output" }; + +/** + * Custom event to provide additional information about a running evaluation. + */ +export interface EvaluationStartedEvent extends Event { + event: "codeql-evaluation-started"; + body: { + id: string; + outputDir: string; + quickEvalContext: QuickEvalContext | undefined; + }; +} + +/** + * Custom event to provide additional information about a completed evaluation. + */ +export interface EvaluationCompletedEvent extends Event { + event: "codeql-evaluation-completed"; + body: { + resultType: QueryResultType; + message: string | undefined; + evaluationTime: number; + outputBaseName: string; + }; +} + +export type AnyEvent = + | StoppedEvent + | ExitedEvent + | InitializedEvent + | OutputEvent + | EvaluationStartedEvent + | EvaluationCompletedEvent; + +// Requests + +export type Request = DebugProtocol.Request & { type: "request" }; + +export type InitializeRequest = DebugProtocol.InitializeRequest & + Request & { command: "initialize" }; + +export interface LaunchConfig { + /** Full path to query (.ql) file. */ + query: string; + /** Full path to the database directory. */ + database: string; + /** Full paths to `--additional-packs` directories. */ + additionalPacks: string[]; + /** Pack names of extension packs. */ + extensionPacks: string[]; + /** Optional quick evaluation context. */ + quickEvalContext: QuickEvalContext | undefined; + /** Run the query without debugging it. */ + noDebug: boolean; + /** Undocumented: Additional arguments to be passed to the `runQuery` API on the query server. */ + additionalRunQueryArgs: Record; +} + +export interface LaunchRequest extends Request, DebugProtocol.LaunchRequest { + type: "request"; + command: "launch"; + arguments: DebugProtocol.LaunchRequestArguments & LaunchConfig; +} + +export interface QuickEvalRequest extends Request { + command: "codeql-quickeval"; + arguments: { + quickEvalContext: QuickEvalContext; + }; +} + +export type AnyRequest = InitializeRequest | LaunchRequest | QuickEvalRequest; + +// Responses + +export type Response = DebugProtocol.Response & { type: "response" }; + +export type InitializeResponse = DebugProtocol.InitializeResponse & + Response & { command: "initialize" }; + +export type QuickEvalResponse = Response; + +export type AnyResponse = InitializeResponse | QuickEvalResponse; + +export type AnyProtocolMessage = AnyEvent | AnyRequest | AnyResponse; diff --git a/extensions/ql-vscode/src/debugger/debug-session.ts b/extensions/ql-vscode/src/debugger/debug-session.ts new file mode 100644 index 00000000000..64100a7831f --- /dev/null +++ b/extensions/ql-vscode/src/debugger/debug-session.ts @@ -0,0 +1,640 @@ +import { + ContinuedEvent, + Event, + ExitedEvent, + InitializedEvent, + LoggingDebugSession, + OutputEvent, + ProgressEndEvent, + StoppedEvent, + TerminatedEvent, +} from "@vscode/debugadapter"; +import type { DebugProtocol as Protocol } from "@vscode/debugprotocol"; +import type { Disposable } from "vscode"; +import { CancellationTokenSource } from "vscode-jsonrpc"; +import type { BaseLogger, LogOptions } from "../common/logging"; +import { queryServerLogger } from "../common/logging/vscode"; +import { QueryResultType } from "../query-server/messages"; +import type { + CoreQueryResult, + CoreQueryRun, + QueryRunner, +} from "../query-server"; +// eslint-disable-next-line import/no-namespace -- There are two different debug protocols, so we should make a distinction. +import type * as CodeQLProtocol from "./debug-protocol"; +import type { QuickEvalContext } from "../run-queries-shared"; +import { getErrorMessage } from "../common/helpers-pure"; +import { DisposableObject } from "../common/disposable-object"; +import { basename } from "path"; + +// More complete implementations of `Event` for certain events, because the classes from +// `@vscode/debugadapter` make it more difficult to provide some of the message values. + +class ProgressStartEvent extends Event implements Protocol.ProgressStartEvent { + public readonly event = "progressStart"; + public readonly body: { + progressId: string; + title: string; + requestId?: number; + cancellable?: boolean; + message?: string; + percentage?: number; + }; + + constructor( + progressId: string, + title: string, + message?: string, + percentage?: number, + ) { + super("progressStart"); + this.body = { + progressId, + title, + message, + percentage, + }; + } +} + +class ProgressUpdateEvent + extends Event + implements Protocol.ProgressUpdateEvent +{ + public readonly event = "progressUpdate"; + public readonly body: { + progressId: string; + message?: string; + percentage?: number; + }; + + constructor(progressId: string, message?: string, percentage?: number) { + super("progressUpdate"); + this.body = { + progressId, + message, + percentage, + }; + } +} + +class EvaluationStartedEvent + extends Event + implements CodeQLProtocol.EvaluationStartedEvent +{ + public readonly type = "event"; + public readonly event = "codeql-evaluation-started"; + public readonly body: CodeQLProtocol.EvaluationStartedEvent["body"]; + + constructor( + id: string, + outputDir: string, + quickEvalContext: QuickEvalContext | undefined, + ) { + super("codeql-evaluation-started"); + this.body = { + id, + outputDir, + quickEvalContext, + }; + } +} + +class EvaluationCompletedEvent + extends Event + implements CodeQLProtocol.EvaluationCompletedEvent +{ + public readonly type = "event"; + public readonly event = "codeql-evaluation-completed"; + public readonly body: CodeQLProtocol.EvaluationCompletedEvent["body"]; + + constructor(result: CoreQueryResult) { + super("codeql-evaluation-completed"); + this.body = result; + } +} + +/** + * Possible states of the debug session. Used primarily to guard against unexpected requests. + */ +type State = + | "uninitialized" + | "initialized" + | "running" + | "stopped" + | "terminated"; + +// IDs for error messages generated by the debug adapter itself. + +/** Received a DAP message while in an unexpected state. */ +const ERROR_UNEXPECTED_STATE = 1; + +/** ID of the "thread" that represents the query evaluation. */ +const QUERY_THREAD_ID = 1; + +/** The user-visible name of the query evaluation thread. */ +const QUERY_THREAD_NAME = "Evaluation thread"; + +/** + * An active query evaluation within a debug session. + * + * This class encapsulates the state and resources associated with the running query, to avoid + * having multiple properties within `QLDebugSession` that are only defined during query evaluation. + */ +class RunningQuery extends DisposableObject { + private readonly tokenSource = this.push(new CancellationTokenSource()); + public readonly queryRun: CoreQueryRun; + private readonly queryPath: string; + + public constructor( + queryRunner: QueryRunner, + config: CodeQLProtocol.LaunchConfig, + private readonly quickEvalContext: QuickEvalContext | undefined, + queryStorageDir: string, + private readonly logger: BaseLogger, + private readonly sendEvent: (event: Event) => void, + ) { + super(); + + this.queryPath = config.query; + // Create the query run, which will give us some information about the query even before the + // evaluation has completed. + this.queryRun = queryRunner.createQueryRun( + config.database, + [ + { + queryPath: this.queryPath, + outputBaseName: "results", + quickEvalPosition: quickEvalContext?.quickEvalPosition, + quickEvalCountOnly: quickEvalContext?.quickEvalCount, + }, + ], + true, + config.additionalPacks, + config.extensionPacks, + config.additionalRunQueryArgs, + queryStorageDir, + basename(config.query), + undefined, + ); + } + + public get id(): string { + return this.queryRun.id; + } + + /** + * Evaluates the query, firing progress events along the way. The evaluation can be cancelled by + * calling `cancel()`. + * + * This function does not throw exceptions to report query evaluation failure. It just returns an + * evaluation result with a failure message instead. + */ + public async evaluate(): Promise< + CodeQLProtocol.EvaluationCompletedEvent["body"] + > { + // Send the `EvaluationStarted` event first, to let the client known where the outputs are + // going to show up. + this.sendEvent( + new EvaluationStartedEvent( + this.queryRun.id, + this.queryRun.outputDir.querySaveDir, + this.quickEvalContext, + ), + ); + + try { + // Report progress via the debugger protocol. + const progressStart = new ProgressStartEvent( + this.queryRun.id, + "Running query", + undefined, + 0, + ); + progressStart.body.cancellable = true; + this.sendEvent(progressStart); + try { + const completedQuery = await this.queryRun.evaluate( + (p) => { + const progressUpdate = new ProgressUpdateEvent( + this.queryRun.id, + p.message, + (p.step * 100) / p.maxStep, + ); + this.sendEvent(progressUpdate); + }, + this.tokenSource.token, + this.logger, + ); + return ( + completedQuery.results.get(this.queryPath) ?? { + resultType: QueryResultType.OTHER_ERROR, + message: "Missing query results", + evaluationTime: 0, + outputBaseName: "unknown", + } + ); + } finally { + this.sendEvent(new ProgressEndEvent(this.queryRun.id)); + } + } catch (e) { + const message = getErrorMessage(e); + return { + resultType: QueryResultType.OTHER_ERROR, + message, + evaluationTime: 0, + outputBaseName: "unknown", + }; + } + } + + /** + * Attempts to cancel the running evaluation. + */ + public cancel(): void { + this.tokenSource.cancel(); + } +} + +/** + * An in-process implementation of the debug adapter for CodeQL queries. + * + * For now, this is pretty much just a wrapper around the query server. + */ +export class QLDebugSession extends LoggingDebugSession implements Disposable { + /** A `BaseLogger` that sends output to the debug console. */ + private readonly logger: BaseLogger = { + log: async (message: string, _options: LogOptions): Promise => { + // Only send the output event if we're still connected to the query evaluation. + if (this.runningQuery !== undefined) { + this.sendEvent(new OutputEvent(message, "console")); + } + }, + }; + private state: State = "uninitialized"; + private terminateOnComplete = false; + private args: CodeQLProtocol.LaunchRequest["arguments"] | undefined = + undefined; + private runningQuery: RunningQuery | undefined = undefined; + private lastResultType: QueryResultType = QueryResultType.CANCELLATION; + + constructor( + private readonly queryStorageDir: string, + private readonly queryRunner: QueryRunner, + ) { + super(); + } + + public dispose(): void { + if (this.runningQuery !== undefined) { + this.runningQuery.cancel(); + } + } + + protected dispatchRequest(request: Protocol.Request): void { + // We just defer to the base class implementation, but having this override makes it easy to set + // a breakpoint that will be hit for any message received by the debug adapter. + void queryServerLogger.log(`DAP request: ${request.command}`); + super.dispatchRequest(request); + } + + private unexpectedState(response: Protocol.Response): void { + this.sendErrorResponse( + response, + ERROR_UNEXPECTED_STATE, + "CodeQL debug adapter received request '{_request}' while in unexpected state '{_actualState}'.", + { + _request: response.command, + _actualState: this.state, + }, + ); + } + + protected initializeRequest( + response: Protocol.InitializeResponse, + _args: Protocol.InitializeRequestArguments, + ): void { + switch (this.state) { + case "uninitialized": + response.body = response.body ?? {}; + response.body.supportsStepBack = false; + response.body.supportsStepInTargetsRequest = false; + response.body.supportsRestartFrame = false; + response.body.supportsGotoTargetsRequest = false; + response.body.supportsCancelRequest = true; + response.body.supportsTerminateRequest = true; + response.body.supportsModulesRequest = false; + response.body.supportsConfigurationDoneRequest = true; + response.body.supportsRestartRequest = false; + this.state = "initialized"; + this.sendResponse(response); + + this.sendEvent(new InitializedEvent()); + break; + + default: + this.unexpectedState(response); + break; + } + } + + protected disconnectRequest( + response: Protocol.DisconnectResponse, + _args: Protocol.DisconnectArguments, + _request?: Protocol.Request, + ): void { + // The client is forcing a disconnect. We'll signal cancellation, but since this request means + // that the debug session itself is about to go away, we'll stop processing events from the + // evaluation to avoid sending them to the client that is no longer interested in them. + this.terminateOrDisconnect(response, true); + } + + protected terminateRequest( + response: Protocol.TerminateResponse, + _args: Protocol.TerminateArguments, + _request?: Protocol.Request, + ): void { + // The client is requesting a graceful termination. This will signal the cancellation token of + // any in-progress evaluation, but that evaluation will continue to report events (like + // progress) until the cancellation takes effect. + this.terminateOrDisconnect(response, false); + } + + private terminateOrDisconnect( + response: Protocol.Response, + force: boolean, + ): void { + const runningQuery = this.runningQuery; + if (force) { + // Disconnect from the running query so that we stop processing its progress events. + this.runningQuery = undefined; + } + if (runningQuery !== undefined) { + this.terminateOnComplete = true; + runningQuery.cancel(); + } else if (this.state === "stopped") { + this.terminateAndExit(); + } + + this.sendResponse(response); + } + + protected launchRequest( + response: Protocol.LaunchResponse, + args: CodeQLProtocol.LaunchRequest["arguments"], + _request?: Protocol.Request, + ): void { + switch (this.state) { + case "initialized": + this.args = args; + + // If `noDebug` is set, then terminate after evaluation instead of stopping. + this.terminateOnComplete = this.args.noDebug === true; + + response.body = response.body ?? {}; + + // Send the response immediately. We'll send a "stopped" message when the evaluation is complete. + this.sendResponse(response); + + void this.evaluate(this.args.quickEvalContext); + break; + + default: + this.unexpectedState(response); + break; + } + } + + protected nextRequest( + response: Protocol.NextResponse, + _args: Protocol.NextArguments, + _request?: Protocol.Request, + ): void { + this.stepRequest(response); + } + + protected stepInRequest( + response: Protocol.StepInResponse, + _args: Protocol.StepInArguments, + _request?: Protocol.Request, + ): void { + this.stepRequest(response); + } + + protected stepOutRequest( + response: Protocol.Response, + _args: Protocol.StepOutArguments, + _request?: Protocol.Request, + ): void { + this.stepRequest(response); + } + + protected stepBackRequest( + response: Protocol.StepBackResponse, + _args: Protocol.StepBackArguments, + _request?: Protocol.Request, + ): void { + this.stepRequest(response); + } + + private stepRequest(response: Protocol.Response): void { + switch (this.state) { + case "stopped": + this.sendResponse(response); + // We don't do anything with stepping yet, so just announce that we've stopped without + // actually doing anything. + // We don't even send the `EvaluationCompletedEvent`. + this.reportStopped(); + break; + + default: + this.unexpectedState(response); + break; + } + } + + protected continueRequest( + response: Protocol.ContinueResponse, + _args: Protocol.ContinueArguments, + _request?: Protocol.Request, + ): void { + switch (this.state) { + case "stopped": + response.body = response.body ?? {}; + response.body.allThreadsContinued = true; + + // Send the response immediately. We'll send a "stopped" message when the evaluation is complete. + this.sendResponse(response); + + void this.evaluate(undefined); + break; + + default: + this.unexpectedState(response); + break; + } + } + + protected cancelRequest( + response: Protocol.CancelResponse, + args: Protocol.CancelArguments, + _request?: Protocol.Request, + ): void { + if ( + args.progressId !== undefined && + this.runningQuery?.id === args.progressId + ) { + this.runningQuery.cancel(); + } + + this.sendResponse(response); + } + + protected threadsRequest( + response: Protocol.ThreadsResponse, + _request?: Protocol.Request, + ): void { + response.body = response.body ?? {}; + response.body.threads = [ + { + id: QUERY_THREAD_ID, + name: QUERY_THREAD_NAME, + }, + ]; + + this.sendResponse(response); + } + + protected stackTraceRequest( + response: Protocol.StackTraceResponse, + _args: Protocol.StackTraceArguments, + _request?: Protocol.Request, + ): void { + response.body = response.body ?? {}; + response.body.stackFrames = []; // No frames for now. + + super.stackTraceRequest(response, _args, _request); + } + + protected customRequest( + command: string, + response: CodeQLProtocol.Response, + args: unknown, + request?: Protocol.Request, + ): void { + switch (command) { + case "codeql-quickeval": { + this.quickEvalRequest( + response, + args as CodeQLProtocol.QuickEvalRequest["arguments"], + ); + break; + } + + default: + super.customRequest(command, response, args, request); + break; + } + } + + protected quickEvalRequest( + response: CodeQLProtocol.QuickEvalResponse, + args: CodeQLProtocol.QuickEvalRequest["arguments"], + ): void { + switch (this.state) { + case "stopped": + // Send the response immediately. We'll send a "stopped" message when the evaluation is complete. + this.sendResponse(response); + + // For built-in requests that are expected to cause execution (`launch`, `continue`, `step`, etc.), + // the adapter does not send a `continued` event because the client already knows that's what + // is supposed to happen. For a custom request, though, we have to notify the client. + this.sendEvent(new ContinuedEvent(QUERY_THREAD_ID, true)); + + void this.evaluate(args.quickEvalContext); + break; + + default: + this.unexpectedState(response); + break; + } + } + + /** + * Runs the query or quickeval, and notifies the debugger client when the evaluation completes. + * + * This function is invoked from the `launch` and `continue` handlers, without awaiting its + * result. + */ + private async evaluate( + quickEvalContext: QuickEvalContext | undefined, + ): Promise { + const args = this.args!; + + const runningQuery = new RunningQuery( + this.queryRunner, + args, + quickEvalContext, + this.queryStorageDir, + this.logger, + (event) => { + // If `this.runningQuery` is undefined, it means that we've already disconnected from this + // evaluation, and do not want any further events. + if (this.runningQuery !== undefined) { + this.sendEvent(event); + } + }, + ); + this.runningQuery = runningQuery; + this.state = "running"; + + try { + const result = await runningQuery.evaluate(); + this.completeEvaluation(result); + } finally { + this.runningQuery = undefined; + runningQuery.dispose(); + } + } + + /** + * Mark the evaluation as completed, and notify the client of the result. + */ + private completeEvaluation( + result: CodeQLProtocol.EvaluationCompletedEvent["body"], + ): void { + this.lastResultType = result.resultType; + + // Report the evaluation result + this.sendEvent(new EvaluationCompletedEvent(result)); + if (result.resultType !== QueryResultType.SUCCESS) { + // Report the result message as "important" output + const message = result.message ?? "Unknown error"; + const outputEvent = new OutputEvent(message, "console"); + this.sendEvent(outputEvent); + } + + this.reportStopped(); + } + + private reportStopped(): void { + if (this.terminateOnComplete) { + this.terminateAndExit(); + } else { + // Report the session as "stopped", but keep the session open. + this.sendEvent(new StoppedEvent("entry", QUERY_THREAD_ID)); + + this.state = "stopped"; + } + } + + private terminateAndExit(): void { + // Report the debugging session as terminated. + this.sendEvent(new TerminatedEvent()); + + // Report the debuggee as exited. + this.sendEvent(new ExitedEvent(this.lastResultType)); + + this.state = "terminated"; + } +} diff --git a/extensions/ql-vscode/src/debugger/debugger-factory.ts b/extensions/ql-vscode/src/debugger/debugger-factory.ts new file mode 100644 index 00000000000..9bc2cd6dae0 --- /dev/null +++ b/extensions/ql-vscode/src/debugger/debugger-factory.ts @@ -0,0 +1,52 @@ +import type { + DebugAdapterDescriptor, + DebugAdapterDescriptorFactory, + DebugAdapterExecutable, + DebugSession, + ProviderResult, +} from "vscode"; +import { + debug, + DebugAdapterInlineImplementation, + DebugConfigurationProviderTriggerKind, +} from "vscode"; +import { isCanary } from "../config"; +import type { LocalQueries } from "../local-queries"; +import { DisposableObject } from "../common/disposable-object"; +import type { QueryRunner } from "../query-server"; +import { QLDebugConfigurationProvider } from "./debug-configuration"; +import { QLDebugSession } from "./debug-session"; + +export class QLDebugAdapterDescriptorFactory + extends DisposableObject + implements DebugAdapterDescriptorFactory +{ + constructor( + private readonly queryStorageDir: string, + private readonly queryRunner: QueryRunner, + localQueries: LocalQueries, + ) { + super(); + + this.push(debug.registerDebugAdapterDescriptorFactory("codeql", this)); + this.push( + debug.registerDebugConfigurationProvider( + "codeql", + new QLDebugConfigurationProvider(localQueries), + DebugConfigurationProviderTriggerKind.Dynamic, + ), + ); + } + + public createDebugAdapterDescriptor( + _session: DebugSession, + _executable: DebugAdapterExecutable | undefined, + ): ProviderResult { + if (!isCanary()) { + throw new Error("The CodeQL debugger feature is not available yet."); + } + return new DebugAdapterInlineImplementation( + new QLDebugSession(this.queryStorageDir, this.queryRunner), + ); + } +} diff --git a/extensions/ql-vscode/src/debugger/debugger-ui.ts b/extensions/ql-vscode/src/debugger/debugger-ui.ts new file mode 100644 index 00000000000..8d401897055 --- /dev/null +++ b/extensions/ql-vscode/src/debugger/debugger-ui.ts @@ -0,0 +1,251 @@ +import { basename } from "path"; +import type { + DebugAdapterTracker, + DebugAdapterTrackerFactory, + DebugSession, +} from "vscode"; +import { debug, Uri, CancellationTokenSource } from "vscode"; +import type { DebuggerCommands } from "../common/commands"; +import type { DatabaseManager } from "../databases/local-databases"; +import { DisposableObject } from "../common/disposable-object"; +import type { CoreQueryResult } from "../query-server"; +import { + getQuickEvalContext, + saveBeforeStart, + validateQueryUri, +} from "../run-queries-shared"; +import { QueryOutputDir } from "../local-queries/query-output-dir"; +import type { QLResolvedDebugConfiguration } from "./debug-configuration"; +import type { + AnyProtocolMessage, + EvaluationCompletedEvent, + EvaluationStartedEvent, + QuickEvalRequest, +} from "./debug-protocol"; +import type { App } from "../common/app"; +import type { LocalQueryRun, LocalQueries } from "../local-queries"; + +/** + * Listens to messages passing between VS Code and the debug adapter, so that we can supplement the + * UI. + */ +class QLDebugAdapterTracker + extends DisposableObject + implements DebugAdapterTracker +{ + private readonly configuration: QLResolvedDebugConfiguration; + /** The `LocalQueryRun` of the current evaluation, if one is running. */ + private localQueryRun: LocalQueryRun | undefined; + /** The promise of the most recently queued deferred message handler. */ + private lastDeferredMessageHandler: Promise = Promise.resolve(); + + constructor( + private readonly session: DebugSession, + private readonly ui: DebuggerUI, + private readonly localQueries: LocalQueries, + private readonly dbm: DatabaseManager, + ) { + super(); + this.configuration = session.configuration; + } + + public onDidSendMessage(message: AnyProtocolMessage): void { + if (message.type === "event") { + switch (message.event) { + case "codeql-evaluation-started": + this.queueMessageHandler(() => + this.onEvaluationStarted(message.body), + ); + break; + case "codeql-evaluation-completed": + this.queueMessageHandler(() => + this.onEvaluationCompleted(message.body), + ); + break; + case "output": + if (message.body.category === "console") { + void this.localQueryRun?.logger.log(message.body.output); + } + break; + } + } + } + + public onWillStopSession(): void { + this.ui.onSessionClosed(this.session); + this.dispose(); + } + + public async quickEval(): Promise { + // Since we're not going through VS Code's launch path, we need to save dirty files ourselves. + await saveBeforeStart(); + + const args: QuickEvalRequest["arguments"] = { + quickEvalContext: await getQuickEvalContext(undefined, false), + }; + await this.session.customRequest("codeql-quickeval", args); + } + + /** + * Queues a message handler to be executed once all other pending message handlers have completed. + * + * The `onDidSendMessage()` function is synchronous, so it needs to return before any async + * handling of the msssage is completed. We can't just launch the message handler directly from + * `onDidSendMessage()`, though, because if the message handler's implementation blocks awaiting + * a promise, then another event might be received by `onDidSendMessage()` while the first message + * handler is still incomplete. + * + * To enforce sequential execution of event handlers, we queue each new handler as a `finally()` + * handler for the most recently queued message. + */ + private queueMessageHandler(handler: () => Promise): void { + this.lastDeferredMessageHandler = + this.lastDeferredMessageHandler.finally(handler); + } + + /** Updates the UI to track the currently executing query. */ + private async onEvaluationStarted( + body: EvaluationStartedEvent["body"], + ): Promise { + const dbUri = Uri.file(this.configuration.database); + const dbItem = await this.dbm.createOrOpenDatabaseItem(dbUri, { + type: "debugger", + }); + + // When cancellation is requested from the query history view, we just stop the debug session. + const tokenSource = new CancellationTokenSource(); + tokenSource.token.onCancellationRequested(() => + debug.stopDebugging(this.session), + ); + + this.localQueryRun = await this.localQueries.createLocalQueryRun( + { + queryPath: this.configuration.query, + quickEval: body.quickEvalContext, + }, + dbItem, + new QueryOutputDir(body.outputDir), + tokenSource, + ); + } + + /** Update the UI after a query has finished evaluating. */ + private async onEvaluationCompleted( + body: EvaluationCompletedEvent["body"], + ): Promise { + if (this.localQueryRun !== undefined) { + const results: CoreQueryResult = body; + await this.localQueryRun.complete( + { + results: new Map([ + [this.configuration.query, results], + ]), + }, + (_) => {}, + ); + this.localQueryRun = undefined; + } + } +} + +/** Service handling the UI for CodeQL debugging. */ +export class DebuggerUI + extends DisposableObject + implements DebugAdapterTrackerFactory +{ + private readonly sessions = new Map(); + + constructor( + private readonly app: App, + private readonly localQueries: LocalQueries, + private readonly dbm: DatabaseManager, + ) { + super(); + + this.push(debug.registerDebugAdapterTrackerFactory("codeql", this)); + } + + public getCommands(): DebuggerCommands { + return { + "codeQL.debugQuery": this.debugQuery.bind(this), + "codeQL.debugQueryContextEditor": this.debugQuery.bind(this), + "codeQL.startDebuggingSelectionContextEditor": + this.startDebuggingSelection.bind(this), + "codeQL.startDebuggingSelection": this.startDebuggingSelection.bind(this), + "codeQL.continueDebuggingSelection": + this.continueDebuggingSelection.bind(this), + "codeQL.continueDebuggingSelectionContextEditor": + this.continueDebuggingSelection.bind(this), + }; + } + + public createDebugAdapterTracker( + session: DebugSession, + ): DebugAdapterTracker | undefined { + if (session.type === "codeql") { + // The tracker will be disposed in its own `onWillStopSession` handler. + const tracker = new QLDebugAdapterTracker( + session, + this, + this.localQueries, + this.dbm, + ); + this.sessions.set(session.id, tracker); + return tracker; + } else { + return undefined; + } + } + + public onSessionClosed(session: DebugSession): void { + this.sessions.delete(session.id); + } + + private async debugQuery(uri: Uri | undefined): Promise { + const queryPath = + uri !== undefined + ? validateQueryUri(uri, false) + : await this.localQueries.getCurrentQuery(false); + + // Start debugging with a default configuration that just specifies the query path. + await debug.startDebugging(undefined, { + name: basename(queryPath), + type: "codeql", + request: "launch", + query: queryPath, + }); + } + + private async startDebuggingSelection(): Promise { + // Launch the currently selected debug configuration, but specifying QuickEval mode. + await this.app.commands.execute("workbench.action.debug.start", { + config: { + quickEval: true, + }, + }); + } + + private async continueDebuggingSelection(): Promise { + const activeTracker = this.activeTracker; + if (activeTracker === undefined) { + throw new Error("No CodeQL debug session is active."); + } + + await activeTracker.quickEval(); + } + + private getTrackerForSession( + session: DebugSession, + ): QLDebugAdapterTracker | undefined { + return this.sessions.get(session.id); + } + + public get activeTracker(): QLDebugAdapterTracker | undefined { + const session = debug.activeDebugSession; + if (session === undefined) { + return undefined; + } + + return this.getTrackerForSession(session); + } +} diff --git a/extensions/ql-vscode/src/discovery.ts b/extensions/ql-vscode/src/discovery.ts deleted file mode 100644 index 9cc6822cd68..00000000000 --- a/extensions/ql-vscode/src/discovery.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { DisposableObject } from './pure/disposable-object'; -import { logger } from './logging'; - -/** - * Base class for "discovery" operations, which scan the file system to find specific kinds of - * files. This class automatically prevents more than one discovery operation from running at the - * same time. - */ -export abstract class Discovery extends DisposableObject { - private retry = false; - private discoveryInProgress = false; - - constructor(private readonly name: string) { - super(); - } - - /** - * Force the discovery process to run. Normally invoked by the derived class when a relevant file - * system change is detected. - */ - public refresh(): void { - // We avoid having multiple discovery operations in progress at the same time. Otherwise, if we - // got a storm of refresh requests due to, say, the copying or deletion of a large directory - // tree, we could potentially spawn a separate simultaneous discovery operation for each - // individual file change notification. - // Our approach is to spawn a discovery operation immediately upon receiving the first refresh - // request. If we receive any additional refresh requests before the first one is complete, we - // record this fact by setting `this.retry = true`. When the original discovery operation - // completes, we discard its results and spawn another one to account for that additional - // changes that have happened since. - // The means that for the common case of a single file being modified, we'll complete the - // discovery and update as soon as possible. If multiple files are being modified, we'll - // probably wind up doing discovery at least twice. - // We could choose to delay the initial discovery request by a second or two to wait for any - // other change notifications that might be coming along. However, this would create more - // latency in the common case, in order to save a bit of latency in the uncommon case. - - if (this.discoveryInProgress) { - // There's already a discovery operation in progress. Tell it to restart when it's done. - this.retry = true; - } - else { - // No discovery in progress, so start one now. - this.discoveryInProgress = true; - this.launchDiscovery(); - } - } - - /** - * Starts the asynchronous discovery operation by invoking the `discover` function. When the - * discovery operation completes, the `update` function will be invoked with the results of the - * discovery. - */ - private launchDiscovery(): void { - const discoveryPromise = this.discover(); - discoveryPromise.then(results => { - if (!this.retry) { - // Update any listeners with the results of the discovery. - this.discoveryInProgress = false; - this.update(results); - } - }) - - .catch(err => { - void logger.log(`${this.name} failed. Reason: ${err.message}`); - }) - - .finally(() => { - if (this.retry) { - // Another refresh request came in while we were still running a previous discovery - // operation. Since the discovery results we just computed are now stale, we'll launch - // another discovery operation instead of updating. - // Note that by doing this inside of `finally`, we will relaunch discovery even if the - // initial discovery operation failed. - this.retry = false; - this.launchDiscovery(); - } - }); - } - - /** - * Overridden by the derived class to spawn the actual discovery operation, returning the results. - */ - protected abstract discover(): Promise; - - /** - * Overridden by the derived class to atomically update the `Discovery` object with the results of - * the discovery operation, and to notify any listeners that the discovery results may have - * changed. - * @param results The discovery results returned by the `discover` function. - */ - protected abstract update(results: T): void; -} diff --git a/extensions/ql-vscode/src/distribution.ts b/extensions/ql-vscode/src/distribution.ts deleted file mode 100644 index a95912c1ad1..00000000000 --- a/extensions/ql-vscode/src/distribution.ts +++ /dev/null @@ -1,828 +0,0 @@ -import * as fetch from 'node-fetch'; -import * as fs from 'fs-extra'; -import * as os from 'os'; -import * as path from 'path'; -import * as semver from 'semver'; -import * as unzipper from 'unzipper'; -import * as url from 'url'; -import { ExtensionContext, Event } from 'vscode'; -import { DistributionConfig } from './config'; -import { - InvocationRateLimiter, - InvocationRateLimiterResultKind, - showAndLogErrorMessage, - showAndLogWarningMessage -} from './helpers'; -import { logger } from './logging'; -import { getCodeQlCliVersion } from './cli-version'; -import { ProgressCallback, reportStreamProgress } from './commandRunner'; - -/** - * distribution.ts - * ------------ - * - * Management of CodeQL CLI binaries. - */ - -/** - * Default value for the owner name of the extension-managed distribution on GitHub. - * - * We set the default here rather than as a default config value so that this default is invoked - * upon blanking the setting. - */ -const DEFAULT_DISTRIBUTION_OWNER_NAME = 'github'; - -/** - * Default value for the repository name of the extension-managed distribution on GitHub. - * - * We set the default here rather than as a default config value so that this default is invoked - * upon blanking the setting. - */ -const DEFAULT_DISTRIBUTION_REPOSITORY_NAME = 'codeql-cli-binaries'; - -/** - * Range of versions of the CLI that are compatible with the extension. - * - * This applies to both extension-managed and CLI distributions. - */ -export const DEFAULT_DISTRIBUTION_VERSION_RANGE: semver.Range = new semver.Range('2.x'); - -export interface DistributionProvider { - getCodeQlPathWithoutVersionCheck(): Promise; - onDidChangeDistribution?: Event; - getDistribution(): Promise; -} - -export class DistributionManager implements DistributionProvider { - - /** - * Get the name of the codeql cli installation we prefer to install, based on our current platform. - */ - public static getRequiredAssetName(): string { - switch (os.platform()) { - case 'linux': - return 'codeql-linux64.zip'; - case 'darwin': - return 'codeql-osx64.zip'; - case 'win32': - return 'codeql-win64.zip'; - default: - return 'codeql.zip'; - } - } - - constructor( - public readonly config: DistributionConfig, - private readonly versionRange: semver.Range, - extensionContext: ExtensionContext - ) { - this._onDidChangeDistribution = config.onDidChangeConfiguration; - this.extensionSpecificDistributionManager = - new ExtensionSpecificDistributionManager(config, versionRange, extensionContext); - this.updateCheckRateLimiter = new InvocationRateLimiter( - extensionContext, - 'extensionSpecificDistributionUpdateCheck', - () => this.extensionSpecificDistributionManager.checkForUpdatesToDistribution() - ); - } - - /** - * Look up a CodeQL launcher binary. - */ - public async getDistribution(): Promise { - const distribution = await this.getDistributionWithoutVersionCheck(); - if (distribution === undefined) { - return { - kind: FindDistributionResultKind.NoDistribution, - }; - } - const version = await getCodeQlCliVersion(distribution.codeQlPath, logger); - if (version === undefined) { - return { - distribution, - kind: FindDistributionResultKind.UnknownCompatibilityDistribution, - }; - } - - /** - * Specifies whether prerelease versions of the CodeQL CLI should be accepted. - * - * Suppose a user sets the includePrerelease config option, obtains a prerelease, then decides - * they no longer want a prerelease, so unsets the includePrerelease config option. - * Unsetting the includePrerelease config option should trigger an update check, and this - * update check should present them an update that returns them back to a non-prerelease - * version. - * - * Therefore, we adopt the following: - * - * - If the user is managing their own CLI, they can use a prerelease without specifying the - * includePrerelease option. - * - If the user is using an extension-managed CLI, then prereleases are only accepted when the - * includePrerelease config option is set. - */ - const includePrerelease = distribution.kind !== DistributionKind.ExtensionManaged || this.config.includePrerelease; - - if (!semver.satisfies(version, this.versionRange, { includePrerelease })) { - return { - distribution, - kind: FindDistributionResultKind.IncompatibleDistribution, - version, - }; - } - return { - distribution, - kind: FindDistributionResultKind.CompatibleDistribution, - version - }; - } - - public async hasDistribution(): Promise { - const result = await this.getDistribution(); - return result.kind !== FindDistributionResultKind.NoDistribution; - } - - public async getCodeQlPathWithoutVersionCheck(): Promise { - const distribution = await this.getDistributionWithoutVersionCheck(); - return distribution?.codeQlPath; - } - - /** - * Returns the path to a possibly-compatible CodeQL launcher binary, or undefined if a binary not be found. - */ - async getDistributionWithoutVersionCheck(): Promise { - // Check config setting, then extension specific distribution, then PATH. - if (this.config.customCodeQlPath) { - if (!await fs.pathExists(this.config.customCodeQlPath)) { - void showAndLogErrorMessage(`The CodeQL executable path is specified as "${this.config.customCodeQlPath}" ` + - 'by a configuration setting, but a CodeQL executable could not be found at that path. Please check ' + - 'that a CodeQL executable exists at the specified path or remove the setting.'); - return undefined; - } - - // emit a warning if using a deprecated launcher and a non-deprecated launcher exists - if ( - deprecatedCodeQlLauncherName() && - this.config.customCodeQlPath.endsWith(deprecatedCodeQlLauncherName()!) && - await this.hasNewLauncherName() - ) { - warnDeprecatedLauncher(); - } - return { - codeQlPath: this.config.customCodeQlPath, - kind: DistributionKind.CustomPathConfig - }; - } - - const extensionSpecificCodeQlPath = await this.extensionSpecificDistributionManager.getCodeQlPathWithoutVersionCheck(); - if (extensionSpecificCodeQlPath !== undefined) { - return { - codeQlPath: extensionSpecificCodeQlPath, - kind: DistributionKind.ExtensionManaged - }; - } - - if (process.env.PATH) { - for (const searchDirectory of process.env.PATH.split(path.delimiter)) { - const expectedLauncherPath = await getExecutableFromDirectory(searchDirectory); - if (expectedLauncherPath) { - return { - codeQlPath: expectedLauncherPath, - kind: DistributionKind.PathEnvironmentVariable - }; - } - } - void logger.log('INFO: Could not find CodeQL on path.'); - } - - return undefined; - } - - /** - * Check for updates to the extension-managed distribution. If one has not already been installed, - * this will return an update available result with the latest available release. - * - * Returns a failed promise if an unexpected error occurs during installation. - */ - public async checkForUpdatesToExtensionManagedDistribution( - minSecondsSinceLastUpdateCheck: number): Promise { - const distribution = await this.getDistributionWithoutVersionCheck(); - const extensionManagedCodeQlPath = await this.extensionSpecificDistributionManager.getCodeQlPathWithoutVersionCheck(); - if (distribution?.codeQlPath !== extensionManagedCodeQlPath) { - // A distribution is present but it isn't managed by the extension. - return createInvalidLocationResult(); - } - const updateCheckResult = await this.updateCheckRateLimiter.invokeFunctionIfIntervalElapsed(minSecondsSinceLastUpdateCheck); - switch (updateCheckResult.kind) { - case InvocationRateLimiterResultKind.Invoked: - return updateCheckResult.result; - case InvocationRateLimiterResultKind.RateLimited: - return createAlreadyCheckedRecentlyResult(); - } - } - - /** - * Installs a release of the extension-managed distribution. - * - * Returns a failed promise if an unexpected error occurs during installation. - */ - public installExtensionManagedDistributionRelease( - release: Release, - progressCallback?: ProgressCallback - ): Promise { - return this.extensionSpecificDistributionManager.installDistributionRelease(release, progressCallback); - } - - public get onDidChangeDistribution(): Event | undefined { - return this._onDidChangeDistribution; - } - - /** - * @return true if the non-deprecated launcher name exists on the file system - * in the same directory as the specified launcher only if using an external - * installation. False otherwise. - */ - private async hasNewLauncherName(): Promise { - if (!this.config.customCodeQlPath) { - // not managed externally - return false; - } - const dir = path.dirname(this.config.customCodeQlPath); - const newLaunderPath = path.join(dir, codeQlLauncherName()); - return await fs.pathExists(newLaunderPath); - } - - private readonly extensionSpecificDistributionManager: ExtensionSpecificDistributionManager; - private readonly updateCheckRateLimiter: InvocationRateLimiter; - private readonly _onDidChangeDistribution: Event | undefined; -} - -class ExtensionSpecificDistributionManager { - constructor( - private readonly config: DistributionConfig, - private readonly versionRange: semver.Range, - private readonly extensionContext: ExtensionContext - ) { - /**/ - } - - public async getCodeQlPathWithoutVersionCheck(): Promise { - if (this.getInstalledRelease() !== undefined) { - // An extension specific distribution has been installed. - const expectedLauncherPath = await getExecutableFromDirectory(this.getDistributionRootPath(), true); - if (expectedLauncherPath) { - return expectedLauncherPath; - } - - try { - await this.removeDistribution(); - } catch (e) { - void logger.log('WARNING: Tried to remove corrupted CodeQL CLI at ' + - `${this.getDistributionStoragePath()} but encountered an error: ${e}.`); - } - } - return undefined; - } - - /** - * Check for updates to the extension-managed distribution. If one has not already been installed, - * this will return an update available result with the latest available release. - * - * Returns a failed promise if an unexpected error occurs during installation. - */ - public async checkForUpdatesToDistribution(): Promise { - const codeQlPath = await this.getCodeQlPathWithoutVersionCheck(); - const extensionSpecificRelease = this.getInstalledRelease(); - const latestRelease = await this.getLatestRelease(); - - if ( - extensionSpecificRelease !== undefined && - codeQlPath !== undefined && - latestRelease.id === extensionSpecificRelease.id - ) { - return createAlreadyUpToDateResult(); - } - return createUpdateAvailableResult(latestRelease); - } - - /** - * Installs a release of the extension-managed distribution. - * - * Returns a failed promise if an unexpected error occurs during installation. - */ - public async installDistributionRelease(release: Release, - progressCallback?: ProgressCallback): Promise { - await this.downloadDistribution(release, progressCallback); - // Store the installed release within the global extension state. - await this.storeInstalledRelease(release); - } - - private async downloadDistribution(release: Release, - progressCallback?: ProgressCallback): Promise { - try { - await this.removeDistribution(); - } catch (e) { - void logger.log(`Tried to clean up old version of CLI at ${this.getDistributionStoragePath()} ` + - `but encountered an error: ${e}.`); - } - - // Filter assets to the unique one that we require. - const requiredAssetName = DistributionManager.getRequiredAssetName(); - const assets = release.assets.filter(asset => asset.name === requiredAssetName); - if (assets.length === 0) { - throw new Error(`Invariant violation: chose a release to install that didn't have ${requiredAssetName}`); - } - if (assets.length > 1) { - void logger.log('WARNING: chose a release with more than one asset to install, found ' + - assets.map(asset => asset.name).join(', ')); - } - - const assetStream = await this.createReleasesApiConsumer().streamBinaryContentOfAsset(assets[0]); - const tmpDirectory = await fs.mkdtemp(path.join(os.tmpdir(), 'vscode-codeql')); - - try { - const archivePath = path.join(tmpDirectory, 'distributionDownload.zip'); - const archiveFile = fs.createWriteStream(archivePath); - - const contentLength = assetStream.headers.get('content-length'); - const totalNumBytes = contentLength ? parseInt(contentLength, 10) : undefined; - reportStreamProgress(assetStream.body, `Downloading CodeQL CLI ${release.name}…`, totalNumBytes, progressCallback); - - await new Promise((resolve, reject) => - assetStream.body.pipe(archiveFile) - .on('finish', resolve) - .on('error', reject) - ); - - await this.bumpDistributionFolderIndex(); - - void logger.log(`Extracting CodeQL CLI to ${this.getDistributionStoragePath()}`); - await extractZipArchive(archivePath, this.getDistributionStoragePath()); - } finally { - await fs.remove(tmpDirectory); - } - } - - /** - * Remove the extension-managed distribution. - * - * This should not be called for a distribution that is currently in use, as remove may fail. - */ - private async removeDistribution(): Promise { - await this.storeInstalledRelease(undefined); - if (await fs.pathExists(this.getDistributionStoragePath())) { - await fs.remove(this.getDistributionStoragePath()); - } - } - - private async getLatestRelease(): Promise { - const requiredAssetName = DistributionManager.getRequiredAssetName(); - void logger.log(`Searching for latest release including ${requiredAssetName}.`); - return this.createReleasesApiConsumer().getLatestRelease( - this.versionRange, - this.config.includePrerelease, - release => { - const matchingAssets = release.assets.filter(asset => asset.name === requiredAssetName); - if (matchingAssets.length === 0) { - // For example, this could be a release with no platform-specific assets. - void logger.log(`INFO: Ignoring a release with no assets named ${requiredAssetName}`); - return false; - } - if (matchingAssets.length > 1) { - void logger.log(`WARNING: Ignoring a release with more than one asset named ${requiredAssetName}`); - return false; - } - return true; - } - ); - } - - private createReleasesApiConsumer(): ReleasesApiConsumer { - const ownerName = this.config.ownerName ? this.config.ownerName : DEFAULT_DISTRIBUTION_OWNER_NAME; - const repositoryName = this.config.repositoryName ? this.config.repositoryName : DEFAULT_DISTRIBUTION_REPOSITORY_NAME; - return new ReleasesApiConsumer(ownerName, repositoryName, this.config.personalAccessToken); - } - - private async bumpDistributionFolderIndex(): Promise { - const index = this.extensionContext.globalState.get( - ExtensionSpecificDistributionManager._currentDistributionFolderIndexStateKey, 0); - await this.extensionContext.globalState.update( - ExtensionSpecificDistributionManager._currentDistributionFolderIndexStateKey, index + 1); - } - - private getDistributionStoragePath(): string { - // Use an empty string for the initial distribution for backwards compatibility. - const distributionFolderIndex = this.extensionContext.globalState.get( - ExtensionSpecificDistributionManager._currentDistributionFolderIndexStateKey, 0) || ''; - return path.join(this.extensionContext.globalStoragePath, - ExtensionSpecificDistributionManager._currentDistributionFolderBaseName + distributionFolderIndex); - } - - private getDistributionRootPath(): string { - return path.join(this.getDistributionStoragePath(), - ExtensionSpecificDistributionManager._codeQlExtractedFolderName); - } - - private getInstalledRelease(): Release | undefined { - return this.extensionContext.globalState.get(ExtensionSpecificDistributionManager._installedReleaseStateKey); - } - - private async storeInstalledRelease(release: Release | undefined): Promise { - await this.extensionContext.globalState.update(ExtensionSpecificDistributionManager._installedReleaseStateKey, release); - } - - private static readonly _currentDistributionFolderBaseName = 'distribution'; - private static readonly _currentDistributionFolderIndexStateKey = 'distributionFolderIndex'; - private static readonly _installedReleaseStateKey = 'distributionRelease'; - private static readonly _codeQlExtractedFolderName = 'codeql'; -} - -export class ReleasesApiConsumer { - constructor(ownerName: string, repoName: string, personalAccessToken?: string) { - // Specify version of the GitHub API - this._defaultHeaders['accept'] = 'application/vnd.github.v3+json'; - - if (personalAccessToken) { - this._defaultHeaders['authorization'] = `token ${personalAccessToken}`; - } - - this._ownerName = ownerName; - this._repoName = repoName; - } - - public async getLatestRelease(versionRange: semver.Range, includePrerelease = false, additionalCompatibilityCheck?: (release: GithubRelease) => boolean): Promise { - const apiPath = `/repos/${this._ownerName}/${this._repoName}/releases`; - const allReleases: GithubRelease[] = await (await this.makeApiCall(apiPath)).json(); - const compatibleReleases = allReleases.filter(release => { - if (release.prerelease && !includePrerelease) { - return false; - } - - const version = semver.parse(release.tag_name); - if (version === null || !semver.satisfies(version, versionRange, { includePrerelease })) { - return false; - } - - return !additionalCompatibilityCheck || additionalCompatibilityCheck(release); - }); - // Tag names must all be parsable to semvers due to the previous filtering step. - const latestRelease = compatibleReleases.sort((a, b) => { - const versionComparison = semver.compare(semver.parse(b.tag_name)!, semver.parse(a.tag_name)!); - if (versionComparison !== 0) { - return versionComparison; - } - return b.created_at.localeCompare(a.created_at, 'en-US'); - })[0]; - if (latestRelease === undefined) { - throw new Error('No compatible CodeQL CLI releases were found. ' + - 'Please check that the CodeQL extension is up to date.'); - } - const assets: ReleaseAsset[] = latestRelease.assets.map(asset => { - return { - id: asset.id, - name: asset.name, - size: asset.size - }; - }); - - return { - assets, - createdAt: latestRelease.created_at, - id: latestRelease.id, - name: latestRelease.name - }; - } - - public async streamBinaryContentOfAsset(asset: ReleaseAsset): Promise { - const apiPath = `/repos/${this._ownerName}/${this._repoName}/releases/assets/${asset.id}`; - - return await this.makeApiCall(apiPath, { - 'accept': 'application/octet-stream' - }); - } - - protected async makeApiCall(apiPath: string, additionalHeaders: { [key: string]: string } = {}): Promise { - const response = await this.makeRawRequest(ReleasesApiConsumer._apiBase + apiPath, - Object.assign({}, this._defaultHeaders, additionalHeaders)); - - if (!response.ok) { - // Check for rate limiting - const rateLimitResetValue = response.headers.get('X-RateLimit-Reset'); - if (response.status === 403 && rateLimitResetValue) { - const secondsToMillisecondsFactor = 1000; - const rateLimitResetDate = new Date(parseInt(rateLimitResetValue, 10) * secondsToMillisecondsFactor); - throw new GithubRateLimitedError(response.status, await response.text(), rateLimitResetDate); - } - throw new GithubApiError(response.status, await response.text()); - } - return response; - } - - private async makeRawRequest( - requestUrl: string, - headers: { [key: string]: string }, - redirectCount = 0): Promise { - const response = await fetch.default(requestUrl, { - headers, - redirect: 'manual' - }); - - const redirectUrl = response.headers.get('location'); - if (isRedirectStatusCode(response.status) && redirectUrl && redirectCount < ReleasesApiConsumer._maxRedirects) { - const parsedRedirectUrl = url.parse(redirectUrl); - if (parsedRedirectUrl.protocol != 'https:') { - throw new Error('Encountered a non-https redirect, rejecting'); - } - if (parsedRedirectUrl.host != 'api.github.com') { - // Remove authorization header if we are redirected outside of the GitHub API. - // - // This is necessary to stream release assets since AWS fails if more than one auth - // mechanism is provided. - delete headers['authorization']; - } - return await this.makeRawRequest(redirectUrl, headers, redirectCount + 1); - } - - return response; - } - - private readonly _defaultHeaders: { [key: string]: string } = {}; - private readonly _ownerName: string; - private readonly _repoName: string; - - private static readonly _apiBase = 'https://api.github.com'; - private static readonly _maxRedirects = 20; -} - -export async function extractZipArchive(archivePath: string, outPath: string): Promise { - const archive = await unzipper.Open.file(archivePath); - await archive.extract({ - concurrency: 4, - path: outPath - }); - // Set file permissions for extracted files - await Promise.all(archive.files.map(async file => { - // Only change file permissions if within outPath (path.join normalises the path) - const extractedPath = path.join(outPath, file.path); - if (extractedPath.indexOf(outPath) !== 0 || !(await fs.pathExists(extractedPath))) { - return Promise.resolve(); - } - return fs.chmod(extractedPath, file.externalFileAttributes >>> 16); - })); -} - -export function codeQlLauncherName(): string { - return (os.platform() === 'win32') ? 'codeql.exe' : 'codeql'; -} - -function deprecatedCodeQlLauncherName(): string | undefined { - return (os.platform() === 'win32') ? 'codeql.cmd' : undefined; -} - -function isRedirectStatusCode(statusCode: number): boolean { - return statusCode === 301 || statusCode === 302 || statusCode === 303 || statusCode === 307 || statusCode === 308; -} - -/* - * Types and helper functions relating to those types. - */ - -export enum DistributionKind { - CustomPathConfig, - ExtensionManaged, - PathEnvironmentVariable -} - -export interface Distribution { - codeQlPath: string; - kind: DistributionKind; -} - -export enum FindDistributionResultKind { - CompatibleDistribution, - UnknownCompatibilityDistribution, - IncompatibleDistribution, - NoDistribution -} - -export type FindDistributionResult = - | CompatibleDistributionResult - | UnknownCompatibilityDistributionResult - | IncompatibleDistributionResult - | NoDistributionResult; - -/** - * A result representing a distribution of the CodeQL CLI that may or may not be compatible with - * the extension. - */ -interface DistributionResult { - distribution: Distribution; - kind: FindDistributionResultKind; -} - -interface CompatibleDistributionResult extends DistributionResult { - kind: FindDistributionResultKind.CompatibleDistribution; - version: semver.SemVer; -} - -interface UnknownCompatibilityDistributionResult extends DistributionResult { - kind: FindDistributionResultKind.UnknownCompatibilityDistribution; -} - -interface IncompatibleDistributionResult extends DistributionResult { - kind: FindDistributionResultKind.IncompatibleDistribution; - version: semver.SemVer; -} - -interface NoDistributionResult { - kind: FindDistributionResultKind.NoDistribution; -} - -export enum DistributionUpdateCheckResultKind { - AlreadyCheckedRecentlyResult, - AlreadyUpToDate, - InvalidLocation, - UpdateAvailable -} - -type DistributionUpdateCheckResult = - | AlreadyCheckedRecentlyResult - | AlreadyUpToDateResult - | InvalidLocationResult - | UpdateAvailableResult; - -export interface AlreadyCheckedRecentlyResult { - kind: DistributionUpdateCheckResultKind.AlreadyCheckedRecentlyResult; -} - -export interface AlreadyUpToDateResult { - kind: DistributionUpdateCheckResultKind.AlreadyUpToDate; -} - -/** - * The distribution could not be installed or updated because it is not managed by the extension. - */ -export interface InvalidLocationResult { - kind: DistributionUpdateCheckResultKind.InvalidLocation; -} - -export interface UpdateAvailableResult { - kind: DistributionUpdateCheckResultKind.UpdateAvailable; - updatedRelease: Release; -} - -function createAlreadyCheckedRecentlyResult(): AlreadyCheckedRecentlyResult { - return { - kind: DistributionUpdateCheckResultKind.AlreadyCheckedRecentlyResult - }; -} - -function createAlreadyUpToDateResult(): AlreadyUpToDateResult { - return { - kind: DistributionUpdateCheckResultKind.AlreadyUpToDate - }; -} - -function createInvalidLocationResult(): InvalidLocationResult { - return { - kind: DistributionUpdateCheckResultKind.InvalidLocation - }; -} - -function createUpdateAvailableResult(updatedRelease: Release): UpdateAvailableResult { - return { - kind: DistributionUpdateCheckResultKind.UpdateAvailable, - updatedRelease - }; -} - -// Exported for testing -export async function getExecutableFromDirectory(directory: string, warnWhenNotFound = false): Promise { - const expectedLauncherPath = path.join(directory, codeQlLauncherName()); - const deprecatedLauncherName = deprecatedCodeQlLauncherName(); - const alternateExpectedLauncherPath = deprecatedLauncherName ? path.join(directory, deprecatedLauncherName) : undefined; - if (await fs.pathExists(expectedLauncherPath)) { - return expectedLauncherPath; - } else if (alternateExpectedLauncherPath && (await fs.pathExists(alternateExpectedLauncherPath))) { - warnDeprecatedLauncher(); - return alternateExpectedLauncherPath; - } - if (warnWhenNotFound) { - void logger.log(`WARNING: Expected to find a CodeQL CLI executable at ${expectedLauncherPath} but one was not found. ` + - 'Will try PATH.'); - } - return undefined; -} - -function warnDeprecatedLauncher() { - void showAndLogWarningMessage( - `The "${deprecatedCodeQlLauncherName()!}" launcher has been deprecated and will be removed in a future version. ` + - `Please use "${codeQlLauncherName()}" instead. It is recommended to update to the latest CodeQL binaries.` - ); -} - -/** - * A release on GitHub. - */ -export interface Release { - assets: ReleaseAsset[]; - - /** - * The creation date of the release on GitHub. - */ - createdAt: string; - - /** - * The id associated with the release on GitHub. - */ - id: number; - - /** - * The name associated with the release on GitHub. - */ - name: string; -} - -/** - * An asset corresponding to a release on GitHub. - */ -export interface ReleaseAsset { - /** - * The id associated with the asset on GitHub. - */ - id: number; - - /** - * The name associated with the asset on GitHub. - */ - name: string; - - /** - * The size of the asset in bytes. - */ - size: number; -} - - -/** - * The json returned from github for a release. - */ -export interface GithubRelease { - assets: GithubReleaseAsset[]; - - /** - * The creation date of the release on GitHub, in ISO 8601 format. - */ - created_at: string; - - /** - * The id associated with the release on GitHub. - */ - id: number; - - /** - * The name associated with the release on GitHub. - */ - name: string; - - /** - * Whether the release is a prerelease. - */ - prerelease: boolean; - - /** - * The tag name. This should be the version. - */ - tag_name: string; -} - -/** - * The json returned by github for an asset in a release. - */ -export interface GithubReleaseAsset { - /** - * The id associated with the asset on GitHub. - */ - id: number; - - /** - * The name associated with the asset on GitHub. - */ - name: string; - - /** - * The size of the asset in bytes. - */ - size: number; -} - -export class GithubApiError extends Error { - constructor(public status: number, public body: string) { - super(`API call failed with status code ${status}, body: ${body}`); - } -} - -export class GithubRateLimitedError extends GithubApiError { - constructor(public status: number, public body: string, public rateLimitResetDate: Date) { - super(status, body); - } -} diff --git a/extensions/ql-vscode/src/eval-log-viewer.ts b/extensions/ql-vscode/src/eval-log-viewer.ts deleted file mode 100644 index 1f0072a87aa..00000000000 --- a/extensions/ql-vscode/src/eval-log-viewer.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { window, TreeDataProvider, TreeView, TreeItem, ProviderResult, Event, EventEmitter, TreeItemCollapsibleState } from 'vscode'; -import { commandRunner } from './commandRunner'; -import { DisposableObject } from './pure/disposable-object'; -import { showAndLogErrorMessage } from './helpers'; - -export interface EvalLogTreeItem { - label?: string; - children: ChildEvalLogTreeItem[]; -} - -export interface ChildEvalLogTreeItem extends EvalLogTreeItem { - parent: ChildEvalLogTreeItem | EvalLogTreeItem; -} - -/** Provides data from parsed CodeQL evaluator logs to be rendered in a tree view. */ -class EvalLogDataProvider extends DisposableObject implements TreeDataProvider { - public roots: EvalLogTreeItem[] = []; - - private _onDidChangeTreeData: EventEmitter = new EventEmitter(); - readonly onDidChangeTreeData: Event = this._onDidChangeTreeData.event; - - refresh(): void { - this._onDidChangeTreeData.fire(); - } - - getTreeItem(element: EvalLogTreeItem): TreeItem | Thenable { - const state = element.children.length - ? TreeItemCollapsibleState.Collapsed - : TreeItemCollapsibleState.None; - const treeItem = new TreeItem(element.label || '', state); - treeItem.tooltip = `${treeItem.label} || ''}`; - return treeItem; - } - - getChildren(element?: EvalLogTreeItem): ProviderResult { - // If no item is passed, return the root. - if (!element) { - return this.roots || []; - } - // Otherwise it is called with an existing item, to load its children. - return element.children; - } - - getParent(element: ChildEvalLogTreeItem): ProviderResult { - return element.parent; - } -} - -/** Manages a tree viewer of structured evaluator logs. */ -export class EvalLogViewer extends DisposableObject { - private treeView: TreeView; - private treeDataProvider: EvalLogDataProvider; - - constructor() { - super(); - - this.treeDataProvider = new EvalLogDataProvider(); - this.treeView = window.createTreeView('codeQLEvalLogViewer', { - treeDataProvider: this.treeDataProvider, - showCollapseAll: true - }); - - this.push(this.treeView); - this.push(this.treeDataProvider); - this.push( - commandRunner('codeQLEvalLogViewer.clear', async () => { - this.clear(); - }) - ); - } - - private clear(): void { - this.treeDataProvider.roots = []; - this.treeDataProvider.refresh(); - this.treeView.message = undefined; - } - - // Called when the Show Evaluator Log (UI) command is run on a new query. - updateRoots(roots: EvalLogTreeItem[]): void { - this.treeDataProvider.roots = roots; - this.treeDataProvider.refresh(); - - this.treeView.message = 'Viewer for query run:'; // Currently only one query supported at a time. - - // Handle error on reveal. This could happen if - // the tree view is disposed during the reveal. - this.treeView.reveal(roots[0], { focus: false })?.then( - () => { /**/ }, - err => showAndLogErrorMessage(err) - ); - } -} diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index e74a8c6876e..cda8a62e0f9 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -1,105 +1,143 @@ -import 'source-map-support/register'; +import "source-map-support/register"; +import type { CancellationToken, Disposable, ExtensionContext } from "vscode"; import { - CancellationToken, - CancellationTokenSource, - commands, - Disposable, - ExtensionContext, + env, extensions, languages, ProgressLocation, - ProgressOptions, Uri, + version as vscodeVersion, window as Window, - env, - window, - QuickPickItem, - Range, workspace, - ProviderResult -} from 'vscode'; -import { LanguageClient } from 'vscode-languageclient'; -import * as os from 'os'; -import * as fs from 'fs-extra'; -import * as path from 'path'; -import * as tmp from 'tmp-promise'; -import { testExplorerExtensionId, TestHub } from 'vscode-test-adapter-api'; - -import { AstViewer } from './astViewer'; -import * as archiveFilesystemProvider from './archive-filesystem-provider'; -import QuickEvalCodeLensProvider from './quickEvalCodeLensProvider'; -import { CodeQLCliServer, CliVersionConstraint } from './cli'; +} from "vscode"; +import type { LanguageClient } from "vscode-languageclient/node"; +import { arch, homedir, platform } from "os"; +import { ensureDir } from "fs-extra"; +import { join } from "path"; +import { dirSync } from "tmp-promise"; +import { lt, parse } from "semver"; +import { watch } from "chokidar"; +import { + activate as archiveFilesystemProvider_activate, + zipArchiveScheme, +} from "./common/vscode/archive-filesystem-provider"; +import { + CodeQLCliServer, + OLDEST_SUPPORTED_CLI_VERSION, +} from "./codeql-cli/cli"; import { + ADD_DATABASE_SOURCE_TO_WORKSPACE_SETTING, + addDatabaseSourceToWorkspace, CliConfigListener, DistributionConfigListener, - isCanary, - MAX_QUERIES, + GitHubDatabaseConfigListener, QueryHistoryConfigListener, - QueryServerConfigListener -} from './config'; -import * as languageSupport from './languageSupport'; -import { DatabaseItem, DatabaseManager } from './databases'; -import { DatabaseUI } from './databases-ui'; + QueryServerConfigListener, + VariantAnalysisConfigListener, +} from "./config"; import { + AstViewer, + createLanguageClient, + getQueryEditorCommands, + install, + TemplatePrintAstProvider, + TemplatePrintCfgProvider, TemplateQueryDefinitionProvider, TemplateQueryReferenceProvider, - TemplatePrintAstProvider, - TemplatePrintCfgProvider -} from './contextual/templateProvider'; +} from "./language-support"; +import { DatabaseManager } from "./databases/local-databases"; +import { DatabaseUI } from "./databases/local-databases-ui"; +import type { FindDistributionResult } from "./codeql-cli/distribution"; import { DEFAULT_DISTRIBUTION_VERSION_RANGE, DistributionKind, DistributionManager, DistributionUpdateCheckResultKind, - FindDistributionResult, FindDistributionResultKind, +} from "./codeql-cli/distribution"; +import { GithubApiError, - GithubRateLimitedError -} from './distribution'; + GithubRateLimitedError, +} from "./codeql-cli/distribution/github-api-error"; +import { tmpDir, tmpDirDisposal } from "./tmp-dir"; +import { prepareCodeTour } from "./code-tour/code-tour"; import { - findLanguage, - tmpDirDisposal, showBinaryChoiceDialog, + showInformationMessageWithAction, +} from "./common/vscode/dialog"; +import { + asError, + assertNever, + getErrorMessage, + getErrorStack, +} from "./common/helpers-pure"; +import { + LocalQueries, + QuickEvalCodeLensProvider, + ResultsView, + WebviewReveal, +} from "./local-queries"; +import type { BaseLogger } from "./common/logging"; +import { showAndLogErrorMessage, - showAndLogWarningMessage, + showAndLogExceptionWithTelemetry, showAndLogInformationMessage, - showInformationMessageWithAction, - tmpDir -} from './helpers'; -import { asError, assertNever, getErrorMessage } from './pure/helpers-pure'; -import { spawnIdeServer } from './ide-server'; -import { InterfaceManager } from './interface'; -import { WebviewReveal } from './interface-utils'; -import { ideServerLogger, logger, queryServerLogger } from './logging'; -import { QueryHistoryManager } from './query-history'; -import { CompletedLocalQueryInfo, LocalQueryInfo } from './query-results'; -import * as qsClient from './queryserver-client'; -import { displayQuickQuery } from './quick-query'; -import { compileAndRunQueryAgainstDatabase, createInitialQueryInfo } from './run-queries'; -import { QLTestAdapterFactory } from './test-adapter'; -import { TestUIService } from './test-ui'; -import { CompareInterfaceManager } from './compare/compare-interface'; -import { gatherQlFiles } from './pure/files'; -import { initializeTelemetry } from './telemetry'; + showAndLogWarningMessage, +} from "./common/logging"; +import type { ProgressReporter } from "./common/logging/vscode"; import { - commandRunner, - commandRunnerWithProgress, - ProgressCallback, - withProgress, - ProgressUpdate -} from './commandRunner'; -import { CodeQlStatusBarHandler } from './status-bar'; - -import { Credentials } from './authentication'; -import { RemoteQueriesManager } from './remote-queries/remote-queries-manager'; -import { RemoteQueryResult } from './remote-queries/remote-query-result'; -import { URLSearchParams } from 'url'; -import { handleDownloadPacks, handleInstallPackDependencies } from './packaging'; -import { HistoryItemLabelProvider } from './history-item-label-provider'; -import { exportRemoteQueryResults } from './remote-queries/export-results'; -import { RemoteQuery } from './remote-queries/remote-query'; -import { EvalLogViewer } from './eval-log-viewer'; -import { SummaryLanguageSupport } from './log-insights/summary-language-support'; + extLogger, + languageServerLogger, + queryServerLogger, + getQueryServerForWarmingOverlayBaseCacheLogger, +} from "./common/logging/vscode"; +import { QueryHistoryManager } from "./query-history/query-history-manager"; +import type { CompletedLocalQueryInfo } from "./query-results"; +import { CompareView } from "./compare/compare-view"; +import { + initializeTelemetry, + telemetryListener, +} from "./common/vscode/telemetry"; +import type { ProgressCallback } from "./common/vscode/progress"; +import { withProgress } from "./common/vscode/progress"; +import { CodeQlStatusBarHandler } from "./status-bar"; +import { getPackagingCommands } from "./packaging"; +import { HistoryItemLabelProvider } from "./query-history/history-item-label-provider"; +import { EvalLogViewer } from "./query-evaluation-logging"; +import { SummaryLanguageSupport } from "./log-insights/summary-language-support"; +import { LogScannerService } from "./log-insights/log-scanner-service"; +import { VariantAnalysisView } from "./variant-analysis/variant-analysis-view"; +import { VariantAnalysisViewSerializer } from "./variant-analysis/variant-analysis-view-serializer"; +import { VariantAnalysisManager } from "./variant-analysis/variant-analysis-manager"; +import { createVariantAnalysisContentProvider } from "./variant-analysis/variant-analysis-content-provider"; +import { VSCodeMockGitHubApiServer } from "./common/mock-gh-api/vscode/vscode-mock-gh-api-server"; +import { VariantAnalysisResultsManager } from "./variant-analysis/variant-analysis-results-manager"; +import { ExtensionApp } from "./common/vscode/extension-app"; +import { DbModule } from "./databases/db-module"; +import { redactableError } from "./common/errors"; +import { QLDebugAdapterDescriptorFactory } from "./debugger/debugger-factory"; +import type { QueryHistoryDirs } from "./query-history/query-history-dirs"; +import type { + AllExtensionCommands, + BaseCommands, + PreActivationCommands, + QueryServerCommands, +} from "./common/commands"; +import { getAstCfgCommands } from "./language-support/ast-viewer/ast-cfg-commands"; +import type { App } from "./common/app"; +import { registerCommandWithErrorHandling } from "./common/vscode/commands"; +import { DebuggerUI } from "./debugger/debugger-ui"; +import { ModelEditorModule } from "./model-editor/model-editor-module"; +import { TestManager } from "./query-testing/test-manager"; +import { TestRunner } from "./query-testing/test-runner"; +import { QueryRunner, QueryServerClient } from "./query-server"; +import { QueriesModule } from "./queries-panel/queries-module"; +import { OpenReferencedFileCodeLensProvider } from "./local-queries/open-referenced-file-code-lens-provider"; +import { LanguageContextStore } from "./language-context-store"; +import { LanguageSelectionPanel } from "./language-selection-panel/language-selection-panel"; +import { GitHubDatabasesModule } from "./databases/github-databases"; +import { DatabaseFetcher } from "./databases/database-fetcher"; +import { ComparePerformanceView } from "./compare-performance/compare-performance-view"; /** * extension.ts @@ -128,29 +166,123 @@ const errorStubs: Disposable[] = []; */ let isInstallingOrUpdatingDistribution = false; -const extensionId = 'GitHub.vscode-codeql'; +const extensionId = "GitHub.vscode-codeql"; const extension = extensions.getExtension(extensionId); +/** + * Return all commands that are not tied to the more specific managers. + */ +function getCommands( + app: App, + cliServer: CodeQLCliServer, + queryRunner: QueryRunner, + queryRunnerForWarmingOverlayBaseCache: QueryRunner | undefined, + languageClient: LanguageClient, +): BaseCommands { + const getCliVersion = async () => { + try { + return await cliServer.getVersion(); + } catch { + return ""; + } + }; + + const restartQueryServer = async () => + withProgress( + async (progress: ProgressCallback) => { + // Restart all of the spawned servers: cli, query, and language. + cliServer.restartCliServer(); + await Promise.all([ + queryRunner.restartQueryServer(progress), + queryRunnerForWarmingOverlayBaseCache + ? queryRunnerForWarmingOverlayBaseCache.restartQueryServer(progress) + : Promise.resolve(), + (async () => { + if (languageClient.isRunning()) { + await languageClient.restart(); + } else { + await languageClient.start(); + } + })(), + ]); + void showAndLogInformationMessage( + queryServerLogger, + "CodeQL Query Server restarted.", + ); + if (queryRunnerForWarmingOverlayBaseCache) { + void showAndLogErrorMessage( + getQueryServerForWarmingOverlayBaseCacheLogger(), + "CodeQL Query Server for warming overlay-base cache restarted.", + ); + } + }, + { + title: "Restarting Query Server", + }, + ); + + return { + "codeQL.openDocumentation": async () => { + await env.openExternal(Uri.parse("https://codeql.github.com/docs/")); + }, + "codeQL.restartQueryServer": restartQueryServer, + "codeQL.restartQueryServerOnConfigChange": restartQueryServer, + "codeQL.restartLegacyQueryServerOnConfigChange": restartQueryServer, + "codeQL.restartQueryServerOnExternalConfigChange": restartQueryServer, + "codeQL.copyVersion": async () => { + const text = `CodeQL extension version: ${ + extension?.packageJSON.version + } \nCodeQL CLI version: ${(await getCliVersion()).toString()} \nPlatform: ${platform()} ${arch()}`; + await env.clipboard.writeText(text); + void showAndLogInformationMessage(extLogger, text); + }, + "codeQL.authenticateToGitHub": async () => { + /** + * Credentials for authenticating to GitHub. + * These are used when making API calls. + */ + const octokit = await app.credentials.getOctokit(); + const userInfo = await octokit.users.getAuthenticated(); + void showAndLogInformationMessage( + extLogger, + `Authenticated to GitHub as user: ${userInfo.data.login}`, + ); + }, + "codeQL.showLogs": async () => { + extLogger.show(); + }, + }; +} + /** * If the user tries to execute vscode commands after extension activation is failed, give * a sensible error message. * * @param excludedCommands List of commands for which we should not register error stubs. */ -function registerErrorStubs(excludedCommands: string[], stubGenerator: (command: string) => () => Promise): void { +function registerErrorStubs( + excludedCommands: string[], + stubGenerator: (command: string) => () => Promise, +): void { // Remove existing stubs - errorStubs.forEach(stub => stub.dispose()); + errorStubs.forEach((stub) => void stub.dispose()); if (extension === undefined) { throw new Error(`Can't find extension ${extensionId}`); } - const stubbedCommands: string[] - = extension.packageJSON.contributes.commands.map((entry: { command: string }) => entry.command); + const stubbedCommands: string[] = + extension.packageJSON.contributes.commands.map( + (entry: { command: string }) => entry.command, + ); - stubbedCommands.forEach(command => { + stubbedCommands.forEach((command) => { if (excludedCommands.indexOf(command) === -1) { - errorStubs.push(commandRunner(command, stubGenerator(command))); + // This is purposefully using `registerCommandWithErrorHandling` instead of the command manager because these + // commands are untyped and registered pre-activation. + errorStubs.push( + registerCommandWithErrorHandling(command, stubGenerator(command)), + ); } }); } @@ -162,13 +294,41 @@ function registerErrorStubs(excludedCommands: string[], stubGenerator: (command: export interface CodeQLExtensionInterface { readonly ctx: ExtensionContext; readonly cliServer: CodeQLCliServer; - readonly qs: qsClient.QueryServerClient; + readonly qs: QueryRunner; + readonly qsForWarmingOverlayBaseCache: QueryRunner | undefined; readonly distributionManager: DistributionManager; readonly databaseManager: DatabaseManager; readonly databaseUI: DatabaseUI; + readonly localQueries: LocalQueries; + readonly variantAnalysisManager: VariantAnalysisManager; readonly dispose: () => void; } +interface DistributionUpdateConfig { + isUserInitiated: boolean; + shouldDisplayMessageWhenNoUpdates: boolean; + allowAutoUpdating: boolean; +} + +const shouldUpdateOnNextActivationKey = "shouldUpdateOnNextActivation"; + +const codeQlVersionRange = DEFAULT_DISTRIBUTION_VERSION_RANGE; + +// This is the minimum version of vscode that we _want_ to support. We want to update to Node 20, but that +// requires 1.90 or later. If we change the minimum version in the package.json, then anyone on an older version of vscode will +// silently be unable to upgrade. So, the solution is to first bump the minimum version here and release. Then +// bump the version in the package.json and release again. This way, anyone on an older version of vscode will get a warning +// before silently being refused to upgrade. +const MIN_VERSION = "1.90.0"; + +function sendConfigTelemetryData() { + const config: Record = {}; + config[ADD_DATABASE_SOURCE_TO_WORKSPACE_SETTING.qualifiedName] = + addDatabaseSourceToWorkspace().toString(); + + telemetryListener?.sendConfigInformation(config); +} + /** * Returns the CodeQLExtensionInterface, or an empty object if the interface is not * available after activation is complete. This will happen if there is no cli @@ -179,958 +339,1013 @@ export interface CodeQLExtensionInterface { * * @returns CodeQLExtensionInterface */ -export async function activate(ctx: ExtensionContext): Promise> { - - void logger.log(`Starting ${extensionId} extension`); +// ts-unused-exports:disable-next-line +export async function activate( + ctx: ExtensionContext, +): Promise { + void extLogger.log(`Starting ${extensionId} extension`); if (extension === undefined) { throw new Error(`Can't find extension ${extensionId}`); } const distributionConfigListener = new DistributionConfigListener(); await initializeLogging(ctx); - await initializeTelemetry(extension, ctx); - languageSupport.install(); + const telemetryListener = await initializeTelemetry(extension, ctx); + addUnhandledRejectionListener(); + install(); - const codelensProvider = new QuickEvalCodeLensProvider(); - languages.registerCodeLensProvider({ scheme: 'file', language: 'ql' }, codelensProvider); + const app = new ExtensionApp(ctx); - ctx.subscriptions.push(distributionConfigListener); - const codeQlVersionRange = DEFAULT_DISTRIBUTION_VERSION_RANGE; - const distributionManager = new DistributionManager(distributionConfigListener, codeQlVersionRange, ctx); + sendConfigTelemetryData(); - const shouldUpdateOnNextActivationKey = 'shouldUpdateOnNextActivation'; + const quickEvalCodeLensProvider = new QuickEvalCodeLensProvider(); + languages.registerCodeLensProvider( + { scheme: "file", language: "ql" }, + quickEvalCodeLensProvider, + ); - registerErrorStubs([checkForUpdatesCommand], command => (async () => { - void showAndLogErrorMessage(`Can't execute ${command}: waiting to finish loading CodeQL CLI.`); - })); + const openReferencedFileCodeLensProvider = + new OpenReferencedFileCodeLensProvider(); + languages.registerCodeLensProvider( + { scheme: "file", pattern: "**/*.qlref" }, + openReferencedFileCodeLensProvider, + ); - interface DistributionUpdateConfig { - isUserInitiated: boolean; - shouldDisplayMessageWhenNoUpdates: boolean; - allowAutoUpdating: boolean; - } + ctx.subscriptions.push(distributionConfigListener); + const distributionManager = new DistributionManager( + distributionConfigListener, + codeQlVersionRange, + ctx, + app.logger, + ); + await distributionManager.initialize(); - async function installOrUpdateDistributionWithProgressTitle(progressTitle: string, config: DistributionUpdateConfig): Promise { - const minSecondsSinceLastUpdateCheck = config.isUserInitiated ? 0 : 86400; - const noUpdatesLoggingFunc = config.shouldDisplayMessageWhenNoUpdates ? - showAndLogInformationMessage : async (message: string) => void logger.log(message); - const result = await distributionManager.checkForUpdatesToExtensionManagedDistribution(minSecondsSinceLastUpdateCheck); - - // We do want to auto update if there is no distribution at all - const allowAutoUpdating = config.allowAutoUpdating || !await distributionManager.hasDistribution(); - - switch (result.kind) { - case DistributionUpdateCheckResultKind.AlreadyCheckedRecentlyResult: - void logger.log('Didn\'t perform CodeQL CLI update check since a check was already performed within the previous ' + - `${minSecondsSinceLastUpdateCheck} seconds.`); - break; - case DistributionUpdateCheckResultKind.AlreadyUpToDate: - await noUpdatesLoggingFunc('CodeQL CLI already up to date.'); - break; - case DistributionUpdateCheckResultKind.InvalidLocation: - await noUpdatesLoggingFunc('CodeQL CLI is installed externally so could not be updated.'); - break; - case DistributionUpdateCheckResultKind.UpdateAvailable: - if (beganMainExtensionActivation || !allowAutoUpdating) { - const updateAvailableMessage = `Version "${result.updatedRelease.name}" of the CodeQL CLI is now available. ` + - 'Do you wish to upgrade?'; - await ctx.globalState.update(shouldUpdateOnNextActivationKey, true); - if (await showInformationMessageWithAction(updateAvailableMessage, 'Restart and Upgrade')) { - await commands.executeCommand('workbench.action.reloadWindow'); - } - } else { - const progressOptions: ProgressOptions = { - title: progressTitle, - location: ProgressLocation.Notification, - }; + registerErrorStubs([checkForUpdatesCommand], (command) => async () => { + void showAndLogErrorMessage( + extLogger, + `Can't execute ${command}: waiting to finish loading CodeQL CLI.`, + ); + }); - await withProgress(progressOptions, progress => - distributionManager.installExtensionManagedDistributionRelease(result.updatedRelease, progress)); + // Checking the vscode version should not block extension activation. + void assertVSCodeVersionGreaterThan(MIN_VERSION, ctx); - await ctx.globalState.update(shouldUpdateOnNextActivationKey, false); - void showAndLogInformationMessage(`CodeQL CLI updated to version "${result.updatedRelease.name}".`); - } - break; - default: - assertNever(result); - } - } + ctx.subscriptions.push( + distributionConfigListener.onDidChangeConfiguration(() => + installOrUpdateThenTryActivate( + ctx, + app, + distributionManager, + distributionConfigListener, + { + isUserInitiated: true, + shouldDisplayMessageWhenNoUpdates: false, + allowAutoUpdating: true, + }, + ), + ), + ); + ctx.subscriptions.push( + // This is purposefully using `registerCommandWithErrorHandling` directly instead of the command manager + // because this command is registered pre-activation. + registerCommandWithErrorHandling(checkForUpdatesCommand, () => + installOrUpdateThenTryActivate( + ctx, + app, + distributionManager, + distributionConfigListener, + { + isUserInitiated: true, + shouldDisplayMessageWhenNoUpdates: true, + allowAutoUpdating: true, + }, + ), + ), + ); - async function installOrUpdateDistribution(config: DistributionUpdateConfig): Promise { - if (isInstallingOrUpdatingDistribution) { - throw new Error('Already installing or updating CodeQL CLI'); - } - isInstallingOrUpdatingDistribution = true; - const codeQlInstalled = await distributionManager.getCodeQlPathWithoutVersionCheck() !== undefined; - const willUpdateCodeQl = ctx.globalState.get(shouldUpdateOnNextActivationKey); - const messageText = willUpdateCodeQl - ? 'Updating CodeQL CLI' - : codeQlInstalled - ? 'Checking for updates to CodeQL CLI' - : 'Installing CodeQL CLI'; + const variantAnalysisViewSerializer = new VariantAnalysisViewSerializer(app); + Window.registerWebviewPanelSerializer( + VariantAnalysisView.viewType, + variantAnalysisViewSerializer, + ); - try { - await installOrUpdateDistributionWithProgressTitle(messageText, config); - } catch (e) { - // Don't rethrow the exception, because if the config is changed, we want to be able to retry installing - // or updating the distribution. - const alertFunction = (codeQlInstalled && !config.isUserInitiated) ? - showAndLogWarningMessage : showAndLogErrorMessage; - const taskDescription = (willUpdateCodeQl ? 'update' : - codeQlInstalled ? 'check for updates to' : 'install') + ' CodeQL CLI'; - - if (e instanceof GithubRateLimitedError) { - void alertFunction(`Rate limited while trying to ${taskDescription}. Please try again after ` + - `your rate limit window resets at ${e.rateLimitResetDate.toLocaleString(env.language)}.`); - } else if (e instanceof GithubApiError) { - void alertFunction(`Encountered GitHub API error while trying to ${taskDescription}. ` + e); - } - void alertFunction(`Unable to ${taskDescription}. ` + e); - } finally { - isInstallingOrUpdatingDistribution = false; - } - } + const codeQlExtension = await installOrUpdateThenTryActivate( + ctx, + app, + distributionManager, + distributionConfigListener, + { + isUserInitiated: !!ctx.globalState.get(shouldUpdateOnNextActivationKey), + shouldDisplayMessageWhenNoUpdates: false, - async function getDistributionDisplayingDistributionWarnings(): Promise { - const result = await distributionManager.getDistribution(); - switch (result.kind) { - case FindDistributionResultKind.CompatibleDistribution: - void logger.log(`Found compatible version of CodeQL CLI (version ${result.version.raw})`); - break; - case FindDistributionResultKind.IncompatibleDistribution: { - const fixGuidanceMessage = (() => { - switch (result.distribution.kind) { - case DistributionKind.ExtensionManaged: - return 'Please update the CodeQL CLI by running the "CodeQL: Check for CLI Updates" command.'; - case DistributionKind.CustomPathConfig: - return `Please update the \"CodeQL CLI Executable Path\" setting to point to a CLI in the version range ${codeQlVersionRange}.`; - case DistributionKind.PathEnvironmentVariable: - return `Please update the CodeQL CLI on your PATH to a version compatible with ${codeQlVersionRange}, or ` + - `set the \"CodeQL CLI Executable Path\" setting to the path of a CLI version compatible with ${codeQlVersionRange}.`; - } - })(); + // only auto update on startup if the user has previously requested an update + // otherwise, ask user to accept the update + allowAutoUpdating: !!ctx.globalState.get(shouldUpdateOnNextActivationKey), + }, + ); + if (codeQlExtension !== undefined) { + variantAnalysisViewSerializer.onExtensionLoaded( + codeQlExtension.variantAnalysisManager, + ); + codeQlExtension.cliServer.addVersionChangedListener((ver) => { + telemetryListener.cliVersion = ver?.version; + }); + + let unsupportedWarningShown = false; + codeQlExtension.cliServer.addVersionChangedListener((ver) => { + if ( + ver && + !unsupportedWarningShown && + OLDEST_SUPPORTED_CLI_VERSION.compare(ver.version) === 1 + ) { void showAndLogWarningMessage( - `The current version of the CodeQL CLI (${result.version.raw}) ` + - `is incompatible with this extension. ${fixGuidanceMessage}` + extLogger, + `You are using an unsupported version of the CodeQL CLI (${ver.version.toString()}). ` + + `The minimum supported version is ${OLDEST_SUPPORTED_CLI_VERSION.toString()}. ` + + `Please upgrade to a newer version of the CodeQL CLI.`, ); - break; + unsupportedWarningShown = true; } - case FindDistributionResultKind.UnknownCompatibilityDistribution: - void showAndLogWarningMessage( - 'Compatibility with the configured CodeQL CLI could not be determined. ' + - 'You may experience problems using the extension.' + }); + + // Expose the CodeQL CLI features to the extension context under `codeQL.cliFeatures.*`. + let cliFeatures: { [feature: string]: boolean | undefined } = {}; + codeQlExtension.cliServer.addVersionChangedListener(async (ver) => { + for (const feat of Object.keys(cliFeatures)) { + cliFeatures[feat] = false; + } + cliFeatures = { + ...cliFeatures, + ...(ver?.features ?? {}), + }; + for (const feat of Object.keys(cliFeatures)) { + await app.commands.execute( + "setContext", + `codeQL.cliFeatures.${feat}`, + cliFeatures[feat] ?? false, ); - break; - case FindDistributionResultKind.NoDistribution: - void showAndLogErrorMessage('The CodeQL CLI could not be found.'); - break; - default: - assertNever(result); - } - return result; + } + }); } - async function installOrUpdateThenTryActivate( - config: DistributionUpdateConfig - ): Promise> { + return codeQlExtension; +} - await installOrUpdateDistribution(config); +async function installOrUpdateDistributionWithProgressTitle( + ctx: ExtensionContext, + app: ExtensionApp, + distributionManager: DistributionManager, + progressTitle: string, + config: DistributionUpdateConfig, +): Promise { + const minSecondsSinceLastUpdateCheck = config.isUserInitiated ? 0 : 86400; + const noUpdatesLoggingFunc = config.shouldDisplayMessageWhenNoUpdates + ? showAndLogInformationMessage + : async (logger: BaseLogger, message: string) => void logger.log(message); + const result = + await distributionManager.checkForUpdatesToExtensionManagedDistribution( + minSecondsSinceLastUpdateCheck, + ); - // Display the warnings even if the extension has already activated. - const distributionResult = await getDistributionDisplayingDistributionWarnings(); - let extensionInterface: CodeQLExtensionInterface | Record = {}; - if (!beganMainExtensionActivation && distributionResult.kind !== FindDistributionResultKind.NoDistribution) { - extensionInterface = await activateWithInstalledDistribution( - ctx, - distributionManager, - distributionConfigListener + // We do want to auto update if there is no distribution at all + const allowAutoUpdating = + config.allowAutoUpdating || !(await distributionManager.hasDistribution()); + + switch (result.kind) { + case DistributionUpdateCheckResultKind.AlreadyCheckedRecentlyResult: + void extLogger.log( + "Didn't perform CodeQL CLI update check since a check was already performed within the previous " + + `${minSecondsSinceLastUpdateCheck} seconds.`, + ); + break; + case DistributionUpdateCheckResultKind.AlreadyUpToDate: + await noUpdatesLoggingFunc(extLogger, "CodeQL CLI already up to date."); + break; + case DistributionUpdateCheckResultKind.InvalidLocation: + await noUpdatesLoggingFunc( + extLogger, + "CodeQL CLI is installed externally so could not be updated.", ); + break; + case DistributionUpdateCheckResultKind.UpdateAvailable: + if (beganMainExtensionActivation || !allowAutoUpdating) { + const updateAvailableMessage = + `Version "${result.updatedRelease.name}" of the CodeQL CLI is now available. ` + + "Do you wish to upgrade?"; + await ctx.globalState.update(shouldUpdateOnNextActivationKey, true); + if ( + await showInformationMessageWithAction( + updateAvailableMessage, + "Restart and Upgrade", + ) + ) { + await app.commands.execute("workbench.action.reloadWindow"); + } + } else { + await withProgress( + (progress) => + distributionManager.installExtensionManagedDistributionRelease( + result.updatedRelease, + progress, + ), + { + title: progressTitle, + }, + ); - } else if (distributionResult.kind === FindDistributionResultKind.NoDistribution) { - registerErrorStubs([checkForUpdatesCommand], command => async () => { - const installActionName = 'Install CodeQL CLI'; - const chosenAction = await void showAndLogErrorMessage(`Can't execute ${command}: missing CodeQL CLI.`, { - items: [installActionName] - }); - if (chosenAction === installActionName) { - await installOrUpdateThenTryActivate({ - isUserInitiated: true, - shouldDisplayMessageWhenNoUpdates: false, - allowAutoUpdating: true - }); + await ctx.globalState.update(shouldUpdateOnNextActivationKey, false); + void showAndLogInformationMessage( + extLogger, + `CodeQL CLI updated to version "${result.updatedRelease.name}".`, + ); + } + break; + default: + assertNever(result); + } +} + +async function installOrUpdateDistribution( + ctx: ExtensionContext, + app: ExtensionApp, + distributionManager: DistributionManager, + config: DistributionUpdateConfig, +): Promise { + if (isInstallingOrUpdatingDistribution) { + throw new Error("Already installing or updating CodeQL CLI"); + } + isInstallingOrUpdatingDistribution = true; + const codeQlInstalled = + (await distributionManager.getCodeQlPathWithoutVersionCheck()) !== + undefined; + const willUpdateCodeQl = ctx.globalState.get(shouldUpdateOnNextActivationKey); + const messageText = willUpdateCodeQl + ? "Updating CodeQL CLI" + : codeQlInstalled + ? "Checking for updates to CodeQL CLI" + : "Installing CodeQL CLI"; + + try { + await installOrUpdateDistributionWithProgressTitle( + ctx, + app, + distributionManager, + messageText, + config, + ); + } catch (e) { + // Don't rethrow the exception, because if the config is changed, we want to be able to retry installing + // or updating the distribution. + const alertFunction = + codeQlInstalled && !config.isUserInitiated + ? showAndLogWarningMessage + : showAndLogErrorMessage; + const taskDescription = `${ + willUpdateCodeQl + ? "update" + : codeQlInstalled + ? "check for updates to" + : "install" + } CodeQL CLI`; + + if (e instanceof GithubRateLimitedError) { + void alertFunction( + extLogger, + `Rate limited while trying to ${taskDescription}. Please try again after ` + + `your rate limit window resets at ${e.rateLimitResetDate.toLocaleString( + env.language, + )}.`, + ); + } else if (e instanceof GithubApiError) { + void alertFunction( + extLogger, + `Encountered GitHub API error while trying to ${taskDescription}. ${getErrorMessage(e)}`, + ); + } + void alertFunction( + extLogger, + `Unable to ${taskDescription}. ${getErrorMessage(e)}`, + ); + } finally { + isInstallingOrUpdatingDistribution = false; + } +} + +async function getDistributionDisplayingDistributionWarnings( + distributionManager: DistributionManager, +): Promise { + const result = await distributionManager.getDistribution(); + switch (result.kind) { + case FindDistributionResultKind.CompatibleDistribution: + void extLogger.log( + `Found compatible version of CodeQL CLI (version ${result.versionAndFeatures.version.raw})`, + ); + break; + case FindDistributionResultKind.IncompatibleDistribution: { + const fixGuidanceMessage = (() => { + switch (result.distribution.kind) { + case DistributionKind.ExtensionManaged: + return 'Please update the CodeQL CLI by running the "CodeQL: Check for CLI Updates" command.'; + case DistributionKind.CustomPathConfig: + return `Please update the "CodeQL CLI Executable Path" setting to point to a CLI in the version range ${codeQlVersionRange.toString()}.`; + case DistributionKind.PathEnvironmentVariable: + return ( + `Please update the CodeQL CLI on your PATH to a version compatible with ${codeQlVersionRange.toString()}, or ` + + `set the "CodeQL CLI Executable Path" setting to the path of a CLI version compatible with ${codeQlVersionRange.toString()}.` + ); } - }); + })(); + + void showAndLogWarningMessage( + extLogger, + `The current version of the CodeQL CLI (${result.versionAndFeatures.version.raw}) ` + + `is incompatible with this extension. ${fixGuidanceMessage}`, + ); + break; } - return extensionInterface; + case FindDistributionResultKind.UnknownCompatibilityDistribution: + void showAndLogWarningMessage( + extLogger, + "Compatibility with the configured CodeQL CLI could not be determined. " + + "You may experience problems using the extension.", + ); + break; + case FindDistributionResultKind.NoDistribution: + void showAndLogErrorMessage( + extLogger, + "The CodeQL CLI could not be found.", + ); + break; + default: + assertNever(result); } + return result; +} - ctx.subscriptions.push(distributionConfigListener.onDidChangeConfiguration(() => installOrUpdateThenTryActivate({ - isUserInitiated: true, - shouldDisplayMessageWhenNoUpdates: false, - allowAutoUpdating: true - }))); - ctx.subscriptions.push(commandRunner(checkForUpdatesCommand, () => installOrUpdateThenTryActivate({ - isUserInitiated: true, - shouldDisplayMessageWhenNoUpdates: true, - allowAutoUpdating: true - }))); - - return await installOrUpdateThenTryActivate({ - isUserInitiated: !!ctx.globalState.get(shouldUpdateOnNextActivationKey), - shouldDisplayMessageWhenNoUpdates: false, - - // only auto update on startup if the user has previously requested an update - // otherwise, ask user to accept the update - allowAutoUpdating: !!ctx.globalState.get(shouldUpdateOnNextActivationKey) - }); +async function installOrUpdateThenTryActivate( + ctx: ExtensionContext, + app: ExtensionApp, + distributionManager: DistributionManager, + distributionConfigListener: DistributionConfigListener, + config: DistributionUpdateConfig, +): Promise { + await installOrUpdateDistribution(ctx, app, distributionManager, config); + + try { + await prepareCodeTour(app.commands); + } catch (e) { + void extLogger.log( + `Could not open tutorial workspace automatically: ${getErrorMessage(e)}`, + ); + } + + // Display the warnings even if the extension has already activated. + const distributionResult = + await getDistributionDisplayingDistributionWarnings(distributionManager); + if ( + !beganMainExtensionActivation && + distributionResult.kind !== FindDistributionResultKind.NoDistribution + ) { + return await activateWithInstalledDistribution( + ctx, + app, + distributionManager, + distributionConfigListener, + ); + } + + if (distributionResult.kind === FindDistributionResultKind.NoDistribution) { + registerErrorStubs([checkForUpdatesCommand], (command) => async () => { + void extLogger.log(`Can't execute ${command}: missing CodeQL CLI.`); + const showLogName = "Show Log"; + const installActionName = "Install CodeQL CLI"; + const chosenAction = await Window.showErrorMessage( + `Can't execute ${command}: missing CodeQL CLI.`, + showLogName, + installActionName, + ); + if (chosenAction === showLogName) { + extLogger.show(); + } else if (chosenAction === installActionName) { + await installOrUpdateThenTryActivate( + ctx, + app, + distributionManager, + distributionConfigListener, + { + isUserInitiated: true, + shouldDisplayMessageWhenNoUpdates: false, + allowAutoUpdating: true, + }, + ); + } + }); + } + return undefined; } +const CLEAR_PACK_CACHE_ON_EDIT_GLOBS = [ + "**/codeql-pack.yml", + "**/qlpack.yml", + "**/queries.xml", + "**/codeql-pack.lock.yml", + "**/qlpack.lock.yml", + "**/*.dbscheme", + ".codeqlmanifest.json", + "codeql-workspace.yml", +]; + async function activateWithInstalledDistribution( ctx: ExtensionContext, + app: ExtensionApp, distributionManager: DistributionManager, - distributionConfigListener: DistributionConfigListener + distributionConfigListener: DistributionConfigListener, ): Promise { beganMainExtensionActivation = true; // Remove any error stubs command handlers left over from first part // of activation. - errorStubs.forEach((stub) => stub.dispose()); + errorStubs.forEach((stub) => void stub.dispose()); - void logger.log('Initializing configuration listener...'); - const qlConfigurationListener = await QueryServerConfigListener.createQueryServerConfigListener( - distributionManager - ); + void extLogger.log("Initializing configuration listener..."); + const qlConfigurationListener = + await QueryServerConfigListener.createQueryServerConfigListener( + distributionManager, + ); ctx.subscriptions.push(qlConfigurationListener); - void logger.log('Initializing CodeQL cli server...'); + void extLogger.log("Initializing CodeQL language server."); + const languageClient = createLanguageClient(qlConfigurationListener); + + void extLogger.log("Initializing CodeQL cli server..."); const cliServer = new CodeQLCliServer( + app, + languageClient, distributionManager, new CliConfigListener(), - logger + extLogger, ); ctx.subscriptions.push(cliServer); + watchExternalConfigFile(app, ctx); - const statusBar = new CodeQlStatusBarHandler(cliServer, distributionConfigListener); + const statusBar = new CodeQlStatusBarHandler( + cliServer, + distributionConfigListener, + ); ctx.subscriptions.push(statusBar); - void logger.log('Initializing query server client.'); - const qs = new qsClient.QueryServerClient( + void extLogger.log("Initializing query server client."); + const qs = await createQueryServer( + app, qlConfigurationListener, cliServer, - { - logger: queryServerLogger, - contextStoragePath: getContextStoragePath(ctx), - }, - (task) => - Window.withProgress( - { title: 'CodeQL query server', location: ProgressLocation.Window }, - task - ) + ctx, + false, + ); + + let qsForWarmingOverlayBaseCache: QueryRunner | undefined; + + // construct qsForWarmingOverlayBaseCache lazily, as most users don't need it + async function getQsForWarmingOverlayBaseCache(): Promise { + if (!qsForWarmingOverlayBaseCache) { + void extLogger.log( + "Initializing base cache warming query server client.", + ); + qsForWarmingOverlayBaseCache = await createQueryServer( + app, + qlConfigurationListener, + cliServer, + ctx, + true, + ); + } + return qsForWarmingOverlayBaseCache; + } + + for (const glob of CLEAR_PACK_CACHE_ON_EDIT_GLOBS) { + const fsWatcher = workspace.createFileSystemWatcher(glob); + ctx.subscriptions.push(fsWatcher); + + const clearPackCache = async (_uri: Uri) => { + await qs.clearPackCache(); + }; + + fsWatcher.onDidCreate(clearPackCache); + fsWatcher.onDidChange(clearPackCache); + fsWatcher.onDidDelete(clearPackCache); + } + + void extLogger.log("Initializing language context."); + const languageContext = new LanguageContextStore(app); + + void extLogger.log("Initializing language selector."); + const languageSelectionPanel = new LanguageSelectionPanel(languageContext); + ctx.subscriptions.push(languageSelectionPanel); + + void extLogger.log("Initializing database manager."); + const dbm = new DatabaseManager( + ctx, + app, + qs, + cliServer, + languageContext, + extLogger, + ); + + // Let this run async. + void dbm.loadPersistedState(); + + const databaseFetcher = new DatabaseFetcher( + app, + dbm, + getContextStoragePath(ctx), + cliServer, ); - ctx.subscriptions.push(qs); - await qs.startQueryServer(); - void logger.log('Initializing database manager.'); - const dbm = new DatabaseManager(ctx, qs, cliServer, logger); ctx.subscriptions.push(dbm); - void logger.log('Initializing database panel.'); + + void extLogger.log("Initializing database panel."); const databaseUI = new DatabaseUI( + app, dbm, + databaseFetcher, + languageContext, qs, getContextStoragePath(ctx), ctx.extensionPath, - () => Credentials.initialize(ctx), ); - databaseUI.init(); ctx.subscriptions.push(databaseUI); - void logger.log('Initializing evaluator log viewer.'); + const queriesModule = QueriesModule.initialize(app, languageContext); + + void extLogger.log("Initializing evaluator log viewer."); const evalLogViewer = new EvalLogViewer(); ctx.subscriptions.push(evalLogViewer); - void logger.log('Initializing query history manager.'); + void extLogger.log("Initializing query history manager."); const queryHistoryConfigurationListener = new QueryHistoryConfigListener(); ctx.subscriptions.push(queryHistoryConfigurationListener); - const showResults = async (item: CompletedLocalQueryInfo) => - showResultsForCompletedQuery(item, WebviewReveal.Forced); - const queryStorageDir = path.join(ctx.globalStorageUri.fsPath, 'queries'); - await fs.ensureDir(queryStorageDir); - const labelProvider = new HistoryItemLabelProvider(queryHistoryConfigurationListener); + const queryStorageDir = join(ctx.globalStorageUri.fsPath, "queries"); + await ensureDir(queryStorageDir); - void logger.log('Initializing results panel interface.'); - const intm = new InterfaceManager(ctx, dbm, cliServer, queryServerLogger, labelProvider); - ctx.subscriptions.push(intm); - - void logger.log('Initializing variant analysis manager.'); - const rqm = new RemoteQueriesManager(ctx, cliServer, queryStorageDir, logger); - ctx.subscriptions.push(rqm); + // Store contextual queries in a temporary folder so that they are removed + // when the application closes. There is no need for the user to interact with them. + const contextualQueryStorageDir = join( + tmpDir.name, + "contextual-query-storage", + ); + await ensureDir(contextualQueryStorageDir); - void logger.log('Initializing query history.'); - const qhm = new QueryHistoryManager( - qs, - dbm, - intm, - rqm, - evalLogViewer, - queryStorageDir, - ctx, + const labelProvider = new HistoryItemLabelProvider( queryHistoryConfigurationListener, - labelProvider, - async (from: CompletedLocalQueryInfo, to: CompletedLocalQueryInfo) => - showResultsForComparison(from, to), ); - - ctx.subscriptions.push(qhm); - - void logger.log('Reading query history'); - await qhm.readQueryHistory(); - - void logger.log('Initializing compare panel interface.'); - const cmpm = new CompareInterfaceManager( - ctx, + void extLogger.log("Initializing results panel interface."); + const localQueryResultsView = new ResultsView( + app, dbm, cliServer, queryServerLogger, labelProvider, - showResults ); - ctx.subscriptions.push(cmpm); - - void logger.log('Initializing source archive filesystem provider.'); - archiveFilesystemProvider.activate(ctx); - - async function showResultsForComparison( - from: CompletedLocalQueryInfo, - to: CompletedLocalQueryInfo - ): Promise { - try { - await cmpm.showResults(from, to); - } catch (e) { - void showAndLogErrorMessage(getErrorMessage(e)); - } - } - - async function showResultsForCompletedQuery( - query: CompletedLocalQueryInfo, - forceReveal: WebviewReveal - ): Promise { - await intm.showResults(query, forceReveal, false); - } - - async function compileAndRunQuery( - quickEval: boolean, - selectedQuery: Uri | undefined, - progress: ProgressCallback, - token: CancellationToken, - databaseItem: DatabaseItem | undefined, - range?: Range - ): Promise { - if (qs !== undefined) { - // If no databaseItem is specified, use the database currently selected in the Databases UI - databaseItem = databaseItem || await databaseUI.getDatabaseItem(progress, token); - if (databaseItem === undefined) { - throw new Error('Can\'t run query without a selected database'); - } - const databaseInfo = { - name: databaseItem.name, - databaseUri: databaseItem.databaseUri.toString(), - }; - - // handle cancellation from the history view. - const source = new CancellationTokenSource(); - token.onCancellationRequested(() => source.cancel()); - - const initialInfo = await createInitialQueryInfo(selectedQuery, databaseInfo, quickEval, range); - const item = new LocalQueryInfo(initialInfo, source); - qhm.addQuery(item); - try { - const completedQueryInfo = await compileAndRunQueryAgainstDatabase( - cliServer, - qs, - databaseItem, - initialInfo, - queryStorageDir, - progress, - source.token, - undefined, - item, - ); - item.completeThisQuery(completedQueryInfo); - await showResultsForCompletedQuery(item as CompletedLocalQueryInfo, WebviewReveal.NotForced); - // Note we must update the query history view after showing results as the - // display and sorting might depend on the number of results - } catch (e) { - const err = asError(e); - err.message = `Error running query: ${err.message}`; - item.failureReason = err.message; - throw e; - } finally { - await qhm.refreshTreeView(); - source.dispose(); - } - } - } - - const qhelpTmpDir = tmp.dirSync({ prefix: 'qhelp_', keep: false, unsafeCleanup: true }); - ctx.subscriptions.push({ dispose: qhelpTmpDir.removeCallback }); - - async function previewQueryHelp( - selectedQuery: Uri - ): Promise { - // selectedQuery is unpopulated when executing through the command palette - const pathToQhelp = selectedQuery ? selectedQuery.fsPath : window.activeTextEditor?.document.uri.fsPath; - if (pathToQhelp) { - // Create temporary directory - const relativePathToMd = path.basename(pathToQhelp, '.qhelp') + '.md'; - const absolutePathToMd = path.join(qhelpTmpDir.name, relativePathToMd); - const uri = Uri.file(absolutePathToMd); - try { - await cliServer.generateQueryHelp(pathToQhelp, absolutePathToMd); - await commands.executeCommand('markdown.showPreviewToSide', uri); - } catch (e) { - const errorMessage = getErrorMessage(e).includes('Generating qhelp in markdown') ? ( - `Could not generate markdown from ${pathToQhelp}: Bad formatting in .qhelp file.` - ) : `Could not open a preview of the generated file (${absolutePathToMd}).`; - void showAndLogErrorMessage(errorMessage, { fullMessage: `${errorMessage}\n${e}` }); - } - } + ctx.subscriptions.push(localQueryResultsView); - } + void extLogger.log("Initializing variant analysis manager."); - async function openReferencedFile( - selectedQuery: Uri - ): Promise { - // If no file is selected, the path of the file in the editor is selected - const path = selectedQuery?.fsPath || window.activeTextEditor?.document.uri.fsPath; - if (qs !== undefined && path) { - if (await cliServer.cliConstraints.supportsResolveQlref()) { - const resolved = await cliServer.resolveQlref(path); - const uri = Uri.file(resolved.resolvedPath); - await window.showTextDocument(uri, { preview: false }); - } else { - void showAndLogErrorMessage( - 'Jumping from a .qlref file to the .ql file it references is not ' - + 'supported with the CLI version you are running.\n' - + `Please upgrade your CLI to version ${CliVersionConstraint.CLI_VERSION_WITH_RESOLVE_QLREF - } or later to use this feature.`); - } - } - } - - ctx.subscriptions.push(tmpDirDisposal); + const dbModule = await DbModule.initialize(app); - void logger.log('Initializing CodeQL language server.'); - const client = new LanguageClient( - 'CodeQL Language Server', - () => spawnIdeServer(qlConfigurationListener), - { - documentSelector: [ - { language: 'ql', scheme: 'file' }, - { language: 'yaml', scheme: 'file', pattern: '**/qlpack.yml' }, - ], - synchronize: { - configurationSection: 'codeQL', - }, - // Ensure that language server exceptions are logged to the same channel as its output. - outputChannel: ideServerLogger.outputChannel, - }, - true + const variantAnalysisStorageDir = join( + ctx.globalStorageUri.fsPath, + "variant-analyses", ); - - void logger.log('Initializing QLTest interface.'); - const testExplorerExtension = extensions.getExtension( - testExplorerExtensionId + await ensureDir(variantAnalysisStorageDir); + const variantAnalysisConfig = new VariantAnalysisConfigListener(); + const variantAnalysisResultsManager = new VariantAnalysisResultsManager( + cliServer, + variantAnalysisConfig, + extLogger, ); - if (testExplorerExtension) { - const testHub = testExplorerExtension.exports; - const testAdapterFactory = new QLTestAdapterFactory(testHub, cliServer, dbm); - ctx.subscriptions.push(testAdapterFactory); - - const testUIService = new TestUIService(testHub); - ctx.subscriptions.push(testUIService); - } - void logger.log('Registering top-level command palette commands.'); - ctx.subscriptions.push( - commandRunnerWithProgress( - 'codeQL.runQuery', - async ( - progress: ProgressCallback, - token: CancellationToken, - uri: Uri | undefined - ) => await compileAndRunQuery(false, uri, progress, token, undefined), - { - title: 'Running query', - cancellable: true - }, - - // Open the query server logger on error since that's usually where the interesting errors appear. - queryServerLogger - ) + const variantAnalysisManager = new VariantAnalysisManager( + app, + cliServer, + variantAnalysisStorageDir, + variantAnalysisResultsManager, + dbModule.dbManager, + variantAnalysisConfig, ); - interface DatabaseQuickPickItem extends QuickPickItem { - databaseItem: DatabaseItem; - } + ctx.subscriptions.push(variantAnalysisManager); + ctx.subscriptions.push(variantAnalysisResultsManager); ctx.subscriptions.push( - commandRunnerWithProgress( - 'codeQL.runQueryOnMultipleDatabases', - async ( - progress: ProgressCallback, - token: CancellationToken, - uri: Uri | undefined - ) => { - let filteredDBs = dbm.databaseItems; - if (filteredDBs.length === 0) { - void showAndLogErrorMessage('No databases found. Please add a suitable database to your workspace.'); - return; - } - // If possible, only show databases with the right language (otherwise show all databases). - const queryLanguage = await findLanguage(cliServer, uri); - if (queryLanguage) { - filteredDBs = dbm.databaseItems.filter(db => db.language === queryLanguage); - if (filteredDBs.length === 0) { - void showAndLogErrorMessage(`No databases found for language ${queryLanguage}. Please add a suitable database to your workspace.`); - return; - } - } - const quickPickItems = filteredDBs.map(dbItem => ( - { - databaseItem: dbItem, - label: dbItem.name, - description: dbItem.language, - } - )); - /** - * Databases that were selected in the quick pick menu. - */ - const quickpick = await window.showQuickPick( - quickPickItems, - { canPickMany: true, ignoreFocusOut: true } - ); - if (quickpick !== undefined) { - // Collect all skipped databases and display them at the end (instead of popping up individual errors) - const skippedDatabases = []; - const errors = []; - for (const item of quickpick) { - try { - await compileAndRunQuery(false, uri, progress, token, item.databaseItem); - } catch (e) { - skippedDatabases.push(item.label); - errors.push(getErrorMessage(e)); - } - } - if (skippedDatabases.length > 0) { - void logger.log(`Errors:\n${errors.join('\n')}`); - void showAndLogWarningMessage( - `The following databases were skipped:\n${skippedDatabases.join('\n')}.\nFor details about the errors, see the logs.` - ); - } - } else { - void showAndLogErrorMessage('No databases selected.'); - } - }, - { - title: 'Running query on selected databases', - cancellable: true - } - ) + workspace.registerTextDocumentContentProvider( + "codeql-variant-analysis", + createVariantAnalysisContentProvider(variantAnalysisManager), + ), ); - ctx.subscriptions.push( - commandRunnerWithProgress( - 'codeQL.runQueries', - async ( - progress: ProgressCallback, - token: CancellationToken, - _: Uri | undefined, - multi: Uri[] - ) => { - const maxQueryCount = MAX_QUERIES.getValue() as number; - const [files, dirFound] = await gatherQlFiles(multi.map(uri => uri.fsPath)); - if (files.length > maxQueryCount) { - throw new Error(`You tried to run ${files.length} queries, but the maximum is ${maxQueryCount}. Try selecting fewer queries or changing the 'codeQL.runningQueries.maxQueries' setting.`); - } - // warn user and display selected files when a directory is selected because some ql - // files may be hidden from the user. - if (dirFound) { - const fileString = files.map(file => path.basename(file)).join(', '); - const res = await showBinaryChoiceDialog( - `You are about to run ${files.length} queries: ${fileString} Do you want to continue?` - ); - if (!res) { - return; - } - } - const queryUris = files.map(path => Uri.parse(`file:${path}`, true)); - - // Use a wrapped progress so that messages appear with the queries remaining in it. - let queriesRemaining = queryUris.length; - function wrappedProgress(update: ProgressUpdate) { - const message = queriesRemaining > 1 - ? `${queriesRemaining} remaining. ${update.message}` - : update.message; - progress({ - ...update, - message - }); - } - if (queryUris.length > 1) { - // Try to upgrade the current database before running any queries - // so that the user isn't confronted with multiple upgrade - // requests for each query to run. - // Only do it if running multiple queries since this check is - // performed on each query run anyway. - await databaseUI.tryUpgradeCurrentDatabase(progress, token); - } + const githubDatabaseConfigListener = new GitHubDatabaseConfigListener(); - wrappedProgress({ - maxStep: queryUris.length, - step: queryUris.length - queriesRemaining, - message: '' - }); + await GitHubDatabasesModule.initialize( + app, + dbm, + databaseFetcher, + githubDatabaseConfigListener, + ); - await Promise.all(queryUris.map(async uri => - compileAndRunQuery(false, uri, wrappedProgress, token, undefined) - .then(() => queriesRemaining--) - )); - }, - { - title: 'Running queries', - cancellable: true - }, + void extLogger.log("Initializing query history."); + const queryHistoryDirs: QueryHistoryDirs = { + localQueriesDirPath: queryStorageDir, + variantAnalysesDirPath: variantAnalysisStorageDir, + }; - // Open the query server logger on error since that's usually where the interesting errors appear. - queryServerLogger - ) - ); - ctx.subscriptions.push( - commandRunnerWithProgress( - 'codeQL.quickEval', - async ( - progress: ProgressCallback, - token: CancellationToken, - uri: Uri | undefined - ) => await compileAndRunQuery(true, uri, progress, token, undefined), - { - title: 'Running query', - cancellable: true - }, - // Open the query server logger on error since that's usually where the interesting errors appear. - queryServerLogger - ) + const qhm = new QueryHistoryManager( + app, + qs, + dbm, + localQueryResultsView, + variantAnalysisManager, + evalLogViewer, + queryHistoryDirs, + ctx, + queryHistoryConfigurationListener, + labelProvider, + languageContext, + async ( + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo, + ): Promise => showResultsForComparison(compareView, from, to), + async ( + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo | undefined, + ): Promise => + showPerformanceComparison(comparePerformanceView, from, to), ); - ctx.subscriptions.push( - commandRunnerWithProgress( - 'codeQL.codeLensQuickEval', - async ( - progress: ProgressCallback, - token: CancellationToken, - uri: Uri, - range: Range - ) => await compileAndRunQuery(true, uri, progress, token, undefined, range), - { - title: 'Running query', - cancellable: true - }, + ctx.subscriptions.push(qhm); - // Open the query server logger on error since that's usually where the interesting errors appear. - queryServerLogger - ) - ); + void extLogger.log("Initializing evaluation log scanners."); + const logScannerService = new LogScannerService(qhm); + ctx.subscriptions.push(logScannerService); - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.quickQuery', async ( - progress: ProgressCallback, - token: CancellationToken - ) => - displayQuickQuery(ctx, cliServer, databaseUI, progress, token), - { - title: 'Run Quick Query' - }, + void extLogger.log("Initializing compare view."); + const compareView = new CompareView( + app, + dbm, + cliServer, + queryServerLogger, + labelProvider, + async (item: CompletedLocalQueryInfo) => + localQueries.showResultsForCompletedQuery(item, WebviewReveal.Forced), + ); + ctx.subscriptions.push(compareView); - // Open the query server logger on error since that's usually where the interesting errors appear. - queryServerLogger - ) + void extLogger.log("Initializing performance comparison view."); + const comparePerformanceView = new ComparePerformanceView( + app, + queryServerLogger, + labelProvider, + localQueryResultsView, ); + ctx.subscriptions.push(comparePerformanceView); + void extLogger.log("Initializing source archive filesystem provider."); + archiveFilesystemProvider_activate(ctx, dbm); - registerRemoteQueryTextProvider(); + const qhelpTmpDir = dirSync({ + prefix: "qhelp_", + keep: false, + unsafeCleanup: true, + }); + ctx.subscriptions.push({ dispose: qhelpTmpDir.removeCallback }); - // The "runVariantAnalysis" command is internal-only. - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.runVariantAnalysis', async ( - progress: ProgressCallback, - token: CancellationToken, - uri: Uri | undefined - ) => { - if (isCanary()) { - progress({ - maxStep: 5, - step: 0, - message: 'Getting credentials' - }); - await rqm.runRemoteQuery( - uri || window.activeTextEditor?.document.uri, - progress, - token - ); - } else { - throw new Error('Variant analysis requires the CodeQL Canary version to run.'); - } - }, { - title: 'Run Variant Analysis', - cancellable: true - }) + ctx.subscriptions.push(tmpDirDisposal); + + const localQueries = new LocalQueries( + app, + qs, + getQsForWarmingOverlayBaseCache, + qhm, + dbm, + databaseFetcher, + cliServer, + databaseUI, + localQueryResultsView, + queryStorageDir, + languageContext, ); + ctx.subscriptions.push(localQueries); - ctx.subscriptions.push( - commandRunner('codeQL.monitorRemoteQuery', async ( - queryId: string, - query: RemoteQuery, - token: CancellationToken) => { - await rqm.monitorRemoteQuery(queryId, query, token); - })); + queriesModule.onDidChangeSelection((event) => + localQueries.setSelectedQueryTreeViewItems(event.selection), + ); + void extLogger.log("Initializing debugger factory."); ctx.subscriptions.push( - commandRunner('codeQL.copyRepoList', async (queryId: string) => { - await rqm.copyRemoteQueryRepoListToClipboard(queryId); - }) + new QLDebugAdapterDescriptorFactory(queryStorageDir, qs, localQueries), ); - ctx.subscriptions.push( - commandRunner('codeQL.autoDownloadRemoteQueryResults', async ( - queryResult: RemoteQueryResult, - token: CancellationToken) => { - await rqm.autoDownloadRemoteQueryResults(queryResult, token); - })); + void extLogger.log("Initializing debugger UI."); + const debuggerUI = new DebuggerUI(app, localQueries, dbm); + ctx.subscriptions.push(debuggerUI); - ctx.subscriptions.push( - commandRunner('codeQL.exportVariantAnalysisResults', async () => { - await exportRemoteQueryResults(qhm, rqm, ctx); - }) + const modelEditorModule = await ModelEditorModule.initialize( + app, + dbm, + databaseFetcher, + variantAnalysisManager, + cliServer, + qs, + tmpDir.name, ); - ctx.subscriptions.push( - commandRunner( - 'codeQL.openReferencedFile', - openReferencedFile - ) - ); + void extLogger.log("Initializing QLTest interface."); - ctx.subscriptions.push( - commandRunner( - 'codeQL.previewQueryHelp', - previewQueryHelp - ) - ); + const testRunner = new TestRunner(dbm, cliServer); + ctx.subscriptions.push(testRunner); - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.restartQueryServer', async ( - progress: ProgressCallback, - token: CancellationToken - ) => { - await qs.restartQueryServer(progress, token); - void showAndLogInformationMessage('CodeQL Query Server restarted.', { - outputLogger: queryServerLogger, - }); - }, { - title: 'Restarting Query Server' - }) - ); + const testManager = new TestManager(app, testRunner, cliServer); + ctx.subscriptions.push(testManager); - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.chooseDatabaseFolder', ( - progress: ProgressCallback, - token: CancellationToken - ) => - databaseUI.handleChooseDatabaseFolder(progress, token), { - title: 'Choose a Database from a Folder' - }) - ); - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.chooseDatabaseArchive', ( - progress: ProgressCallback, - token: CancellationToken - ) => - databaseUI.handleChooseDatabaseArchive(progress, token), { - title: 'Choose a Database from an Archive' - }) - ); - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.chooseDatabaseGithub', async ( - progress: ProgressCallback, - token: CancellationToken - ) => { - const credentials = await Credentials.initialize(ctx); - await databaseUI.handleChooseDatabaseGithub(credentials, progress, token); - }, - { - title: 'Adding database from GitHub', - }) - ); - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.chooseDatabaseLgtm', ( - progress: ProgressCallback, - token: CancellationToken - ) => - databaseUI.handleChooseDatabaseLgtm(progress, token), - { - title: 'Adding database from LGTM', - }) - ); - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.chooseDatabaseInternet', ( - progress: ProgressCallback, - token: CancellationToken - ) => - databaseUI.handleChooseDatabaseInternet(progress, token), + const testUiCommands = testManager?.getCommands() ?? {}; - { - title: 'Adding database from URL', - }) + const astViewer = new AstViewer(); + const astTemplateProvider = new TemplatePrintAstProvider( + cliServer, + qs, + dbm, + contextualQueryStorageDir, ); + const cfgTemplateProvider = new TemplatePrintCfgProvider(cliServer, dbm); - ctx.subscriptions.push( - commandRunner('codeQL.openDocumentation', async () => - env.openExternal(Uri.parse('https://codeql.github.com/docs/')))); - - ctx.subscriptions.push( - commandRunner('codeQL.copyVersion', async () => { - const text = `CodeQL extension version: ${extension?.packageJSON.version} \nCodeQL CLI version: ${await getCliVersion()} \nPlatform: ${os.platform()} ${os.arch()}`; - await env.clipboard.writeText(text); - void showAndLogInformationMessage(text); - })); + ctx.subscriptions.push(astViewer); - const getCliVersion = async () => { - try { - return await cliServer.getVersion(); - } catch { - return ''; - } + const summaryLanguageSupport = new SummaryLanguageSupport(app); + ctx.subscriptions.push(summaryLanguageSupport); + + const mockServer = new VSCodeMockGitHubApiServer(app); + ctx.subscriptions.push(mockServer); + + void extLogger.log("Registering top-level command palette commands."); + + const allCommands: AllExtensionCommands = { + ...getCommands( + app, + cliServer, + qs, + qsForWarmingOverlayBaseCache, + languageClient, + ), + ...getQueryEditorCommands({ + commandManager: app.commands, + queryRunner: qs, + cliServer, + qhelpTmpDir: qhelpTmpDir.name, + }), + ...localQueryResultsView.getCommands(), + ...qhm.getCommands(), + ...variantAnalysisManager.getCommands(), + ...databaseUI.getCommands(), + ...dbModule.getCommands(), + ...getAstCfgCommands({ + localQueries, + astViewer, + astTemplateProvider, + cfgTemplateProvider, + }), + ...astViewer.getCommands(), + ...getPackagingCommands({ + cliServer, + }), + ...languageSelectionPanel.getCommands(), + ...modelEditorModule.getCommands(), + ...evalLogViewer.getCommands(), + ...summaryLanguageSupport.getCommands(), + ...testUiCommands, + ...mockServer.getCommands(), + ...debuggerUI.getCommands(), }; - // The "authenticateToGitHub" command is internal-only. - ctx.subscriptions.push( - commandRunner('codeQL.authenticateToGitHub', async () => { - if (isCanary()) { - /** - * Credentials for authenticating to GitHub. - * These are used when making API calls. - */ - const credentials = await Credentials.initialize(ctx); - const octokit = await credentials.getOctokit(); - const userInfo = await octokit.users.getAuthenticated(); - void showAndLogInformationMessage(`Authenticated to GitHub as user: ${userInfo.data.login}`); - } - })); - - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.installPackDependencies', async ( - progress: ProgressCallback - ) => - await handleInstallPackDependencies(cliServer, progress), - { - title: 'Installing pack dependencies', - } - )); + for (const [commandName, command] of Object.entries(allCommands)) { + app.commands.register(commandName as keyof AllExtensionCommands, command); + } - ctx.subscriptions.push( - commandRunnerWithProgress('codeQL.downloadPacks', async ( - progress: ProgressCallback - ) => - await handleDownloadPacks(cliServer, progress), - { - title: 'Downloading packs', - } - )); + const queryServerCommands: QueryServerCommands = { + ...localQueries.getCommands(), + }; - ctx.subscriptions.push( - commandRunner('codeQL.showLogs', async () => { - logger.show(); - }) - ); + for (const [commandName, command] of Object.entries(queryServerCommands)) { + app.queryServerCommands.register( + commandName as keyof QueryServerCommands, + command, + ); + } - ctx.subscriptions.push(new SummaryLanguageSupport()); + void extLogger.log("Starting language server."); + await languageClient.start(); + ctx.subscriptions.push({ + dispose: () => { + void languageClient.stop(); + }, + }); - void logger.log('Starting language server.'); - ctx.subscriptions.push(client.start()); + // Handle visibility changes in the CodeQL language client. + Window.onDidChangeVisibleTextEditors((editors) => { + languageClient.notifyVisibilityChange(editors); + }); + // Send an inital notification to the language server + // to set the initial state of the visible editors. + languageClient.notifyVisibilityChange(Window.visibleTextEditors); // Jump-to-definition and find-references - void logger.log('Registering jump-to-definition handlers.'); + void extLogger.log("Registering jump-to-definition handlers."); - // Store contextual queries in a temporary folder so that they are removed - // when the application closes. There is no need for the user to interact with them. - const contextualQueryStorageDir = path.join(tmpDir.name, 'contextual-query-storage'); - await fs.ensureDir(contextualQueryStorageDir); - languages.registerDefinitionProvider( - { scheme: archiveFilesystemProvider.zipArchiveScheme }, - new TemplateQueryDefinitionProvider(cliServer, qs, dbm, contextualQueryStorageDir) + ctx.subscriptions.push( + languages.registerDefinitionProvider( + { scheme: zipArchiveScheme }, + new TemplateQueryDefinitionProvider( + cliServer, + qs, + dbm, + contextualQueryStorageDir, + ), + ), ); - languages.registerReferenceProvider( - { scheme: archiveFilesystemProvider.zipArchiveScheme }, - new TemplateQueryReferenceProvider(cliServer, qs, dbm, contextualQueryStorageDir) + ctx.subscriptions.push( + languages.registerReferenceProvider( + { scheme: zipArchiveScheme }, + new TemplateQueryReferenceProvider( + cliServer, + qs, + dbm, + contextualQueryStorageDir, + ), + ), ); - const astViewer = new AstViewer(); - const printAstTemplateProvider = new TemplatePrintAstProvider(cliServer, qs, dbm, contextualQueryStorageDir); - const cfgTemplateProvider = new TemplatePrintCfgProvider(cliServer, dbm); + await app.commands.execute("codeQLDatabases.removeOrphanedDatabases"); - ctx.subscriptions.push(astViewer); - ctx.subscriptions.push(commandRunnerWithProgress('codeQL.viewAst', async ( - progress: ProgressCallback, - token: CancellationToken, - selectedFile: Uri - ) => { - const ast = await printAstTemplateProvider.provideAst( - progress, - token, - selectedFile ?? window.activeTextEditor?.document.uri, - ); - if (ast) { - astViewer.updateRoots(await ast.getRoots(), ast.db, ast.fileName); - } - }, { - cancellable: true, - title: 'Calculate AST' - })); - - ctx.subscriptions.push( - commandRunnerWithProgress( - 'codeQL.viewCfg', - async ( - progress: ProgressCallback, - token: CancellationToken - ) => { - const res = await cfgTemplateProvider.provideCfgUri(window.activeTextEditor?.document); - if (res) { - await compileAndRunQuery(false, res[0], progress, token, undefined); - } - }, - { - title: 'Calculating Control Flow Graph', - cancellable: true - } - ) - ); + void extLogger.log("Reading query history"); + await qhm.readQueryHistory(); - await commands.executeCommand('codeQLDatabases.removeOrphanedDatabases'); + distributionManager.startCleanup(); - void logger.log('Successfully finished extension initialization.'); + void extLogger.log("Successfully finished extension initialization."); return { ctx, cliServer, + localQueries, qs, + qsForWarmingOverlayBaseCache, distributionManager, databaseManager: dbm, databaseUI, + variantAnalysisManager, dispose: () => { - ctx.subscriptions.forEach(d => d.dispose()); + ctx.subscriptions.forEach((d) => void d.dispose()); + }, + }; +} + +/** + * Handle changes to the external config file. This is used to restart the query server + * when the user changes options. + * See https://docs.github.com/en/code-security/codeql-cli/using-the-codeql-cli/specifying-command-options-in-a-codeql-configuration-file#using-a-codeql-configuration-file + */ +function watchExternalConfigFile(app: ExtensionApp, ctx: ExtensionContext) { + const home = homedir(); + if (home) { + const configPath = join(home, ".config", "codeql", "config"); + const configWatcher = watch(configPath, { + // These options avoid firing the event twice. + persistent: true, + ignoreInitial: true, + awaitWriteFinish: true, + }); + configWatcher.on("all", async () => { + await app.commands.execute( + "codeQL.restartQueryServerOnExternalConfigChange", + ); + }); + ctx.subscriptions.push({ + dispose: () => { + void configWatcher.close(); + }, + }); + } +} + +async function showResultsForComparison( + compareView: CompareView, + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo, +): Promise { + try { + await compareView.showResults(from, to); + } catch (e) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError(asError(e))`Failed to show results: ${getErrorMessage( + e, + )}`, + ); + } +} + +async function showPerformanceComparison( + view: ComparePerformanceView, + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo | undefined, +): Promise { + await view.showResults(from, to); +} + +function addUnhandledRejectionListener() { + const handler = (error: unknown) => { + // This listener will be triggered for errors from other extensions as + // well as errors from this extension. We don't want to flood the user + // with popups about errors from other extensions, and we don't want to + // report them in our telemetry. + // + // The stack trace gets redacted before being sent as telemetry, but at + // this point in the code we have the full unredacted information. + const isFromThisExtension = + extension && getErrorStack(error).includes(extension.extensionPath); + + if (isFromThisExtension) { + const message = redactableError( + asError(error), + )`Unhandled error: ${getErrorMessage(error)}`; + const fullMessage = message.fullMessageWithStack; + + // Add a catch so that showAndLogExceptionWithTelemetry fails, we avoid + // triggering "unhandledRejection" and avoid an infinite loop + showAndLogExceptionWithTelemetry(extLogger, telemetryListener, message, { + fullMessage, + }).catch((telemetryError: unknown) => { + void extLogger.log( + `Failed to send error telemetry: ${getErrorMessage(telemetryError)}`, + ); + void extLogger.log(message.fullMessage); + }); } }; + + // "uncaughtException" will trigger whenever an exception reaches the top level. + // This covers extension initialization and any code within a `setTimeout`. + // Notably this does not include exceptions thrown when executing commands, + // because `registerCommandWithErrorHandling` wraps the command body and + // handles errors. + process.addListener("uncaughtException", handler); + + // "unhandledRejection" will trigger whenever any promise is rejected and it is + // not handled by a "catch" somewhere in the promise chain. This includes when + // a promise is used with the "void" operator. + process.addListener("unhandledRejection", handler); +} + +async function createQueryServer( + app: ExtensionApp, + qlConfigurationListener: QueryServerConfigListener, + cliServer: CodeQLCliServer, + ctx: ExtensionContext, + warmOverlayBaseCache: boolean, +): Promise { + const qsOpts = { + logger: warmOverlayBaseCache + ? getQueryServerForWarmingOverlayBaseCacheLogger() + : queryServerLogger, + contextStoragePath: getContextStoragePath(ctx), + }; + const progressCallback = ( + task: ( + progress: ProgressReporter, + token: CancellationToken, + ) => Thenable, + ) => + Window.withProgress( + { + title: warmOverlayBaseCache + ? "CodeQL query server for warming overlay-base cache" + : "CodeQL query server", + location: ProgressLocation.Window, + }, + task, + ); + + const qs = new QueryServerClient( + app, + qlConfigurationListener, + cliServer, + qsOpts, + progressCallback, + warmOverlayBaseCache, + ); + ctx.subscriptions.push(qs); + await qs.startQueryServer(); + return new QueryRunner(qs); } function getContextStoragePath(ctx: ExtensionContext) { @@ -1138,26 +1353,61 @@ function getContextStoragePath(ctx: ExtensionContext) { } async function initializeLogging(ctx: ExtensionContext): Promise { - ctx.subscriptions.push(logger); + ctx.subscriptions.push(extLogger); ctx.subscriptions.push(queryServerLogger); - ctx.subscriptions.push(ideServerLogger); + ctx.subscriptions.push(languageServerLogger); } -const checkForUpdatesCommand = 'codeQL.checkForUpdatesToCLI'; +const checkForUpdatesCommand: keyof PreActivationCommands = + "codeQL.checkForUpdatesToCLI" as const; -/** - * This text provider lets us open readonly files in the editor. - * - * TODO: Consolidate this with the 'codeql' text provider in query-history.ts. - */ -function registerRemoteQueryTextProvider() { - workspace.registerTextDocumentContentProvider('remote-query', { - provideTextDocumentContent( - uri: Uri - ): ProviderResult { - const params = new URLSearchParams(uri.query); - - return params.get('queryText'); - }, - }); +const avoidVersionCheck = "avoid-version-check-at-startup"; +const lastVersionChecked = "last-version-checked"; +async function assertVSCodeVersionGreaterThan( + minVersion: string, + ctx: ExtensionContext, +) { + // Check if we should reset the version check. + const lastVersion = await ctx.globalState.get(lastVersionChecked); + await ctx.globalState.update(lastVersionChecked, vscodeVersion); + + if (lastVersion !== minVersion) { + // In this case, the version has changed since the last time we checked. + // If the user has previously opted out of this check, then user has updated their + // vscode instance since then, so we should check again. Any future warning would + // be for a different version of vscode. + await ctx.globalState.update(avoidVersionCheck, false); + } + if (await ctx.globalState.get(avoidVersionCheck)) { + return; + } + try { + const parsedVersion = parse(vscodeVersion); + const parsedMinVersion = parse(minVersion); + if (!parsedVersion || !parsedMinVersion) { + void showAndLogWarningMessage( + extLogger, + `Could not do a version check of vscode because could not parse version number: actual vscode version ${vscodeVersion} or minimum supported vscode version ${minVersion}.`, + ); + return; + } + + if (lt(parsedVersion, parsedMinVersion)) { + const message = `The CodeQL extension requires VS Code version ${minVersion} or later. Current version is ${vscodeVersion}. Please update VS Code to get the latest features of CodeQL.`; + const result = await showBinaryChoiceDialog( + message, + false, + "OK", + "Don't show again", + ); + if (!result) { + await ctx.globalState.update(avoidVersionCheck, true); + } + } + } catch (e) { + void showAndLogWarningMessage( + extLogger, + `Could not do a version check because of an error: ${getErrorMessage(e)}`, + ); + } } diff --git a/extensions/ql-vscode/src/helpers.ts b/extensions/ql-vscode/src/helpers.ts deleted file mode 100644 index e3af332cd49..00000000000 --- a/extensions/ql-vscode/src/helpers.ts +++ /dev/null @@ -1,591 +0,0 @@ -import * as fs from 'fs-extra'; -import * as glob from 'glob-promise'; -import * as yaml from 'js-yaml'; -import * as path from 'path'; -import * as tmp from 'tmp-promise'; -import { - ExtensionContext, - Uri, - window as Window, - workspace, - env -} from 'vscode'; -import { CodeQLCliServer, QlpacksInfo } from './cli'; -import { UserCancellationException } from './commandRunner'; -import { logger } from './logging'; -import { QueryMetadata } from './pure/interface-types'; - -// Shared temporary folder for the extension. -export const tmpDir = tmp.dirSync({ prefix: 'queries_', keep: false, unsafeCleanup: true }); -export const upgradesTmpDir = path.join(tmpDir.name, 'upgrades'); -fs.ensureDirSync(upgradesTmpDir); - -export const tmpDirDisposal = { - dispose: () => { - tmpDir.removeCallback(); - } -}; - -/** - * Show an error message and log it to the console - * - * @param message The message to show. - * @param options.outputLogger The output logger that will receive the message - * @param options.items A set of items that will be rendered as actions in the message. - * @param options.fullMessage An alternate message that is added to the log, but not displayed - * in the popup. This is useful for adding extra detail to the logs - * that would be too noisy for the popup. - * - * @return A promise that resolves to the selected item or undefined when being dismissed. - */ -export async function showAndLogErrorMessage(message: string, { - outputLogger = logger, - items = [] as string[], - fullMessage = undefined as (string | undefined) -} = {}): Promise { - return internalShowAndLog(dropLinesExceptInitial(message), items, outputLogger, Window.showErrorMessage, fullMessage); -} - -function dropLinesExceptInitial(message: string, n = 2) { - return message.toString().split(/\r?\n/).slice(0, n).join('\n'); -} - -/** - * Show a warning message and log it to the console - * - * @param message The message to show. - * @param options.outputLogger The output logger that will receive the message - * @param options.items A set of items that will be rendered as actions in the message. - * - * @return A promise that resolves to the selected item or undefined when being dismissed. - */ -export async function showAndLogWarningMessage(message: string, { - outputLogger = logger, - items = [] as string[] -} = {}): Promise { - return internalShowAndLog(message, items, outputLogger, Window.showWarningMessage); -} -/** - * Show an information message and log it to the console - * - * @param message The message to show. - * @param options.outputLogger The output logger that will receive the message - * @param options.items A set of items that will be rendered as actions in the message. - * - * @return A promise that resolves to the selected item or undefined when being dismissed. - */ -export async function showAndLogInformationMessage(message: string, { - outputLogger = logger, - items = [] as string[], - fullMessage = '' -} = {}): Promise { - return internalShowAndLog(message, items, outputLogger, Window.showInformationMessage, fullMessage); -} - -type ShowMessageFn = (message: string, ...items: string[]) => Thenable; - -async function internalShowAndLog( - message: string, - items: string[], - outputLogger = logger, - fn: ShowMessageFn, - fullMessage?: string -): Promise { - const label = 'Show Log'; - void outputLogger.log(fullMessage || message); - const result = await fn(message, label, ...items); - if (result === label) { - outputLogger.show(); - } - return result; -} - -/** - * Opens a modal dialog for the user to make a yes/no choice. - * - * @param message The message to show. - * @param modal If true (the default), show a modal dialog box, otherwise dialog is non-modal and can - * be closed even if the user does not make a choice. - * - * @return - * `true` if the user clicks 'Yes', - * `false` if the user clicks 'No' or cancels the dialog, - * `undefined` if the dialog is closed without the user making a choice. - */ -export async function showBinaryChoiceDialog(message: string, modal = true): Promise { - const yesItem = { title: 'Yes', isCloseAffordance: false }; - const noItem = { title: 'No', isCloseAffordance: true }; - const chosenItem = await Window.showInformationMessage(message, { modal }, yesItem, noItem); - if (!chosenItem) { - return undefined; - } - return chosenItem?.title === yesItem.title; -} - -/** - * Opens a modal dialog for the user to make a yes/no choice. - * - * @param message The message to show. - * @param modal If true (the default), show a modal dialog box, otherwise dialog is non-modal and can - * be closed even if the user does not make a choice. - * - * @return - * `true` if the user clicks 'Yes', - * `false` if the user clicks 'No' or cancels the dialog, - * `undefined` if the dialog is closed without the user making a choice. - */ -export async function showBinaryChoiceWithUrlDialog(message: string, url: string): Promise { - const urlItem = { title: 'More Information', isCloseAffordance: false }; - const yesItem = { title: 'Yes', isCloseAffordance: false }; - const noItem = { title: 'No', isCloseAffordance: true }; - let chosenItem; - - // Keep the dialog open as long as the user is clicking the 'more information' option. - // To prevent an infinite loop, if the user clicks 'more information' 5 times, close the dialog and return cancelled - let count = 0; - do { - chosenItem = await Window.showInformationMessage(message, { modal: true }, urlItem, yesItem, noItem); - if (chosenItem === urlItem) { - await env.openExternal(Uri.parse(url, true)); - } - count++; - } while (chosenItem === urlItem && count < 5); - - if (!chosenItem || chosenItem.title === urlItem.title) { - return undefined; - } - return chosenItem.title === yesItem.title; -} - -/** - * Show an information message with a customisable action. - * @param message The message to show. - * @param actionMessage The call to action message. - * - * @return `true` if the user clicks the action, `false` if the user cancels the dialog. - */ -export async function showInformationMessageWithAction(message: string, actionMessage: string): Promise { - const actionItem = { title: actionMessage, isCloseAffordance: false }; - const chosenItem = await Window.showInformationMessage(message, actionItem); - return chosenItem === actionItem; -} - -/** Gets all active workspace folders that are on the filesystem. */ -export function getOnDiskWorkspaceFolders() { - const workspaceFolders = workspace.workspaceFolders || []; - const diskWorkspaceFolders: string[] = []; - for (const workspaceFolder of workspaceFolders) { - if (workspaceFolder.uri.scheme === 'file') - diskWorkspaceFolders.push(workspaceFolder.uri.fsPath); - } - return diskWorkspaceFolders; -} - -/** - * Provides a utility method to invoke a function only if a minimum time interval has elapsed since - * the last invocation of that function. - */ -export class InvocationRateLimiter { - constructor( - extensionContext: ExtensionContext, - funcIdentifier: string, - func: () => Promise, - createDate: (dateString?: string) => Date = s => s ? new Date(s) : new Date()) { - this._createDate = createDate; - this._extensionContext = extensionContext; - this._func = func; - this._funcIdentifier = funcIdentifier; - } - - /** - * Invoke the function if `minSecondsSinceLastInvocation` seconds have elapsed since the last invocation. - */ - public async invokeFunctionIfIntervalElapsed(minSecondsSinceLastInvocation: number): Promise> { - const updateCheckStartDate = this._createDate(); - const lastInvocationDate = this.getLastInvocationDate(); - if ( - minSecondsSinceLastInvocation && - lastInvocationDate && - lastInvocationDate <= updateCheckStartDate && - lastInvocationDate.getTime() + minSecondsSinceLastInvocation * 1000 > updateCheckStartDate.getTime() - ) { - return createRateLimitedResult(); - } - const result = await this._func(); - await this.setLastInvocationDate(updateCheckStartDate); - return createInvokedResult(result); - } - - private getLastInvocationDate(): Date | undefined { - const maybeDateString: string | undefined = - this._extensionContext.globalState.get(InvocationRateLimiter._invocationRateLimiterPrefix + this._funcIdentifier); - return maybeDateString ? this._createDate(maybeDateString) : undefined; - } - - private async setLastInvocationDate(date: Date): Promise { - return await this._extensionContext.globalState.update(InvocationRateLimiter._invocationRateLimiterPrefix + this._funcIdentifier, date); - } - - private readonly _createDate: (dateString?: string) => Date; - private readonly _extensionContext: ExtensionContext; - private readonly _func: () => Promise; - private readonly _funcIdentifier: string; - - private static readonly _invocationRateLimiterPrefix = 'invocationRateLimiter_lastInvocationDate_'; -} - -export enum InvocationRateLimiterResultKind { - Invoked, - RateLimited -} - -/** - * The function was invoked and returned the value `result`. - */ -interface InvokedResult { - kind: InvocationRateLimiterResultKind.Invoked; - result: T; -} - -/** - * The function was not invoked as the minimum interval since the last invocation had not elapsed. - */ -interface RateLimitedResult { - kind: InvocationRateLimiterResultKind.RateLimited; -} - -type InvocationRateLimiterResult = InvokedResult | RateLimitedResult; - -function createInvokedResult(result: T): InvokedResult { - return { - kind: InvocationRateLimiterResultKind.Invoked, - result - }; -} - -function createRateLimitedResult(): RateLimitedResult { - return { - kind: InvocationRateLimiterResultKind.RateLimited - }; -} - -export interface QlPacksForLanguage { - /** The name of the pack containing the dbscheme. */ - dbschemePack: string; - /** `true` if `dbschemePack` is a library pack. */ - dbschemePackIsLibraryPack: boolean; - /** - * The name of the corresponding standard query pack. - * Only defined if `dbschemePack` is a library pack. - */ - queryPack?: string; -} - -interface QlPackWithPath { - packName: string; - packDir: string | undefined; -} - -async function findDbschemePack(packs: QlPackWithPath[], dbschemePath: string): Promise<{ name: string; isLibraryPack: boolean; }> { - for (const { packDir, packName } of packs) { - if (packDir !== undefined) { - const qlpack = yaml.load(await fs.readFile(path.join(packDir, 'qlpack.yml'), 'utf8')) as { dbscheme?: string; library?: boolean; }; - if (qlpack.dbscheme !== undefined && path.basename(qlpack.dbscheme) === path.basename(dbschemePath)) { - return { - name: packName, - isLibraryPack: qlpack.library === true - }; - } - } - } - throw new Error(`Could not find qlpack file for dbscheme ${dbschemePath}`); -} - -function findStandardQueryPack(qlpacks: QlpacksInfo, dbschemePackName: string): string | undefined { - const matches = dbschemePackName.match(/^codeql\/(?[a-z]+)-all$/); - if (matches) { - const queryPackName = `codeql/${matches.groups!.language}-queries`; - if (qlpacks[queryPackName] !== undefined) { - return queryPackName; - } - } - - // Either the dbscheme pack didn't look like one where the queries might be in the query pack, or - // no query pack was found in the search path. Either is OK. - return undefined; -} - -export async function getQlPackForDbscheme(cliServer: CodeQLCliServer, dbschemePath: string): Promise { - const qlpacks = await cliServer.resolveQlpacks(getOnDiskWorkspaceFolders()); - const packs: QlPackWithPath[] = - Object.entries(qlpacks).map(([packName, dirs]) => { - if (dirs.length < 1) { - void logger.log(`In getQlPackFor ${dbschemePath}, qlpack ${packName} has no directories`); - return { packName, packDir: undefined }; - } - if (dirs.length > 1) { - void logger.log(`In getQlPackFor ${dbschemePath}, qlpack ${packName} has more than one directory; arbitrarily choosing the first`); - } - return { - packName, - packDir: dirs[0] - }; - }); - const dbschemePack = await findDbschemePack(packs, dbschemePath); - const queryPack = dbschemePack.isLibraryPack ? findStandardQueryPack(qlpacks, dbschemePack.name) : undefined; - return { - dbschemePack: dbschemePack.name, - dbschemePackIsLibraryPack: dbschemePack.isLibraryPack, - queryPack - }; -} - -export async function getPrimaryDbscheme(datasetFolder: string): Promise { - const dbschemes = await glob(path.join(datasetFolder, '*.dbscheme')); - - if (dbschemes.length < 1) { - throw new Error(`Can't find dbscheme for current database in ${datasetFolder}`); - } - - dbschemes.sort(); - const dbscheme = dbschemes[0]; - - if (dbschemes.length > 1) { - void Window.showErrorMessage(`Found multiple dbschemes in ${datasetFolder} during quick query; arbitrarily choosing the first, ${dbscheme}, to decide what library to use.`); - } - return dbscheme; -} - -/** - * A cached mapping from strings to value of type U. - */ -export class CachedOperation { - private readonly operation: (t: string, ...args: any[]) => Promise; - private readonly cached: Map; - private readonly lru: string[]; - private readonly inProgressCallbacks: Map void, (reason?: any) => void][]>; - - constructor(operation: (t: string, ...args: any[]) => Promise, private cacheSize = 100) { - this.operation = operation; - this.lru = []; - this.inProgressCallbacks = new Map void, (reason?: any) => void][]>(); - this.cached = new Map(); - } - - async get(t: string, ...args: any[]): Promise { - // Try and retrieve from the cache - const fromCache = this.cached.get(t); - if (fromCache !== undefined) { - // Move to end of lru list - this.lru.push(this.lru.splice(this.lru.findIndex(v => v === t), 1)[0]); - return fromCache; - } - // Otherwise check if in progress - const inProgressCallback = this.inProgressCallbacks.get(t); - if (inProgressCallback !== undefined) { - // If so wait for it to resolve - return await new Promise((resolve, reject) => { - inProgressCallback.push([resolve, reject]); - }); - } - - // Otherwise compute the new value, but leave a callback to allow sharing work - const callbacks: [(u: U) => void, (reason?: any) => void][] = []; - this.inProgressCallbacks.set(t, callbacks); - try { - const result = await this.operation(t, ...args); - callbacks.forEach(f => f[0](result)); - this.inProgressCallbacks.delete(t); - if (this.lru.length > this.cacheSize) { - const toRemove = this.lru.shift()!; - this.cached.delete(toRemove); - } - this.lru.push(t); - this.cached.set(t, result); - return result; - } catch (e) { - // Rethrow error on all callbacks - callbacks.forEach(f => f[1](e)); - throw e; - } finally { - this.inProgressCallbacks.delete(t); - } - } -} - - - -/** - * The following functions al heuristically determine metadata about databases. - */ - -/** - * Note that this heuristic is only being used for backwards compatibility with - * CLI versions before the langauge name was introduced to dbInfo. Features - * that do not require backwards compatibility should call - * `cli.CodeQLCliServer.resolveDatabase` and use the first entry in the - * `languages` property. - * - * @see cli.CliVersionConstraint.supportsLanguageName - * @see cli.CodeQLCliServer.resolveDatabase - */ -export const dbSchemeToLanguage = { - 'semmlecode.javascript.dbscheme': 'javascript', - 'semmlecode.cpp.dbscheme': 'cpp', - 'semmlecode.dbscheme': 'java', - 'semmlecode.python.dbscheme': 'python', - 'semmlecode.csharp.dbscheme': 'csharp', - 'go.dbscheme': 'go', - 'ruby.dbscheme': 'ruby' -}; - -export const languageToDbScheme = Object.entries(dbSchemeToLanguage).reduce((acc, [k, v]) => { - acc[v] = k; - return acc; -}, {} as { [k: string]: string }); - - -/** - * Returns the initial contents for an empty query, based on the language of the selected - * databse. - * - * First try to use the given language name. If that doesn't exist, try to infer it based on - * dbscheme. Otherwise return no import statement. - * - * @param language the database language or empty string if unknown - * @param dbscheme path to the dbscheme file - * - * @returns an import and empty select statement appropriate for the selected language - */ -export function getInitialQueryContents(language: string, dbscheme: string) { - if (!language) { - const dbschemeBase = path.basename(dbscheme) as keyof typeof dbSchemeToLanguage; - language = dbSchemeToLanguage[dbschemeBase]; - } - - return language - ? `import ${language}\n\nselect ""` - : 'select ""'; -} - -/** - * Heuristically determines if the directory passed in corresponds - * to a database root. - * - * @param maybeRoot - */ -export async function isLikelyDatabaseRoot(maybeRoot: string) { - const [a, b, c] = (await Promise.all([ - // databases can have either .dbinfo or codeql-database.yml. - fs.pathExists(path.join(maybeRoot, '.dbinfo')), - fs.pathExists(path.join(maybeRoot, 'codeql-database.yml')), - - // they *must* have a db-{language} folder - glob('db-*/', { cwd: maybeRoot }) - ])); - - return !!((a || b) && c); -} - -export function isLikelyDbLanguageFolder(dbPath: string) { - return !!path.basename(dbPath).startsWith('db-'); -} - -/** - * Finds the language that a query targets. - * If it can't be autodetected, prompt the user to specify the language manually. - */ -export async function findLanguage( - cliServer: CodeQLCliServer, - queryUri: Uri | undefined -): Promise { - const uri = queryUri || Window.activeTextEditor?.document.uri; - if (uri !== undefined) { - try { - const queryInfo = await cliServer.resolveQueryByLanguage(getOnDiskWorkspaceFolders(), uri); - const language = (Object.keys(queryInfo.byLanguage))[0]; - void logger.log(`Detected query language: ${language}`); - return language; - } catch (e) { - void logger.log('Could not autodetect query language. Select language manually.'); - } - } - - // will be undefined if user cancels the quick pick. - return await askForLanguage(cliServer, false); -} - -export async function askForLanguage(cliServer: CodeQLCliServer, throwOnEmpty = true): Promise { - const language = await Window.showQuickPick( - await cliServer.getSupportedLanguages(), - { placeHolder: 'Select target language for your query', ignoreFocusOut: true } - ); - if (!language) { - // This only happens if the user cancels the quick pick. - if (throwOnEmpty) { - throw new UserCancellationException('Cancelled.'); - } else { - void showAndLogErrorMessage('Language not found. Language must be specified manually.'); - } - } - return language; -} - -/** - * Gets metadata for a query, if it exists. - * @param cliServer The CLI server. - * @param queryPath The path to the query. - * @returns A promise that resolves to the query metadata, if available. - */ -export async function tryGetQueryMetadata(cliServer: CodeQLCliServer, queryPath: string): Promise { - try { - return await cliServer.resolveMetadata(queryPath); - } catch (e) { - // Ignore errors and provide no metadata. - void logger.log(`Couldn't resolve metadata for ${queryPath}: ${e}`); - return; - } -} - -/** - * Creates a file in the query directory that indicates when this query was created. - * This is important for keeping track of when queries should be removed. - * - * @param queryPath The directory that will containt all files relevant to a query result. - * It does not need to exist. - */ -export async function createTimestampFile(storagePath: string) { - const timestampPath = path.join(storagePath, 'timestamp'); - await fs.ensureDir(storagePath); - await fs.writeFile(timestampPath, Date.now().toString(), 'utf8'); -} - - -/** - * Recursively walk a directory and return the full path to all files found. - * Symbolic links are ignored. - * - * @param dir the directory to walk - * - * @return An iterator of the full path to all files recursively found in the directory. - */ -export async function* walkDirectory(dir: string): AsyncIterableIterator { - const seenFiles = new Set(); - for await (const d of await fs.opendir(dir)) { - const entry = path.join(dir, d.name); - seenFiles.add(entry); - if (d.isDirectory()) { - yield* walkDirectory(entry); - } else if (d.isFile()) { - yield entry; - } - } -} - -/** - * Pluralizes a word. - * Example: Returns "N repository" if N is one, "N repositories" otherwise. - */ -export function pluralize(numItems: number | undefined, singular: string, plural: string): string { - return numItems ? `${numItems} ${numItems === 1 ? singular : plural}` : ''; -} diff --git a/extensions/ql-vscode/src/history-item-label-provider.ts b/extensions/ql-vscode/src/history-item-label-provider.ts deleted file mode 100644 index dc17c2b5aef..00000000000 --- a/extensions/ql-vscode/src/history-item-label-provider.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { env } from 'vscode'; -import * as path from 'path'; -import { QueryHistoryConfig } from './config'; -import { LocalQueryInfo, QueryHistoryInfo } from './query-results'; -import { RemoteQueryHistoryItem } from './remote-queries/remote-query-history-item'; -import { pluralize } from './helpers'; - -interface InterpolateReplacements { - t: string; // Start time - q: string; // Query name - d: string; // Database/Controller repo name - r: string; // Result count/Empty - s: string; // Status - f: string; // Query file name - '%': '%'; // Percent sign -} - -export class HistoryItemLabelProvider { - constructor(private config: QueryHistoryConfig) { - /**/ - } - - getLabel(item: QueryHistoryInfo) { - const replacements = item.t === 'local' - ? this.getLocalInterpolateReplacements(item) - : this.getRemoteInterpolateReplacements(item); - - const rawLabel = item.userSpecifiedLabel ?? (this.config.format || '%q'); - - return this.interpolate(rawLabel, replacements); - } - - /** - * If there is a user-specified label for this query, interpolate and use that. - * Otherwise, use the raw name of this query. - * - * @returns the name of the query, unless there is a custom label for this query. - */ - getShortLabel(item: QueryHistoryInfo): string { - return item.userSpecifiedLabel - ? this.getLabel(item) - : item.t === 'local' - ? item.getQueryName() - : item.remoteQuery.queryName; - } - - - private interpolate(rawLabel: string, replacements: InterpolateReplacements): string { - const label = rawLabel.replace(/%(.)/g, (match, key: keyof InterpolateReplacements) => { - const replacement = replacements[key]; - return replacement !== undefined ? replacement : match; - }); - - return label.replace(/\s+/g, ' '); - } - - private getLocalInterpolateReplacements(item: LocalQueryInfo): InterpolateReplacements { - const { resultCount = 0, statusString = 'in progress' } = item.completedQuery || {}; - return { - t: item.startTime, - q: item.getQueryName(), - d: item.initialInfo.databaseInfo.name, - r: `(${resultCount} results)`, - s: statusString, - f: item.getQueryFileName(), - '%': '%', - }; - } - - // Return the number of repositories queried if available. Otherwise, use the controller repository name. - private buildRepoLabel(item: RemoteQueryHistoryItem): string { - const repositoryCount = item.remoteQuery.repositoryCount; - - if (repositoryCount) { - return pluralize(repositoryCount, 'repository', 'repositories'); - } - - return `${item.remoteQuery.controllerRepository.owner}/${item.remoteQuery.controllerRepository.name}`; - } - - private getRemoteInterpolateReplacements(item: RemoteQueryHistoryItem): InterpolateReplacements { - const resultCount = item.resultCount ? `(${pluralize(item.resultCount, 'result', 'results')})` : ''; - return { - t: new Date(item.remoteQuery.executionStartTime).toLocaleString(env.language), - q: `${item.remoteQuery.queryName} (${item.remoteQuery.language})`, - d: this.buildRepoLabel(item), - r: resultCount, - s: item.status, - f: path.basename(item.remoteQuery.queryFilePath), - '%': '%' - }; - } -} diff --git a/extensions/ql-vscode/src/ide-server.ts b/extensions/ql-vscode/src/ide-server.ts deleted file mode 100644 index c148e6f7e9f..00000000000 --- a/extensions/ql-vscode/src/ide-server.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ProgressLocation, window } from 'vscode'; -import { StreamInfo } from 'vscode-languageclient'; -import * as cli from './cli'; -import { QueryServerConfig } from './config'; -import { ideServerLogger } from './logging'; - -/** - * Managing the language server for CodeQL. - */ - -/** Starts a new CodeQL language server process, sending progress messages to the status bar. */ -export async function spawnIdeServer(config: QueryServerConfig): Promise { - return window.withProgress({ title: 'CodeQL language server', location: ProgressLocation.Window }, async (progressReporter, _) => { - const args = ['--check-errors', 'ON_CHANGE']; - if (cli.shouldDebugIdeServer()) { - args.push('-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=n,quiet=y'); - } - const child = cli.spawnServer( - config.codeQlPath, - 'CodeQL language server', - ['execute', 'language-server'], - args, - ideServerLogger, - data => ideServerLogger.log(data.toString(), { trailingNewline: false }), - data => ideServerLogger.log(data.toString(), { trailingNewline: false }), - progressReporter - ); - return { writer: child.stdin!, reader: child.stdout! }; - }); -} diff --git a/extensions/ql-vscode/src/interface-utils.ts b/extensions/ql-vscode/src/interface-utils.ts deleted file mode 100644 index ea51b654aff..00000000000 --- a/extensions/ql-vscode/src/interface-utils.ts +++ /dev/null @@ -1,261 +0,0 @@ -import * as crypto from 'crypto'; -import * as os from 'os'; -import { - Uri, - Location, - Range, - WebviewPanel, - Webview, - workspace, - window as Window, - ViewColumn, - Selection, - TextEditorRevealType, - ThemeColor, -} from 'vscode'; -import { - tryGetResolvableLocation, - isLineColumnLoc -} from './pure/bqrs-utils'; -import { DatabaseItem, DatabaseManager } from './databases'; -import { ViewSourceFileMsg } from './pure/interface-types'; -import { Logger } from './logging'; -import { - LineColumnLocation, - WholeFileLocation, - UrlValue, - ResolvableLocationValue -} from './pure/bqrs-cli-types'; - -/** - * This module contains functions and types that are sharedd between - * interface.ts and compare-interface.ts. - */ - -/** Gets a nonce string created with 128 bits of entropy. */ -export function getNonce(): string { - return crypto.randomBytes(16).toString('base64'); -} - -/** - * Whether to force webview to reveal - */ -export enum WebviewReveal { - Forced, - NotForced, -} - -/** - * Converts a filesystem URI into a webview URI string that the given panel - * can use to read the file. - */ -export function fileUriToWebviewUri( - panel: WebviewPanel, - fileUriOnDisk: Uri -): string { - return panel.webview.asWebviewUri(fileUriOnDisk).toString(); -} - -/** - * Resolves the specified CodeQL location to a URI into the source archive. - * @param loc CodeQL location to resolve. Must have a non-empty value for `loc.file`. - * @param databaseItem Database in which to resolve the file location. - */ -function resolveFivePartLocation( - loc: LineColumnLocation, - databaseItem: DatabaseItem -): Location { - // `Range` is a half-open interval, and is zero-based. CodeQL locations are closed intervals, and - // are one-based. Adjust accordingly. - const range = new Range( - Math.max(0, loc.startLine - 1), - Math.max(0, loc.startColumn - 1), - Math.max(0, loc.endLine - 1), - Math.max(1, loc.endColumn) - ); - - return new Location(databaseItem.resolveSourceFile(loc.uri), range); -} - -/** - * Resolves the specified CodeQL filesystem resource location to a URI into the source archive. - * @param loc CodeQL location to resolve, corresponding to an entire filesystem resource. Must have a non-empty value for `loc.file`. - * @param databaseItem Database in which to resolve the filesystem resource location. - */ -function resolveWholeFileLocation( - loc: WholeFileLocation, - databaseItem: DatabaseItem -): Location { - // A location corresponding to the start of the file. - const range = new Range(0, 0, 0, 0); - return new Location(databaseItem.resolveSourceFile(loc.uri), range); -} - -/** - * Try to resolve the specified CodeQL location to a URI into the source archive. If no exact location - * can be resolved, returns `undefined`. - * @param loc CodeQL location to resolve - * @param databaseItem Database in which to resolve the file location. - */ -export function tryResolveLocation( - loc: UrlValue | undefined, - databaseItem: DatabaseItem -): Location | undefined { - const resolvableLoc = tryGetResolvableLocation(loc); - if (!resolvableLoc || typeof resolvableLoc === 'string') { - return; - } else if (isLineColumnLoc(resolvableLoc)) { - return resolveFivePartLocation(resolvableLoc, databaseItem); - } else { - return resolveWholeFileLocation(resolvableLoc, databaseItem); - } -} - -/** - * Returns HTML to populate the given webview. - * Uses a content security policy that only loads the given script. - */ -export function getHtmlForWebview( - webview: Webview, - scriptUriOnDisk: Uri, - stylesheetUrisOnDisk: Uri[], - allowInlineStyles: boolean -): string { - // Convert the on-disk URIs into webview URIs. - const scriptWebviewUri = webview.asWebviewUri(scriptUriOnDisk); - const stylesheetWebviewUris = stylesheetUrisOnDisk.map(stylesheetUriOnDisk => - webview.asWebviewUri(stylesheetUriOnDisk)); - - // Use a nonce in the content security policy to uniquely identify the above resources. - const nonce = getNonce(); - - const stylesheetsHtmlLines = allowInlineStyles - ? stylesheetWebviewUris.map(uri => createStylesLinkWithoutNonce(uri)) - : stylesheetWebviewUris.map(uri => createStylesLinkWithNonce(nonce, uri)); - - const styleSrc = allowInlineStyles - ? `${webview.cspSource} vscode-file: 'unsafe-inline'` - : `'nonce-${nonce}'`; - - const fontSrc = webview.cspSource; - - /* - * Content security policy: - * default-src: allow nothing by default. - * script-src: allow only the given script, using the nonce. - * style-src: allow only the given stylesheet, using the nonce. - * connect-src: only allow fetch calls to webview resource URIs - * (this is used to load BQRS result files). - */ - return ` - - - - ${stylesheetsHtmlLines.join(` ${os.EOL}`)} - - -
-
- - -`; -} - -export async function showResolvableLocation( - loc: ResolvableLocationValue, - databaseItem: DatabaseItem -): Promise { - await showLocation(tryResolveLocation(loc, databaseItem)); -} - -export async function showLocation(location?: Location) { - if (!location) { - return; - } - - const doc = await workspace.openTextDocument(location.uri); - const editorsWithDoc = Window.visibleTextEditors.filter( - (e) => e.document === doc - ); - const editor = - editorsWithDoc.length > 0 - ? editorsWithDoc[0] - : await Window.showTextDocument( - doc, { - // avoid preview mode so editor is sticky and will be added to navigation and search histories. - preview: false, - viewColumn: ViewColumn.One, - }); - - const range = location.range; - // When highlighting the range, vscode's occurrence-match and bracket-match highlighting will - // trigger based on where we place the cursor/selection, and will compete for the user's attention. - // For reference: - // - Occurences are highlighted when the cursor is next to or inside a word or a whole word is selected. - // - Brackets are highlighted when the cursor is next to a bracket and there is an empty selection. - // - Multi-line selections explicitly highlight line-break characters, but multi-line decorators do not. - // - // For single-line ranges, select the whole range, mainly to disable bracket highlighting. - // For multi-line ranges, place the cursor at the beginning to avoid visual artifacts from selected line-breaks. - // Multi-line ranges are usually large enough to overshadow the noise from bracket highlighting. - const selectionEnd = - range.start.line === range.end.line ? range.end : range.start; - editor.selection = new Selection(range.start, selectionEnd); - editor.revealRange(range, TextEditorRevealType.InCenter); - editor.setDecorations(shownLocationDecoration, [range]); - editor.setDecorations(shownLocationLineDecoration, [range]); -} - -const findMatchBackground = new ThemeColor('editor.findMatchBackground'); -const findRangeHighlightBackground = new ThemeColor( - 'editor.findRangeHighlightBackground' -); - - -export const shownLocationDecoration = Window.createTextEditorDecorationType({ - backgroundColor: findMatchBackground, -}); - -export const shownLocationLineDecoration = Window.createTextEditorDecorationType( - { - backgroundColor: findRangeHighlightBackground, - isWholeLine: true, - } -); - -export async function jumpToLocation( - msg: ViewSourceFileMsg, - databaseManager: DatabaseManager, - logger: Logger -) { - const databaseItem = databaseManager.findDatabaseItem( - Uri.parse(msg.databaseUri) - ); - if (databaseItem !== undefined) { - try { - await showResolvableLocation(msg.loc, databaseItem); - } catch (e) { - if (e instanceof Error) { - if (e.message.match(/File not found/)) { - void Window.showErrorMessage( - 'Original file of this result is not in the database\'s source archive.' - ); - } else { - void logger.log(`Unable to handleMsgFromView: ${e.message}`); - } - } else { - void logger.log(`Unable to handleMsgFromView: ${e}`); - } - } - } -} - -function createStylesLinkWithNonce(nonce: string, uri: Uri): string { - return ``; -} - -function createStylesLinkWithoutNonce(uri: Uri): string { - return ``; -} diff --git a/extensions/ql-vscode/src/interface.ts b/extensions/ql-vscode/src/interface.ts deleted file mode 100644 index 21bfad4aa6f..00000000000 --- a/extensions/ql-vscode/src/interface.ts +++ /dev/null @@ -1,892 +0,0 @@ -import * as path from 'path'; -import * as Sarif from 'sarif'; -import { DisposableObject } from './pure/disposable-object'; -import * as vscode from 'vscode'; -import { - Diagnostic, - DiagnosticRelatedInformation, - DiagnosticSeverity, - languages, - Uri, - window as Window, - env -} from 'vscode'; -import * as cli from './cli'; -import { CodeQLCliServer } from './cli'; -import { DatabaseEventKind, DatabaseItem, DatabaseManager } from './databases'; -import { showAndLogErrorMessage, tmpDir } from './helpers'; -import { assertNever, getErrorMessage, getErrorStack } from './pure/helpers-pure'; -import { - FromResultsViewMsg, - Interpretation, - IntoResultsViewMsg, - QueryMetadata, - ResultsPaths, - SortedResultSetInfo, - SortedResultsMap, - InterpretedResultsSortState, - SortDirection, - ALERTS_TABLE_NAME, - GRAPH_TABLE_NAME, - RawResultsSortState, -} from './pure/interface-types'; -import { Logger } from './logging'; -import * as messages from './pure/messages'; -import { commandRunner } from './commandRunner'; -import { CompletedQueryInfo, interpretResultsSarif, interpretGraphResults } from './query-results'; -import { QueryEvaluationInfo } from './run-queries'; -import { parseSarifLocation, parseSarifPlainTextMessage } from './pure/sarif-utils'; -import { - WebviewReveal, - fileUriToWebviewUri, - tryResolveLocation, - getHtmlForWebview, - shownLocationDecoration, - shownLocationLineDecoration, - jumpToLocation, -} from './interface-utils'; -import { getDefaultResultSetName, ParsedResultSets } from './pure/interface-types'; -import { RawResultSet, transformBqrsResultSet, ResultSetSchema } from './pure/bqrs-cli-types'; -import { PAGE_SIZE } from './config'; -import { CompletedLocalQueryInfo } from './query-results'; -import { HistoryItemLabelProvider } from './history-item-label-provider'; - -/** - * interface.ts - * ------------ - * - * Displaying query results and linking back to source files when the - * webview asks us to. - */ - -function sortMultiplier(sortDirection: SortDirection): number { - switch (sortDirection) { - case SortDirection.asc: - return 1; - case SortDirection.desc: - return -1; - } -} - -function sortInterpretedResults( - results: Sarif.Result[], - sortState: InterpretedResultsSortState | undefined -): void { - if (sortState !== undefined) { - const multiplier = sortMultiplier(sortState.sortDirection); - switch (sortState.sortBy) { - case 'alert-message': - results.sort((a, b) => - a.message.text === undefined - ? 0 - : b.message.text === undefined - ? 0 - : multiplier * a.message.text?.localeCompare(b.message.text, env.language) - ); - break; - default: - assertNever(sortState.sortBy); - } - } -} - -function interpretedPageSize(interpretation: Interpretation | undefined): number { - if (interpretation?.data.t == 'GraphInterpretationData') { - // Graph views always have one result per page. - return 1; - } - return PAGE_SIZE.getValue(); -} - -function numPagesOfResultSet(resultSet: RawResultSet, interpretation?: Interpretation): number { - const pageSize = interpretedPageSize(interpretation); - - const n = interpretation?.data.t == 'GraphInterpretationData' - ? interpretation.data.dot.length - : resultSet.schema.rows; - - return Math.ceil(n / pageSize); -} - -function numInterpretedPages(interpretation: Interpretation | undefined): number { - if (!interpretation) { - return 0; - } - - const pageSize = interpretedPageSize(interpretation); - - const n = interpretation.data.t == 'GraphInterpretationData' - ? interpretation.data.dot.length - : interpretation.data.runs[0].results?.length || 0; - - return Math.ceil(n / pageSize); -} - -export class InterfaceManager extends DisposableObject { - private _displayedQuery?: CompletedLocalQueryInfo; - private _interpretation?: Interpretation; - private _panel: vscode.WebviewPanel | undefined; - private _panelLoaded = false; - private _panelLoadedCallBacks: (() => void)[] = []; - - private readonly _diagnosticCollection = languages.createDiagnosticCollection( - 'codeql-query-results' - ); - - constructor( - public ctx: vscode.ExtensionContext, - private databaseManager: DatabaseManager, - public cliServer: CodeQLCliServer, - public logger: Logger, - private labelProvider: HistoryItemLabelProvider - ) { - super(); - this.push(this._diagnosticCollection); - this.push( - vscode.window.onDidChangeTextEditorSelection( - this.handleSelectionChange.bind(this) - ) - ); - void logger.log('Registering path-step navigation commands.'); - this.push( - commandRunner( - 'codeQLQueryResults.nextPathStep', - this.navigatePathStep.bind(this, 1) - ) - ); - this.push( - commandRunner( - 'codeQLQueryResults.previousPathStep', - this.navigatePathStep.bind(this, -1) - ) - ); - - this.push( - this.databaseManager.onDidChangeDatabaseItem(({ kind }) => { - if (kind === DatabaseEventKind.Remove) { - this._diagnosticCollection.clear(); - if (this.isShowingPanel()) { - void this.postMessage({ - t: 'untoggleShowProblems' - }); - } - } - }) - ); - } - - async navigatePathStep(direction: number): Promise { - await this.postMessage({ t: 'navigatePath', direction }); - } - - private isShowingPanel() { - return !!this._panel; - } - - // Returns the webview panel, creating it if it doesn't already - // exist. - getPanel(): vscode.WebviewPanel { - if (this._panel == undefined) { - const { ctx } = this; - const webViewColumn = this.chooseColumnForWebview(); - const panel = (this._panel = Window.createWebviewPanel( - 'resultsView', // internal name - 'CodeQL Query Results', // user-visible name - { viewColumn: webViewColumn, preserveFocus: true }, - { - enableScripts: true, - enableFindWidget: true, - retainContextWhenHidden: true, - localResourceRoots: [ - vscode.Uri.file(tmpDir.name), - vscode.Uri.file(path.join(this.ctx.extensionPath, 'out')) - ] - } - )); - - this.push(this._panel.onDidDispose( - () => { - this._panel = undefined; - this._displayedQuery = undefined; - this._panelLoaded = false; - }, - null, - ctx.subscriptions - )); - const scriptPathOnDisk = vscode.Uri.file( - ctx.asAbsolutePath('out/resultsView.js') - ); - const stylesheetPathOnDisk = vscode.Uri.file( - ctx.asAbsolutePath('out/view/resultsView.css') - ); - panel.webview.html = getHtmlForWebview( - panel.webview, - scriptPathOnDisk, - [stylesheetPathOnDisk], - false - ); - this.push(panel.webview.onDidReceiveMessage( - async (e) => this.handleMsgFromView(e), - undefined, - ctx.subscriptions - )); - } - return this._panel; - } - - /** - * Choose where to open the webview. - * - * If there is a single view column, then open beside it. - * If there are multiple view columns, then open beside the active column, - * unless the active editor is the last column. In this case, open in the first column. - * - * The goal is to avoid opening new columns when there already are two columns open. - */ - private chooseColumnForWebview(): vscode.ViewColumn { - // This is not a great way to determine the number of view columns, but I - // can't find a vscode API that does it any better. - // Here, iterate through all the visible editors and determine the max view column. - // This won't work if the largest view column is empty. - const colCount = Window.visibleTextEditors.reduce((maxVal, editor) => - Math.max(maxVal, Number.parseInt(editor.viewColumn?.toFixed() || '0', 10)), 0); - if (colCount <= 1) { - return vscode.ViewColumn.Beside; - } - const activeViewColumnNum = Number.parseInt(Window.activeTextEditor?.viewColumn?.toFixed() || '0', 10); - return activeViewColumnNum === colCount ? vscode.ViewColumn.One : vscode.ViewColumn.Beside; - } - - private async changeInterpretedSortState( - sortState: InterpretedResultsSortState | undefined - ): Promise { - if (this._displayedQuery === undefined) { - void showAndLogErrorMessage( - 'Failed to sort results since evaluation info was unknown.' - ); - return; - } - // Notify the webview that it should expect new results. - await this.postMessage({ t: 'resultsUpdating' }); - await this._displayedQuery.completedQuery.updateInterpretedSortState(sortState); - await this.showResults(this._displayedQuery, WebviewReveal.NotForced, true); - } - - private async changeRawSortState( - resultSetName: string, - sortState: RawResultsSortState | undefined - ): Promise { - if (this._displayedQuery === undefined) { - void showAndLogErrorMessage( - 'Failed to sort results since evaluation info was unknown.' - ); - return; - } - // Notify the webview that it should expect new results. - await this.postMessage({ t: 'resultsUpdating' }); - await this._displayedQuery.completedQuery.updateSortState( - this.cliServer, - resultSetName, - sortState - ); - // Sorting resets to first page, as there is arguably no particular - // correlation between the results on the nth page that the user - // was previously viewing and the contents of the nth page in a - // new sorted order. - await this.showPageOfRawResults(resultSetName, 0, true); - } - - private async handleMsgFromView(msg: FromResultsViewMsg): Promise { - try { - switch (msg.t) { - case 'viewSourceFile': { - await jumpToLocation(msg, this.databaseManager, this.logger); - break; - } - case 'toggleDiagnostics': { - if (msg.visible) { - const databaseItem = this.databaseManager.findDatabaseItem( - Uri.parse(msg.databaseUri) - ); - if (databaseItem !== undefined) { - await this.showResultsAsDiagnostics( - msg.origResultsPaths, - msg.metadata, - databaseItem - ); - } - } else { - // TODO: Only clear diagnostics on the same database. - this._diagnosticCollection.clear(); - } - break; - } - case 'resultViewLoaded': - this._panelLoaded = true; - this._panelLoadedCallBacks.forEach((cb) => cb()); - this._panelLoadedCallBacks = []; - break; - case 'changeSort': - await this.changeRawSortState(msg.resultSetName, msg.sortState); - break; - case 'changeInterpretedSort': - await this.changeInterpretedSortState(msg.sortState); - break; - case 'changePage': - if (msg.selectedTable === ALERTS_TABLE_NAME || msg.selectedTable === GRAPH_TABLE_NAME) { - await this.showPageOfInterpretedResults(msg.pageNumber); - } - else { - await this.showPageOfRawResults( - msg.selectedTable, - msg.pageNumber, - // When we are in an unsorted state, we guarantee that - // sortedResultsInfo doesn't have an entry for the current - // result set. Use this to determine whether or not we use - // the sorted bqrs file. - !!this._displayedQuery?.completedQuery.sortedResultsInfo[msg.selectedTable] - ); - } - break; - case 'openFile': - await this.openFile(msg.filePath); - break; - default: - assertNever(msg); - } - } catch (e) { - void showAndLogErrorMessage(getErrorMessage(e), { - fullMessage: getErrorStack(e) - }); - } - } - - postMessage(msg: IntoResultsViewMsg): Thenable { - return this.getPanel().webview.postMessage(msg); - } - - private waitForPanelLoaded(): Promise { - return new Promise((resolve) => { - if (this._panelLoaded) { - resolve(); - } else { - this._panelLoadedCallBacks.push(resolve); - } - }); - } - - /** - * Show query results in webview panel. - * @param fullQuery Evaluation info for the executed query. - * @param shouldKeepOldResultsWhileRendering Should keep old results while rendering. - * @param forceReveal Force the webview panel to be visible and - * Appropriate when the user has just performed an explicit - * UI interaction requesting results, e.g. clicking on a query - * history entry. - */ - public async showResults( - fullQuery: CompletedLocalQueryInfo, - forceReveal: WebviewReveal, - shouldKeepOldResultsWhileRendering = false - ): Promise { - if (fullQuery.completedQuery.result.resultType !== messages.QueryResultType.SUCCESS) { - return; - } - - this._interpretation = undefined; - const interpretationPage = await this.interpretResultsInfo( - fullQuery.completedQuery.query, - fullQuery.completedQuery.interpretedResultsSortState - ); - - const sortedResultsMap: SortedResultsMap = {}; - Object.entries(fullQuery.completedQuery.sortedResultsInfo).forEach( - ([k, v]) => - (sortedResultsMap[k] = this.convertPathPropertiesToWebviewUris(v)) - ); - - this._displayedQuery = fullQuery; - - const panel = this.getPanel(); - await this.waitForPanelLoaded(); - if (!panel.visible) { - if (forceReveal === WebviewReveal.Forced) { - panel.reveal(undefined, true); - } else { - // The results panel exists, (`.getPanel()` guarantees it) but - // is not visible; it's in a not-currently-viewed tab. Show a - // more asynchronous message to not so abruptly interrupt - // user's workflow by immediately revealing the panel. - const showButton = 'View Results'; - const queryName = this.labelProvider.getShortLabel(fullQuery); - const resultPromise = vscode.window.showInformationMessage( - `Finished running query ${queryName.length > 0 ? ` "${queryName}"` : '' - }.`, - showButton - ); - // Address this click asynchronously so we still update the - // query history immediately. - void resultPromise.then((result) => { - if (result === showButton) { - panel.reveal(); - } - }); - } - } - - // Note that the resultSetSchemas will return offsets for the default (unsorted) page, - // which may not be correct. However, in this case, it doesn't matter since we only - // need the first offset, which will be the same no matter which sorting we use. - const resultSetSchemas = await this.getResultSetSchemas(fullQuery.completedQuery); - const resultSetNames = resultSetSchemas.map(schema => schema.name); - - const selectedTable = getDefaultResultSetName(resultSetNames); - const schema = resultSetSchemas.find( - (resultSet) => resultSet.name == selectedTable - )!; - - // Use sorted results path if it exists. This may happen if we are - // reloading the results view after it has been sorted in the past. - const resultsPath = fullQuery.completedQuery.getResultsPath(selectedTable); - const pageSize = PAGE_SIZE.getValue(); - const chunk = await this.cliServer.bqrsDecode( - resultsPath, - schema.name, - { - // Always send the first page. - // It may not wind up being the page we actually show, - // if there are interpreted results, but speculatively - // send anyway. - offset: schema.pagination?.offsets[0], - pageSize - } - ); - const resultSet = transformBqrsResultSet(schema, chunk); - fullQuery.completedQuery.setResultCount(interpretationPage?.numTotalResults || resultSet.schema.rows); - const parsedResultSets: ParsedResultSets = { - pageNumber: 0, - pageSize, - numPages: numPagesOfResultSet(resultSet, this._interpretation), - numInterpretedPages: numInterpretedPages(this._interpretation), - resultSet: { ...resultSet, t: 'RawResultSet' }, - selectedTable: undefined, - resultSetNames, - }; - - await this.postMessage({ - t: 'setState', - interpretation: interpretationPage, - origResultsPaths: fullQuery.completedQuery.query.resultsPaths, - resultsPath: this.convertPathToWebviewUri( - fullQuery.completedQuery.query.resultsPaths.resultsPath - ), - parsedResultSets, - sortedResultsMap, - database: fullQuery.initialInfo.databaseInfo, - shouldKeepOldResultsWhileRendering, - metadata: fullQuery.completedQuery.query.metadata, - queryName: this.labelProvider.getLabel(fullQuery), - queryPath: fullQuery.initialInfo.queryPath - }); - } - - /** - * Show a page of interpreted results - */ - public async showPageOfInterpretedResults( - pageNumber: number - ): Promise { - if (this._displayedQuery === undefined) { - throw new Error('Trying to show interpreted results but displayed query was undefined'); - } - if (this._interpretation === undefined) { - throw new Error('Trying to show interpreted results but interpretation was undefined'); - } - if (this._interpretation.data.t === 'SarifInterpretationData' && this._interpretation.data.runs[0].results === undefined) { - throw new Error('Trying to show interpreted results but results were undefined'); - } - - const resultSetSchemas = await this.getResultSetSchemas(this._displayedQuery.completedQuery); - const resultSetNames = resultSetSchemas.map(schema => schema.name); - - await this.postMessage({ - t: 'showInterpretedPage', - interpretation: this.getPageOfInterpretedResults(pageNumber), - database: this._displayedQuery.initialInfo.databaseInfo, - metadata: this._displayedQuery.completedQuery.query.metadata, - pageNumber, - resultSetNames, - pageSize: interpretedPageSize(this._interpretation), - numPages: numInterpretedPages(this._interpretation), - queryName: this.labelProvider.getLabel(this._displayedQuery), - queryPath: this._displayedQuery.initialInfo.queryPath - }); - } - - private async getResultSetSchemas(completedQuery: CompletedQueryInfo, selectedTable = ''): Promise { - const resultsPath = completedQuery.getResultsPath(selectedTable); - const schemas = await this.cliServer.bqrsInfo( - resultsPath, - PAGE_SIZE.getValue() - ); - return schemas['result-sets']; - } - - public async openFile(filePath: string) { - const textDocument = await vscode.workspace.openTextDocument(filePath); - await vscode.window.showTextDocument(textDocument, vscode.ViewColumn.One); - } - - /** - * Show a page of raw results from the chosen table. - */ - public async showPageOfRawResults( - selectedTable: string, - pageNumber: number, - sorted = false - ): Promise { - const results = this._displayedQuery; - if (results === undefined) { - throw new Error('trying to view a page of a query that is not loaded'); - } - - const sortedResultsMap: SortedResultsMap = {}; - Object.entries(results.completedQuery.sortedResultsInfo).forEach( - ([k, v]) => - (sortedResultsMap[k] = this.convertPathPropertiesToWebviewUris(v)) - ); - - const resultSetSchemas = await this.getResultSetSchemas(results.completedQuery, sorted ? selectedTable : ''); - - // If there is a specific sorted table selected, a different bqrs file is loaded that doesn't have all the result set names. - // Make sure that we load all result set names here. - // See https://github.com/github/vscode-codeql/issues/1005 - const allResultSetSchemas = sorted ? await this.getResultSetSchemas(results.completedQuery, '') : resultSetSchemas; - const resultSetNames = allResultSetSchemas.map(schema => schema.name); - - const schema = resultSetSchemas.find( - (resultSet) => resultSet.name == selectedTable - )!; - if (schema === undefined) - throw new Error(`Query result set '${selectedTable}' not found.`); - - const pageSize = PAGE_SIZE.getValue(); - const chunk = await this.cliServer.bqrsDecode( - results.completedQuery.getResultsPath(selectedTable, sorted), - schema.name, - { - offset: schema.pagination?.offsets[pageNumber], - pageSize - } - ); - const resultSet = transformBqrsResultSet(schema, chunk); - - const parsedResultSets: ParsedResultSets = { - pageNumber, - pageSize, - resultSet: { t: 'RawResultSet', ...resultSet }, - numPages: numPagesOfResultSet(resultSet), - numInterpretedPages: numInterpretedPages(this._interpretation), - selectedTable: selectedTable, - resultSetNames, - }; - - await this.postMessage({ - t: 'setState', - interpretation: this._interpretation, - origResultsPaths: results.completedQuery.query.resultsPaths, - resultsPath: this.convertPathToWebviewUri( - results.completedQuery.query.resultsPaths.resultsPath - ), - parsedResultSets, - sortedResultsMap, - database: results.initialInfo.databaseInfo, - shouldKeepOldResultsWhileRendering: false, - metadata: results.completedQuery.query.metadata, - queryName: this.labelProvider.getLabel(results), - queryPath: results.initialInfo.queryPath - }); - } - - private async _getInterpretedResults( - metadata: QueryMetadata | undefined, - resultsPaths: ResultsPaths, - sourceInfo: cli.SourceInfo | undefined, - sourceLocationPrefix: string, - sortState: InterpretedResultsSortState | undefined - ): Promise { - if (!resultsPaths) { - void this.logger.log('No results path. Cannot display interpreted results.'); - return undefined; - } - let data; - let numTotalResults; - if (metadata?.kind === GRAPH_TABLE_NAME) { - data = await interpretGraphResults( - this.cliServer, - metadata, - resultsPaths, - sourceInfo - ); - numTotalResults = data.dot.length; - } else { - const sarif = await interpretResultsSarif( - this.cliServer, - metadata, - resultsPaths, - sourceInfo - ); - - sarif.runs.forEach(run => { - if (run.results) { - sortInterpretedResults(run.results, sortState); - } - }); - - sarif.sortState = sortState; - data = sarif; - - numTotalResults = (() => { - return sarif.runs?.[0]?.results - ? sarif.runs[0].results.length - : 0; - })(); - } - - const interpretation: Interpretation = { - data, - sourceLocationPrefix, - numTruncatedResults: 0, - numTotalResults - }; - this._interpretation = interpretation; - return interpretation; - } - - private getPageOfInterpretedResults( - pageNumber: number - ): Interpretation { - function getPageOfRun(run: Sarif.Run): Sarif.Run { - return { - ...run, results: run.results?.slice( - PAGE_SIZE.getValue() * pageNumber, - PAGE_SIZE.getValue() * (pageNumber + 1) - ) - }; - } - - const interp = this._interpretation; - if (interp === undefined) { - throw new Error('Tried to get interpreted results before interpretation finished'); - } - - if (interp.data.t !== 'SarifInterpretationData') - return interp; - - if (interp.data.runs.length !== 1) { - void this.logger.log(`Warning: SARIF file had ${interp.data.runs.length} runs, expected 1`); - } - - return { - ...interp, - data: { - ...interp.data, - runs: [getPageOfRun(interp.data.runs[0])] - } - }; - } - - private async interpretResultsInfo( - query: QueryEvaluationInfo, - sortState: InterpretedResultsSortState | undefined - ): Promise { - if ( - query.canHaveInterpretedResults() && - query.quickEvalPosition === undefined // never do results interpretation if quickEval - ) { - try { - const dbItem = this.databaseManager.findDatabaseItem(Uri.file(query.dbItemPath)); - if (!dbItem) { - throw new Error(`Could not find database item for ${query.dbItemPath}`); - } - const sourceLocationPrefix = await dbItem.getSourceLocationPrefix( - this.cliServer - ); - const sourceArchiveUri = dbItem.sourceArchive; - const sourceInfo = - sourceArchiveUri === undefined - ? undefined - : { - sourceArchive: sourceArchiveUri.fsPath, - sourceLocationPrefix, - }; - await this._getInterpretedResults( - query.metadata, - query.resultsPaths, - sourceInfo, - sourceLocationPrefix, - sortState - ); - } catch (e) { - // If interpretation fails, accept the error and continue - // trying to render uninterpreted results anyway. - void showAndLogErrorMessage( - `Showing raw results instead of interpreted ones due to an error. ${getErrorMessage(e)}` - ); - } - } - return this._interpretation && this.getPageOfInterpretedResults(0); - } - - private async showResultsAsDiagnostics( - resultsInfo: ResultsPaths, - metadata: QueryMetadata | undefined, - database: DatabaseItem - ): Promise { - const sourceLocationPrefix = await database.getSourceLocationPrefix( - this.cliServer - ); - const sourceArchiveUri = database.sourceArchive; - const sourceInfo = - sourceArchiveUri === undefined - ? undefined - : { - sourceArchive: sourceArchiveUri.fsPath, - sourceLocationPrefix, - }; - // TODO: Performance-testing to determine whether this truncation is necessary. - const interpretation = await this._getInterpretedResults( - metadata, - resultsInfo, - sourceInfo, - sourceLocationPrefix, - undefined - ); - - if (!interpretation) { - return; - } - - try { - await this.showProblemResultsAsDiagnostics(interpretation, database); - } catch (e) { - void this.logger.log( - `Exception while computing problem results as diagnostics: ${getErrorMessage(e)}` - ); - this._diagnosticCollection.clear(); - } - } - - private async showProblemResultsAsDiagnostics( - interpretation: Interpretation, - databaseItem: DatabaseItem - ): Promise { - const { data, sourceLocationPrefix } = interpretation; - - if (data.t !== 'SarifInterpretationData') - return; - - if (!data.runs || !data.runs[0].results) { - void this.logger.log( - 'Didn\'t find a run in the sarif results. Error processing sarif?' - ); - return; - } - - const diagnostics: [Uri, ReadonlyArray][] = []; - - for (const result of data.runs[0].results) { - const message = result.message.text; - if (message === undefined) { - void this.logger.log('Sarif had result without plaintext message'); - continue; - } - if (!result.locations) { - void this.logger.log('Sarif had result without location'); - continue; - } - - const sarifLoc = parseSarifLocation( - result.locations[0], - sourceLocationPrefix - ); - if ('hint' in sarifLoc) { - continue; - } - const resultLocation = tryResolveLocation(sarifLoc, databaseItem); - if (!resultLocation) { - void this.logger.log('Sarif location was not resolvable ' + sarifLoc); - continue; - } - const parsedMessage = parseSarifPlainTextMessage(message); - const relatedInformation: DiagnosticRelatedInformation[] = []; - const relatedLocationsById: { [k: number]: Sarif.Location } = {}; - - for (const loc of result.relatedLocations || []) { - relatedLocationsById[loc.id!] = loc; - } - const resultMessageChunks: string[] = []; - for (const section of parsedMessage) { - if (typeof section === 'string') { - resultMessageChunks.push(section); - } else { - resultMessageChunks.push(section.text); - const sarifChunkLoc = parseSarifLocation( - relatedLocationsById[section.dest], - sourceLocationPrefix - ); - if ('hint' in sarifChunkLoc) { - continue; - } - const referenceLocation = tryResolveLocation( - sarifChunkLoc, - databaseItem - ); - - if (referenceLocation) { - const related = new DiagnosticRelatedInformation( - referenceLocation, - section.text - ); - relatedInformation.push(related); - } - } - } - const diagnostic = new Diagnostic( - resultLocation.range, - resultMessageChunks.join(''), - DiagnosticSeverity.Warning - ); - diagnostic.relatedInformation = relatedInformation; - - diagnostics.push([resultLocation.uri, [diagnostic]]); - } - this._diagnosticCollection.set(diagnostics); - } - - private convertPathToWebviewUri(path: string): string { - return fileUriToWebviewUri(this.getPanel(), Uri.file(path)); - } - - private convertPathPropertiesToWebviewUris( - info: SortedResultSetInfo - ): SortedResultSetInfo { - return { - resultsPath: this.convertPathToWebviewUri(info.resultsPath), - sortState: info.sortState, - }; - } - - private handleSelectionChange( - event: vscode.TextEditorSelectionChangeEvent - ): void { - if (event.kind === vscode.TextEditorSelectionChangeKind.Command) { - return; // Ignore selection events we caused ourselves. - } - const editor = vscode.window.activeTextEditor; - if (editor !== undefined) { - editor.setDecorations(shownLocationDecoration, []); - editor.setDecorations(shownLocationLineDecoration, []); - } - } -} diff --git a/extensions/ql-vscode/src/koffi.d.ts b/extensions/ql-vscode/src/koffi.d.ts new file mode 100644 index 00000000000..48cabce7265 --- /dev/null +++ b/extensions/ql-vscode/src/koffi.d.ts @@ -0,0 +1,4 @@ +// koffi/indirect is untyped in the upstream package, but it exports the same functions as koffi. +declare module "koffi/indirect" { + export * from "koffi"; +} diff --git a/extensions/ql-vscode/src/language-context-store.ts b/extensions/ql-vscode/src/language-context-store.ts new file mode 100644 index 00000000000..8614f03ec4d --- /dev/null +++ b/extensions/ql-vscode/src/language-context-store.ts @@ -0,0 +1,78 @@ +import type { App } from "./common/app"; +import { DisposableObject } from "./common/disposable-object"; +import type { AppEvent, AppEventEmitter } from "./common/events"; +import type { QueryLanguage } from "./common/query-language"; + +type LanguageFilter = QueryLanguage | "All"; + +export class LanguageContextStore extends DisposableObject { + public readonly onLanguageContextChanged: AppEvent; + private readonly onLanguageContextChangedEmitter: AppEventEmitter; + + private languageFilter: LanguageFilter; + + constructor(private readonly app: App) { + super(); + // State initialization + this.languageFilter = "All"; + + // Set up event emitters + this.onLanguageContextChangedEmitter = this.push( + app.createEventEmitter(), + ); + this.onLanguageContextChanged = this.onLanguageContextChangedEmitter.event; + } + + public async clearLanguageContext() { + this.languageFilter = "All"; + this.onLanguageContextChangedEmitter.fire(); + await this.app.commands.execute( + "setContext", + "codeQLDatabases.languageFilter", + "", + ); + } + + public async setLanguageContext(language: QueryLanguage) { + this.languageFilter = language; + this.onLanguageContextChangedEmitter.fire(); + await this.app.commands.execute( + "setContext", + "codeQLDatabases.languageFilter", + language, + ); + } + + /** + * This returns true if the given language should be included. + * + * That means that either the given language is selected or the "All" option is selected. + * + * @param language a query language or undefined if the language is unknown. + */ + public shouldInclude(language: QueryLanguage | undefined): boolean { + return this.languageFilter === "All" || this.languageFilter === language; + } + + /** + * This returns true if the given language is selected. + * + * If no language is given then it returns true if the "All" option is selected. + * + * @param language a query language or undefined. + */ + public isSelectedLanguage(language: QueryLanguage | undefined): boolean { + return ( + (this.languageFilter === "All" && language === undefined) || + this.languageFilter === language + ); + } + + public get selectedLanguage(): QueryLanguage | undefined { + if (this.languageFilter === "All") { + return undefined; + } + + return this.languageFilter; + } +} diff --git a/extensions/ql-vscode/src/language-selection-panel/language-selection-data-provider.ts b/extensions/ql-vscode/src/language-selection-panel/language-selection-data-provider.ts new file mode 100644 index 00000000000..fe0fb4c072c --- /dev/null +++ b/extensions/ql-vscode/src/language-selection-panel/language-selection-data-provider.ts @@ -0,0 +1,88 @@ +import { DisposableObject } from "../common/disposable-object"; +import type { LanguageContextStore } from "../language-context-store"; +import type { Event, TreeDataProvider } from "vscode"; +import { EventEmitter, ThemeIcon, TreeItem } from "vscode"; +import { + QueryLanguage, + getLanguageDisplayName, +} from "../common/query-language"; + +const ALL_LANGUAGE_SELECTION_OPTIONS = [ + undefined, // All languages + QueryLanguage.Actions, + QueryLanguage.Cpp, + QueryLanguage.CSharp, + QueryLanguage.Go, + QueryLanguage.Java, + QueryLanguage.Javascript, + QueryLanguage.Python, + QueryLanguage.Ruby, + QueryLanguage.Rust, + QueryLanguage.Swift, +]; + +// A tree view items consisting of of a language (or undefined for all languages) +// and a boolean indicating whether it is selected or not. +export class LanguageSelectionTreeViewItem extends TreeItem { + constructor( + public readonly language: QueryLanguage | undefined, + public readonly selected: boolean = false, + ) { + const label = language ? getLanguageDisplayName(language) : "All languages"; + super(label); + + this.iconPath = selected ? new ThemeIcon("check") : undefined; + this.contextValue = selected ? undefined : "canBeSelected"; + } +} + +export class LanguageSelectionTreeDataProvider + extends DisposableObject + implements TreeDataProvider +{ + private treeItems: LanguageSelectionTreeViewItem[]; + private readonly onDidChangeTreeDataEmitter = this.push( + new EventEmitter(), + ); + + public constructor(private readonly languageContext: LanguageContextStore) { + super(); + + this.treeItems = this.createTree(); + + // If the language context changes, we need to update the tree. + this.push( + this.languageContext.onLanguageContextChanged(() => { + this.treeItems = this.createTree(); + this.onDidChangeTreeDataEmitter.fire(); + }), + ); + } + + public get onDidChangeTreeData(): Event { + return this.onDidChangeTreeDataEmitter.event; + } + + public getTreeItem(item: LanguageSelectionTreeViewItem): TreeItem { + return item; + } + + public getChildren( + item?: LanguageSelectionTreeViewItem, + ): LanguageSelectionTreeViewItem[] { + if (!item) { + return this.treeItems; + } else { + return []; + } + } + + private createTree(): LanguageSelectionTreeViewItem[] { + return ALL_LANGUAGE_SELECTION_OPTIONS.map((language) => { + return new LanguageSelectionTreeViewItem( + language, + this.languageContext.isSelectedLanguage(language), + ); + }); + } +} diff --git a/extensions/ql-vscode/src/language-selection-panel/language-selection-panel.ts b/extensions/ql-vscode/src/language-selection-panel/language-selection-panel.ts new file mode 100644 index 00000000000..ee0539d184e --- /dev/null +++ b/extensions/ql-vscode/src/language-selection-panel/language-selection-panel.ts @@ -0,0 +1,39 @@ +import { DisposableObject } from "../common/disposable-object"; +import { window } from "vscode"; +import type { LanguageSelectionTreeViewItem } from "./language-selection-data-provider"; +import { LanguageSelectionTreeDataProvider } from "./language-selection-data-provider"; +import type { LanguageContextStore } from "../language-context-store"; +import type { LanguageSelectionCommands } from "../common/commands"; + +// This panel allows the selection of a single language, that will +// then filter all other relevant views (e.g. db panel, query history). +export class LanguageSelectionPanel extends DisposableObject { + constructor(private readonly languageContext: LanguageContextStore) { + super(); + + const dataProvider = new LanguageSelectionTreeDataProvider(languageContext); + this.push(dataProvider); + + const treeView = window.createTreeView("codeQLLanguageSelection", { + treeDataProvider: dataProvider, + }); + this.push(treeView); + } + + public getCommands(): LanguageSelectionCommands { + return { + "codeQLLanguageSelection.setSelectedItem": + this.handleSetSelectedLanguage.bind(this), + }; + } + + private async handleSetSelectedLanguage( + item: LanguageSelectionTreeViewItem, + ): Promise { + if (item.language) { + await this.languageContext.setLanguageContext(item.language); + } else { + await this.languageContext.clearLanguageContext(); + } + } +} diff --git a/extensions/ql-vscode/src/language-support/ast-viewer/ast-builder.ts b/extensions/ql-vscode/src/language-support/ast-viewer/ast-builder.ts new file mode 100644 index 00000000000..970d1f61a26 --- /dev/null +++ b/extensions/ql-vscode/src/language-support/ast-viewer/ast-builder.ts @@ -0,0 +1,163 @@ +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import type { + DecodedBqrsChunk, + BqrsId, + BqrsEntityValue, +} from "../../common/bqrs-cli-types"; +import type { DatabaseItem } from "../../databases/local-databases"; +import type { ChildAstItem, AstItem } from "./ast-viewer"; +import type { Uri } from "vscode"; +import { fileRangeFromURI } from "../contextual/file-range-from-uri"; +import { mapUrlValue } from "../../common/bqrs-raw-results-mapper"; + +/** + * A class that wraps a tree of QL results from a query that + * has an @kind of graph + */ +export class AstBuilder { + private roots: AstItem[] | undefined; + constructor( + private readonly bqrsPath: string, + private cli: CodeQLCliServer, + public db: DatabaseItem, + public fileName: Uri, + ) {} + + async getRoots(): Promise { + if (!this.roots) { + this.roots = await this.parseRoots(); + } + return this.roots; + } + + private async parseRoots(): Promise { + const options = { entities: ["id", "url", "string"] }; + const [nodeTuples, edgeTuples, graphProperties] = await Promise.all([ + this.cli.bqrsDecode(this.bqrsPath, "nodes", options), + this.cli.bqrsDecode(this.bqrsPath, "edges", options), + this.cli.bqrsDecode(this.bqrsPath, "graphProperties", options), + ]); + + if (!this.isValidGraph(graphProperties)) { + throw new Error("AST is invalid"); + } + + const idToItem = new Map(); + const parentToChildren = new Map(); + const childToParent = new Map(); + const astOrder = new Map(); + const edgeLabels = new Map(); + const roots = []; + + // Build up the parent-child relationships + edgeTuples.tuples.forEach((tuple) => { + const [source, target, tupleType, value] = tuple as [ + BqrsEntityValue, + BqrsEntityValue, + string, + string, + ]; + const sourceId = source.id!; + const targetId = target.id!; + + switch (tupleType) { + case "semmle.order": + astOrder.set(targetId, Number(value)); + break; + + case "semmle.label": { + childToParent.set(targetId, sourceId); + let children = parentToChildren.get(sourceId); + if (!children) { + parentToChildren.set(sourceId, (children = [])); + } + children.push(targetId); + + // ignore values that indicate a numeric order. + if (!Number.isFinite(Number(value))) { + edgeLabels.set(targetId, value); + } + break; + } + + default: + // ignore other tupleTypes since they are not needed by the ast viewer + } + }); + + // populate parents and children + nodeTuples.tuples.forEach((tuple) => { + const [entity, tupleType, value] = tuple as [ + BqrsEntityValue, + string, + string, + ]; + const id = entity.id!; + + switch (tupleType) { + case "semmle.order": + astOrder.set(id, Number(value)); + break; + + case "semmle.label": { + // If an edge label exists, include it and separate from the node label using ':' + const nodeLabel = value ?? entity.label; + const edgeLabel = edgeLabels.get(id); + const label = [edgeLabel, nodeLabel].filter((e) => e).join(": "); + const item = { + id, + label, + location: entity.url ? mapUrlValue(entity.url) : undefined, + fileLocation: fileRangeFromURI(entity.url, this.db), + children: [] as ChildAstItem[], + order: Number.MAX_SAFE_INTEGER, + }; + + idToItem.set(id, item); + const parent = idToItem.get( + childToParent.has(id) ? childToParent.get(id)! : -1, + ); + + if (parent) { + const astItem = item as ChildAstItem; + astItem.parent = parent; + parent.children.push(astItem); + } + const children = parentToChildren.has(id) + ? parentToChildren.get(id)! + : []; + children.forEach((childId) => { + const child = idToItem.get(childId) as ChildAstItem | undefined; + if (child) { + child.parent = item; + item.children.push(child); + } + }); + break; + } + + default: + // ignore other tupleTypes since they are not needed by the ast viewer + } + }); + + // find the roots and add the order + for (const [, item] of idToItem) { + item.order = astOrder.has(item.id) + ? astOrder.get(item.id)! + : Number.MAX_SAFE_INTEGER; + + if (!("parent" in item)) { + roots.push(item); + } + } + return roots; + } + + private isValidGraph(graphProperties: DecodedBqrsChunk) { + const tuple = graphProperties?.tuples?.find( + (t) => t[0] === "semmle.graphKind", + ); + return tuple?.[1] === "tree"; + } +} diff --git a/extensions/ql-vscode/src/language-support/ast-viewer/ast-cfg-commands.ts b/extensions/ql-vscode/src/language-support/ast-viewer/ast-cfg-commands.ts new file mode 100644 index 00000000000..c6cf025832d --- /dev/null +++ b/extensions/ql-vscode/src/language-support/ast-viewer/ast-cfg-commands.ts @@ -0,0 +1,82 @@ +import type { Uri } from "vscode"; +import { window } from "vscode"; +import { withProgress } from "../../common/vscode/progress"; +import type { AstViewer } from "./ast-viewer"; +import type { AstCfgCommands } from "../../common/commands"; +import type { LocalQueries } from "../../local-queries"; +import { QuickEvalType } from "../../local-queries"; +import type { + TemplatePrintAstProvider, + TemplatePrintCfgProvider, +} from "../contextual/template-provider"; + +type AstCfgOptions = { + localQueries: LocalQueries; + astViewer: AstViewer; + astTemplateProvider: TemplatePrintAstProvider; + cfgTemplateProvider: TemplatePrintCfgProvider; +}; + +export function getAstCfgCommands({ + localQueries, + astViewer, + astTemplateProvider, + cfgTemplateProvider, +}: AstCfgOptions): AstCfgCommands { + const viewAst = async (selectedFile: Uri) => + withProgress( + async (progress, token) => { + const ast = await astTemplateProvider.provideAst( + progress, + token, + selectedFile ?? window.activeTextEditor?.document.uri, + ); + if (ast) { + astViewer.updateRoots(await ast.getRoots(), ast.db, ast.fileName); + } + }, + { + cancellable: true, + title: "Calculate AST", + }, + ); + + const viewCfg = async () => + withProgress( + async (progress, token) => { + const editor = window.activeTextEditor; + const res = !editor + ? undefined + : await cfgTemplateProvider.provideCfgUri( + editor.document, + editor.selection.active.line + 1, + editor.selection.active.character + 1, + ); + if (res) { + await localQueries.compileAndRunQuery( + QuickEvalType.None, + res[0], + progress, + token, + undefined, + false, + undefined, + res[1], + ); + } + }, + { + title: "Calculating Control Flow Graph", + cancellable: true, + }, + ); + + return { + "codeQL.viewAst": viewAst, + "codeQL.viewAstContextExplorer": viewAst, + "codeQL.viewAstContextEditor": viewAst, + "codeQL.viewCfg": viewCfg, + "codeQL.viewCfgContextExplorer": viewCfg, + "codeQL.viewCfgContextEditor": viewCfg, + }; +} diff --git a/extensions/ql-vscode/src/language-support/ast-viewer/ast-viewer.ts b/extensions/ql-vscode/src/language-support/ast-viewer/ast-viewer.ts new file mode 100644 index 00000000000..f186674c08e --- /dev/null +++ b/extensions/ql-vscode/src/language-support/ast-viewer/ast-viewer.ts @@ -0,0 +1,238 @@ +import type { + TreeDataProvider, + Event, + ProviderResult, + TreeView, + TextEditorSelectionChangeEvent, + Location, + Uri, +} from "vscode"; +import { + window, + EventEmitter, + TreeItemCollapsibleState, + TreeItem, + TextEditorSelectionChangeKind, + Range, +} from "vscode"; +import { basename } from "path"; + +import type { DatabaseItem } from "../../databases/local-databases"; +import type { BqrsId } from "../../common/bqrs-cli-types"; +import { showLocation } from "../../databases/local-databases/locations"; +import { DisposableObject } from "../../common/disposable-object"; +import { + asError, + assertNever, + getErrorMessage, +} from "../../common/helpers-pure"; +import { redactableError } from "../../common/errors"; +import type { AstViewerCommands } from "../../common/commands"; +import { extLogger } from "../../common/logging/vscode"; +import { showAndLogExceptionWithTelemetry } from "../../common/logging"; +import { telemetryListener } from "../../common/vscode/telemetry"; +import type { UrlValue } from "../../common/raw-result-types"; + +export interface AstItem { + id: BqrsId; + label?: string; + location?: UrlValue; + fileLocation?: Location; + children: ChildAstItem[]; + order: number; +} + +export interface ChildAstItem extends AstItem { + parent: ChildAstItem | AstItem; +} + +class AstViewerDataProvider + extends DisposableObject + implements TreeDataProvider +{ + public roots: AstItem[] = []; + public db: DatabaseItem | undefined; + + private _onDidChangeTreeData = this.push( + new EventEmitter(), + ); + readonly onDidChangeTreeData: Event = + this._onDidChangeTreeData.event; + + refresh(): void { + this._onDidChangeTreeData.fire(undefined); + } + getChildren(item?: AstItem): ProviderResult { + const children = item ? item.children : this.roots; + return children.sort((c1, c2) => c1.order - c2.order); + } + + getParent(item: ChildAstItem): ProviderResult { + return item.parent; + } + + getTreeItem(item: AstItem): TreeItem { + const line = this.extractLineInfo(item?.location); + + const state = item.children.length + ? TreeItemCollapsibleState.Collapsed + : TreeItemCollapsibleState.None; + const treeItem = new TreeItem(item.label || "", state); + treeItem.description = line ? `Line ${line}` : ""; + treeItem.id = String(item.id); + treeItem.tooltip = `${treeItem.description} ${typeof treeItem.label === "string" ? treeItem.label : (treeItem.label?.label ?? "")}`; + treeItem.command = { + command: "codeQLAstViewer.gotoCode", + title: "Go To Code", + tooltip: "Go To Code", + arguments: [item], + }; + return treeItem; + } + + private extractLineInfo(loc?: UrlValue) { + if (!loc) { + return; + } + + switch (loc.type) { + case "string": + return loc.value; + case "wholeFileLocation": + return loc.uri; + case "lineColumnLocation": + return loc.startLine; + default: + assertNever(loc); + } + } +} + +export class AstViewer extends DisposableObject { + private treeView: TreeView; + private treeDataProvider: AstViewerDataProvider; + private currentFileUri: Uri | undefined; + + constructor() { + super(); + + this.treeDataProvider = new AstViewerDataProvider(); + this.treeView = window.createTreeView("codeQLAstViewer", { + treeDataProvider: this.treeDataProvider, + showCollapseAll: true, + }); + + this.push(this.treeView); + this.push(this.treeDataProvider); + this.push( + window.onDidChangeTextEditorSelection(this.updateTreeSelection, this), + ); + } + + getCommands(): AstViewerCommands { + return { + "codeQLAstViewer.clear": async () => this.clear(), + "codeQLAstViewer.gotoCode": async (item: AstItem) => { + await showLocation(item.fileLocation); + }, + }; + } + + updateRoots(roots: AstItem[], db: DatabaseItem, fileUri: Uri) { + this.treeDataProvider.roots = roots; + this.treeDataProvider.db = db; + this.treeDataProvider.refresh(); + this.treeView.message = `AST for ${basename(fileUri.fsPath)}`; + this.currentFileUri = fileUri; + // Handle error on reveal. This could happen if + // the tree view is disposed during the reveal. + this.treeView.reveal(roots[0], { focus: false })?.then( + () => { + /**/ + }, + (error: unknown) => + showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(error), + )`Failed to reveal AST: ${getErrorMessage(error)}`, + ), + ); + } + + private updateTreeSelection(e: TextEditorSelectionChangeEvent) { + function isInside(selectedRange: Range, astRange?: Range): boolean { + return !!astRange?.contains(selectedRange); + } + + // Recursively iterate all children until we find the node with the smallest + // range that contains the selection. + // Some nodes do not have a location, but their children might, so must + // recurse though location-less AST nodes to see if children are correct. + function findBest( + selectedRange: Range, + items?: AstItem[], + ): AstItem | undefined { + if (!items || !items.length) { + return; + } + for (const item of items) { + let candidate: AstItem | undefined = undefined; + if (isInside(selectedRange, item.fileLocation?.range)) { + candidate = item; + } + // always iterate through children since the location of an AST node in code QL does not + // always cover the complete text of the node. + candidate = findBest(selectedRange, item.children) || candidate; + if (candidate) { + return candidate; + } + } + return; + } + + // Avoid recursive tree-source code updates. + if (e.kind === TextEditorSelectionChangeKind.Command) { + return; + } + + if ( + this.treeView.visible && + e.textEditor.document.uri.fsPath === this.currentFileUri?.fsPath && + e.selections.length === 1 + ) { + const selection = e.selections[0]; + const range = selection.anchor.isBefore(selection.active) + ? new Range(selection.anchor, selection.active) + : new Range(selection.active, selection.anchor); + + const targetItem = findBest(range, this.treeDataProvider.roots); + if (targetItem) { + // Handle error on reveal. This could happen if + // the tree view is disposed during the reveal. + this.treeView.reveal(targetItem)?.then( + () => { + /**/ + }, + (error: unknown) => + showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(error), + )`Failed to reveal AST: ${getErrorMessage(error)}`, + ), + ); + } + } + } + + private clear() { + this.treeDataProvider.roots = []; + this.treeDataProvider.db = undefined; + this.treeDataProvider.refresh(); + this.treeView.message = undefined; + this.currentFileUri = undefined; + } +} diff --git a/extensions/ql-vscode/src/language-support/contextual/cached-operation.ts b/extensions/ql-vscode/src/language-support/contextual/cached-operation.ts new file mode 100644 index 00000000000..3c6e845d740 --- /dev/null +++ b/extensions/ql-vscode/src/language-support/contextual/cached-operation.ts @@ -0,0 +1,86 @@ +import { asError } from "../../common/helpers-pure"; + +/** + * A cached mapping from strings to a value of type U. + */ +export class CachedOperation { + private readonly operation: (t: string, ...args: S) => Promise; + private readonly cached: Map; + private readonly lru: string[]; + private generation: number; + private readonly inProgressCallbacks: Map< + string, + Array<[(u: U) => void, (reason?: Error) => void]> + >; + + constructor( + operation: (t: string, ...args: S) => Promise, + private cacheSize = 100, + ) { + this.operation = operation; + this.generation = 0; + this.lru = []; + this.inProgressCallbacks = new Map< + string, + Array<[(u: U) => void, (reason?: Error) => void]> + >(); + this.cached = new Map(); + } + + async get(t: string, ...args: S): Promise { + // Try and retrieve from the cache + const fromCache = this.cached.get(t); + if (fromCache !== undefined) { + // Move to end of lru list + this.lru.push( + this.lru.splice( + this.lru.findIndex((v) => v === t), + 1, + )[0], + ); + return fromCache; + } + // Otherwise check if in progress + const inProgressCallback = this.inProgressCallbacks.get(t); + if (inProgressCallback !== undefined) { + // If so wait for it to resolve + return await new Promise((resolve, reject) => { + inProgressCallback.push([resolve, reject]); + }); + } + const origGeneration = this.generation; + // Otherwise compute the new value, but leave a callback to allow sharing work + const callbacks: Array<[(u: U) => void, (reason?: Error) => void]> = []; + this.inProgressCallbacks.set(t, callbacks); + try { + const result = await this.operation(t, ...args); + callbacks.forEach((f) => f[0](result)); + this.inProgressCallbacks.delete(t); + if (this.generation !== origGeneration) { + // Cache was reset in the meantime so don't trust this + // result enough to cache it. + return result; + } + if (this.lru.length > this.cacheSize) { + const toRemove = this.lru.shift()!; + this.cached.delete(toRemove); + } + this.lru.push(t); + this.cached.set(t, result); + return result; + } catch (e) { + // Rethrow error on all callbacks + callbacks.forEach((f) => f[1](asError(e))); + throw e; + } finally { + this.inProgressCallbacks.delete(t); + } + } + + reset() { + this.cached.clear(); + this.lru.length = 0; + this.generation++; + this.inProgressCallbacks.clear(); + } +} diff --git a/extensions/ql-vscode/src/language-support/contextual/file-range-from-uri.ts b/extensions/ql-vscode/src/language-support/contextual/file-range-from-uri.ts new file mode 100644 index 00000000000..5274dc32f28 --- /dev/null +++ b/extensions/ql-vscode/src/language-support/contextual/file-range-from-uri.ts @@ -0,0 +1,38 @@ +import { Location, Range } from "vscode"; + +import type { + BqrsLineColumnLocation, + BqrsUrlValue, +} from "../../common/bqrs-cli-types"; +import { isEmptyPath } from "../../common/bqrs-utils"; +import type { DatabaseItem } from "../../databases/local-databases"; + +export function fileRangeFromURI( + uri: BqrsUrlValue | undefined, + db: DatabaseItem, +): Location | undefined { + if (!uri || typeof uri === "string") { + return undefined; + } else if ("startOffset" in uri) { + return undefined; + } else { + const loc = uri as BqrsLineColumnLocation; + if (isEmptyPath(loc.uri)) { + return undefined; + } + const range = new Range( + Math.max(0, (loc.startLine || 0) - 1), + Math.max(0, (loc.startColumn || 0) - 1), + Math.max(0, (loc.endLine || 0) - 1), + Math.max(0, loc.endColumn || 0), + ); + try { + if (uri.uri.startsWith("file:")) { + return new Location(db.resolveSourceFile(uri.uri), range); + } + return undefined; + } catch { + return undefined; + } + } +} diff --git a/extensions/ql-vscode/src/language-support/contextual/key-type.ts b/extensions/ql-vscode/src/language-support/contextual/key-type.ts new file mode 100644 index 00000000000..244537ccaba --- /dev/null +++ b/extensions/ql-vscode/src/language-support/contextual/key-type.ts @@ -0,0 +1,43 @@ +export enum KeyType { + DefinitionQuery = "DefinitionQuery", + ReferenceQuery = "ReferenceQuery", + PrintAstQuery = "PrintAstQuery", + PrintCfgQuery = "PrintCfgQuery", +} + +export function tagOfKeyType(keyType: KeyType): string { + switch (keyType) { + case KeyType.DefinitionQuery: + return "ide-contextual-queries/local-definitions"; + case KeyType.ReferenceQuery: + return "ide-contextual-queries/local-references"; + case KeyType.PrintAstQuery: + return "ide-contextual-queries/print-ast"; + case KeyType.PrintCfgQuery: + return "ide-contextual-queries/print-cfg"; + } +} + +export function nameOfKeyType(keyType: KeyType): string { + switch (keyType) { + case KeyType.DefinitionQuery: + return "definitions"; + case KeyType.ReferenceQuery: + return "references"; + case KeyType.PrintAstQuery: + return "print AST"; + case KeyType.PrintCfgQuery: + return "print CFG"; + } +} + +export function kindOfKeyType(keyType: KeyType): string { + switch (keyType) { + case KeyType.DefinitionQuery: + case KeyType.ReferenceQuery: + return "definitions"; + case KeyType.PrintAstQuery: + case KeyType.PrintCfgQuery: + return "graph"; + } +} diff --git a/extensions/ql-vscode/src/language-support/contextual/location-finder.ts b/extensions/ql-vscode/src/language-support/contextual/location-finder.ts new file mode 100644 index 00000000000..0d3c25de93d --- /dev/null +++ b/extensions/ql-vscode/src/language-support/contextual/location-finder.ts @@ -0,0 +1,150 @@ +import { + decodeSourceArchiveUri, + encodeArchiveBasePath, +} from "../../common/vscode/archive-filesystem-provider"; +import type { + BqrsEntityValue, + BqrsResultSetSchema, +} from "../../common/bqrs-cli-types"; +import { BqrsColumnKindCode } from "../../common/bqrs-cli-types"; +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import type { + DatabaseItem, + DatabaseManager, +} from "../../databases/local-databases"; +import type { ProgressCallback } from "../../common/vscode/progress"; +import type { KeyType } from "./key-type"; +import { + resolveContextualQlPacksForDatabase, + resolveContextualQueries, + runContextualQuery, +} from "./query-resolver"; +import type { CancellationToken, LocationLink } from "vscode"; +import { Uri } from "vscode"; +import type { QueryRunner } from "../../query-server"; +import { QueryResultType } from "../../query-server/messages"; +import { fileRangeFromURI } from "./file-range-from-uri"; + +export const SELECT_QUERY_NAME = "#select"; +export const SELECTED_SOURCE_FILE = "selectedSourceFile"; +export const SELECTED_SOURCE_LINE = "selectedSourceLine"; +export const SELECTED_SOURCE_COLUMN = "selectedSourceColumn"; + +export interface FullLocationLink extends LocationLink { + originUri: Uri; +} + +/** + * This function executes a contextual query inside a given database, filters, and converts + * the results into source locations. This function is the workhorse for all search-based + * contextual queries like find references and find definitions. + * + * @param cli The cli server + * @param qs The query server client + * @param dbm The database manager + * @param uriString The selected source file and location + * @param keyType The contextual query type to run + * @param queryStorageDir The directory to store the query results + * @param progress A progress callback + * @param token A CancellationToken + * @param filter A function that will filter extraneous results + */ +export async function getLocationsForUriString( + cli: CodeQLCliServer, + qs: QueryRunner, + dbm: DatabaseManager, + uriString: string, + keyType: KeyType, + queryStorageDir: string, + progress: ProgressCallback, + token: CancellationToken, + filter: (src: string, dest: string) => boolean, +): Promise { + const uri = decodeSourceArchiveUri(Uri.parse(uriString, true)); + const sourceArchiveUri = encodeArchiveBasePath(uri.sourceArchiveZipPath); + + const db = dbm.findDatabaseItemBySourceArchive(sourceArchiveUri); + if (!db) { + return []; + } + + const qlpack = await resolveContextualQlPacksForDatabase(cli, db); + const templates = createTemplates(uri.pathWithinSourceArchive); + + const links: FullLocationLink[] = []; + for (const query of await resolveContextualQueries(cli, qlpack, keyType)) { + const results = await runContextualQuery( + query, + db, + queryStorageDir, + qs, + cli, + progress, + token, + templates, + ); + const queryResult = results.results.get(query); + if (queryResult?.resultType === QueryResultType.SUCCESS) { + links.push( + ...(await getLinksFromResults( + results.outputDir.getBqrsPath(queryResult.outputBaseName), + cli, + db, + filter, + )), + ); + } + } + return links; +} + +async function getLinksFromResults( + bqrsPath: string, + cli: CodeQLCliServer, + db: DatabaseItem, + filter: (srcFile: string, destFile: string) => boolean, +): Promise { + const localLinks: FullLocationLink[] = []; + const info = await cli.bqrsInfo(bqrsPath); + const selectInfo = info["result-sets"].find( + (schema) => schema.name === SELECT_QUERY_NAME, + ); + if (isValidSelect(selectInfo)) { + // TODO: Page this + const allTuples = await cli.bqrsDecode(bqrsPath, SELECT_QUERY_NAME); + for (const tuple of allTuples.tuples) { + const [src, dest] = tuple as [BqrsEntityValue, BqrsEntityValue]; + const srcFile = src.url && fileRangeFromURI(src.url, db); + const destFile = dest.url && fileRangeFromURI(dest.url, db); + if ( + srcFile && + destFile && + filter(srcFile.uri.toString(), destFile.uri.toString()) + ) { + localLinks.push({ + targetRange: destFile.range, + targetUri: destFile.uri, + originSelectionRange: srcFile.range, + originUri: srcFile.uri, + }); + } + } + } + return localLinks; +} + +function createTemplates(path: string): Record { + return { + [SELECTED_SOURCE_FILE]: path, + }; +} + +function isValidSelect(selectInfo: BqrsResultSetSchema | undefined) { + return ( + selectInfo && + selectInfo.columns.length === 3 && + selectInfo.columns[0].kind === BqrsColumnKindCode.ENTITY && + selectInfo.columns[1].kind === BqrsColumnKindCode.ENTITY && + selectInfo.columns[2].kind === BqrsColumnKindCode.STRING + ); +} diff --git a/extensions/ql-vscode/src/language-support/contextual/query-resolver.ts b/extensions/ql-vscode/src/language-support/contextual/query-resolver.ts new file mode 100644 index 00000000000..0fe2a08d1fc --- /dev/null +++ b/extensions/ql-vscode/src/language-support/contextual/query-resolver.ts @@ -0,0 +1,110 @@ +import { getOnDiskWorkspaceFolders } from "../../common/vscode/workspace-folders"; +import type { QlPacksForLanguage } from "../../databases/qlpack"; +import type { KeyType } from "./key-type"; +import { kindOfKeyType, nameOfKeyType, tagOfKeyType } from "./key-type"; +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import type { DatabaseItem } from "../../databases/local-databases"; +import { + qlpackOfDatabase, + resolveQueriesByLanguagePack as resolveLocalQueriesByLanguagePack, +} from "../../local-queries/query-resolver"; +import { extLogger } from "../../common/logging/vscode"; +import { TeeLogger } from "../../common/logging"; +import type { CancellationToken } from "vscode"; +import type { ProgressCallback } from "../../common/vscode/progress"; +import type { CoreCompletedQuery, QueryRunner } from "../../query-server"; +import { createLockFileForStandardQuery } from "../../local-queries/standard-queries"; +import { basename } from "path"; + +/** + * This wil try to determine the qlpacks for a given database. If it can't find a matching + * dbscheme with downloaded packs, it will download the default packs instead. + * + * @param cli The CLI server to use + * @param databaseItem The database item to find the qlpacks for + */ +export async function resolveContextualQlPacksForDatabase( + cli: CodeQLCliServer, + databaseItem: DatabaseItem, +): Promise { + try { + return await qlpackOfDatabase(cli, databaseItem); + } catch { + // If we can't find the qlpacks for the database, use the defaults instead + } + + const dbInfo = await cli.resolveDatabase(databaseItem.databaseUri.fsPath); + const primaryLanguage = dbInfo.languages?.[0]; + if (!primaryLanguage) { + throw new Error("Unable to determine primary language of database"); + } + + const libraryPack = `codeql/${primaryLanguage}-all`; + const queryPack = `codeql/${primaryLanguage}-queries`; + + await cli.packDownload([libraryPack, queryPack]); + + // Return the default packs. If these weren't valid packs, the download would have failed. + return { + dbschemePack: libraryPack, + dbschemePackIsLibraryPack: true, + queryPack, + }; +} + +export async function resolveContextualQueries( + cli: CodeQLCliServer, + qlpacks: QlPacksForLanguage, + keyType: KeyType, +): Promise { + return resolveLocalQueriesByLanguagePack( + cli, + qlpacks, + nameOfKeyType(keyType), + { + kind: kindOfKeyType(keyType), + "tags contain": [tagOfKeyType(keyType)], + }, + ); +} + +export async function runContextualQuery( + query: string, + db: DatabaseItem, + queryStorageDir: string, + qs: QueryRunner, + cli: CodeQLCliServer, + progress: ProgressCallback, + token: CancellationToken, + templates: Record, +): Promise { + const { cleanup } = await createLockFileForStandardQuery(cli, query); + const queryRun = qs.createQueryRun( + db.databaseUri.fsPath, + [ + { + queryPath: query, + outputBaseName: "results", + quickEvalPosition: undefined, + }, + ], + false, + getOnDiskWorkspaceFolders(), + undefined, + {}, + queryStorageDir, + basename(query), + templates, + ); + void extLogger.log( + `Running contextual query ${query}; results will be stored in ${queryRun.outputDir.querySaveDir}`, + ); + const teeLogger = new TeeLogger(qs.logger, queryRun.outputDir.logPath); + + try { + return await queryRun.evaluate(progress, token, teeLogger); + } finally { + await cleanup?.(); + teeLogger.dispose(); + } +} diff --git a/extensions/ql-vscode/src/language-support/contextual/template-provider.ts b/extensions/ql-vscode/src/language-support/contextual/template-provider.ts new file mode 100644 index 00000000000..8d9cf6327ec --- /dev/null +++ b/extensions/ql-vscode/src/language-support/contextual/template-provider.ts @@ -0,0 +1,371 @@ +import type { + CancellationToken, + DefinitionProvider, + Location, + LocationLink, + Position, + ReferenceContext, + ReferenceProvider, + TextDocument, +} from "vscode"; +import { Uri } from "vscode"; + +import { + decodeSourceArchiveUri, + encodeArchiveBasePath, + zipArchiveScheme, +} from "../../common/vscode/archive-filesystem-provider"; +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import type { DatabaseManager } from "../../databases/local-databases"; +import { CachedOperation } from "./cached-operation"; +import type { ProgressCallback } from "../../common/vscode/progress"; +import { withProgress } from "../../common/vscode/progress"; +import { KeyType } from "./key-type"; +import type { FullLocationLink } from "./location-finder"; +import { + getLocationsForUriString, + SELECTED_SOURCE_COLUMN, + SELECTED_SOURCE_FILE, + SELECTED_SOURCE_LINE, +} from "./location-finder"; +import { + resolveContextualQlPacksForDatabase, + resolveContextualQueries, + runContextualQuery, +} from "./query-resolver"; +import { + isCanary, + NO_CACHE_AST_VIEWER, + NO_CACHE_CONTEXTUAL_QUERIES, +} from "../../config"; +import type { CoreCompletedQuery, QueryRunner } from "../../query-server"; +import { AstBuilder } from "../ast-viewer/ast-builder"; +import { MultiCancellationToken } from "../../common/vscode/multi-cancellation-token"; + +/** + * Runs templated CodeQL queries to find definitions in + * source-language files. We may eventually want to find a way to + * generalize this to other custom queries, e.g. showing dataflow to + * or from a selected identifier. + */ + +export class TemplateQueryDefinitionProvider implements DefinitionProvider { + private cache: CachedOperation<[CancellationToken], LocationLink[]>; + + constructor( + private cli: CodeQLCliServer, + private qs: QueryRunner, + private dbm: DatabaseManager, + private queryStorageDir: string, + ) { + this.cache = new CachedOperation(this.getDefinitions.bind(this)); + } + + async provideDefinition( + document: TextDocument, + position: Position, + token: CancellationToken, + ): Promise { + const fileLinks = this.shouldUseCache() + ? await this.cache.get(document.uri.toString(), token) + : await this.getDefinitions(document.uri.toString(), token); + + const locLinks: LocationLink[] = []; + for (const link of fileLinks) { + if (link.originSelectionRange!.contains(position)) { + locLinks.push(link); + } + } + return locLinks; + } + + private shouldUseCache() { + return !(isCanary() && NO_CACHE_CONTEXTUAL_QUERIES.getValue()); + } + + private async getDefinitions( + uriString: string, + token: CancellationToken, + ): Promise { + // Do not create a multitoken here. There will be no popup and users cannot click on anything to cancel this operation. + // This is because finding definitions can be triggered by a hover, which should not have a popup. + return getLocationsForUriString( + this.cli, + this.qs, + this.dbm, + uriString, + KeyType.DefinitionQuery, + this.queryStorageDir, + () => {}, // noop + token, + (src, _dest) => src === uriString, + ); + } +} + +/** + * Runs templated CodeQL queries to find references in + * source-language files. We may eventually want to find a way to + * generalize this to other custom queries, e.g. showing dataflow to + * or from a selected identifier. + */ +export class TemplateQueryReferenceProvider implements ReferenceProvider { + private cache: CachedOperation<[CancellationToken], FullLocationLink[]>; + + constructor( + private cli: CodeQLCliServer, + private qs: QueryRunner, + private dbm: DatabaseManager, + private queryStorageDir: string, + ) { + this.cache = new CachedOperation(this.getReferences.bind(this)); + } + + async provideReferences( + document: TextDocument, + position: Position, + _context: ReferenceContext, + token: CancellationToken, + ): Promise { + const fileLinks = this.shouldUseCache() + ? await this.cache.get(document.uri.toString(), token) + : await this.getReferences(document.uri.toString(), token); + + const locLinks: Location[] = []; + for (const link of fileLinks) { + if (link.targetRange.contains(position)) { + locLinks.push({ + range: link.originSelectionRange!, + uri: link.originUri, + }); + } + } + return locLinks; + } + + private shouldUseCache() { + return !(isCanary() && NO_CACHE_CONTEXTUAL_QUERIES.getValue()); + } + + private async getReferences( + uriString: string, + token: CancellationToken, + ): Promise { + // Create a multitoken here. There will be a popup and users can click on it to cancel this operation. + return withProgress( + async (progress, tokenInner) => { + const multiToken = new MultiCancellationToken(token, tokenInner); + + return getLocationsForUriString( + this.cli, + this.qs, + this.dbm, + uriString, + KeyType.DefinitionQuery, + this.queryStorageDir, + progress, + multiToken, + (src, _dest) => src === uriString, + ); + }, + { + cancellable: true, + title: "Finding references", + }, + ); + } +} + +/** + * Run templated CodeQL queries to produce AST information for + * source-language files. + */ +export class TemplatePrintAstProvider { + private cache: CachedOperation< + [ProgressCallback, CancellationToken], + CoreCompletedQuery + >; + + constructor( + private cli: CodeQLCliServer, + private qs: QueryRunner, + private dbm: DatabaseManager, + private queryStorageDir: string, + ) { + this.cache = new CachedOperation(this.getAst.bind(this)); + } + + async provideAst( + progress: ProgressCallback, + token: CancellationToken, + fileUri?: Uri, + ): Promise { + if (!fileUri) { + throw new Error( + "Cannot view the AST. Please select a valid source file inside a CodeQL database.", + ); + } + const completedQuery = this.shouldUseCache() + ? await this.cache.get(fileUri.toString(), progress, token) + : await this.getAst(fileUri.toString(), progress, token); + + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but found ${queryResults.length}.`, + ); + } + return new AstBuilder( + completedQuery.outputDir.getBqrsPath(queryResults[0].outputBaseName), + this.cli, + this.dbm.findDatabaseItem(Uri.file(completedQuery.dbPath))!, + fileUri, + ); + } + + private shouldUseCache() { + return !(isCanary() && NO_CACHE_AST_VIEWER.getValue()); + } + + private async getAst( + uriString: string, + progress: ProgressCallback, + token: CancellationToken, + ): Promise { + const uri = Uri.parse(uriString, true); + if (uri.scheme !== zipArchiveScheme) { + throw new Error( + "Cannot view the AST. Please select a valid source file inside a CodeQL database.", + ); + } + + const zippedArchive = decodeSourceArchiveUri(uri); + const sourceArchiveUri = encodeArchiveBasePath( + zippedArchive.sourceArchiveZipPath, + ); + const db = this.dbm.findDatabaseItemBySourceArchive(sourceArchiveUri); + + if (!db) { + throw new Error("Can't infer database from the provided source."); + } + + const qlpacks = await resolveContextualQlPacksForDatabase(this.cli, db); + const queries = await resolveContextualQueries( + this.cli, + qlpacks, + KeyType.PrintAstQuery, + ); + if (queries.length > 1) { + throw new Error("Found multiple Print AST queries. Can't continue"); + } + if (queries.length === 0) { + throw new Error("Did not find any Print AST queries. Can't continue"); + } + + const query = queries[0]; + const templates: Record = { + [SELECTED_SOURCE_FILE]: zippedArchive.pathWithinSourceArchive, + }; + + const results = await runContextualQuery( + query, + db, + this.queryStorageDir, + this.qs, + this.cli, + progress, + token, + templates, + ); + return results; + } +} + +/** + * Run templated CodeQL queries to produce CFG information for + * source-language files. + */ +export class TemplatePrintCfgProvider { + private cache: CachedOperation< + [number, number], + [Uri, Record] + >; + + constructor( + private cli: CodeQLCliServer, + private dbm: DatabaseManager, + ) { + this.cache = new CachedOperation(this.getCfgUri.bind(this)); + } + + async provideCfgUri( + document: TextDocument, + line: number, + character: number, + ): Promise<[Uri, Record] | undefined> { + return this.shouldUseCache() + ? await this.cache.get( + `${document.uri.toString()}#${line}:${character}`, + line, + character, + ) + : await this.getCfgUri(document.uri.toString(), line, character); + } + + private shouldUseCache() { + return !(isCanary() && NO_CACHE_AST_VIEWER.getValue()); + } + + private async getCfgUri( + uriString: string, + line: number, + character: number, + ): Promise<[Uri, Record]> { + const uri = Uri.parse(uriString, true); + if (uri.scheme !== zipArchiveScheme) { + throw new Error( + "CFG Viewing is only available for databases with zipped source archives.", + ); + } + + const zippedArchive = decodeSourceArchiveUri(uri); + const sourceArchiveUri = encodeArchiveBasePath( + zippedArchive.sourceArchiveZipPath, + ); + const db = this.dbm.findDatabaseItemBySourceArchive(sourceArchiveUri); + + if (!db) { + throw new Error("Can't infer database from the provided source."); + } + + const qlpack = await resolveContextualQlPacksForDatabase(this.cli, db); + if (!qlpack) { + throw new Error("Can't infer qlpack from database source archive."); + } + const queries = await resolveContextualQueries( + this.cli, + qlpack, + KeyType.PrintCfgQuery, + ); + if (queries.length > 1) { + throw new Error( + `Found multiple Print CFG queries. Can't continue. Make sure there is exacly one query with the tag ${KeyType.PrintCfgQuery}`, + ); + } + if (queries.length === 0) { + throw new Error( + `Did not find any Print CFG queries. Can't continue. Make sure there is exacly one query with the tag ${KeyType.PrintCfgQuery}`, + ); + } + + const queryUri = Uri.file(queries[0]); + + const templates: Record = { + [SELECTED_SOURCE_FILE]: zippedArchive.pathWithinSourceArchive, + [SELECTED_SOURCE_LINE]: line.toString(), + [SELECTED_SOURCE_COLUMN]: character.toString(), + }; + + return [queryUri, templates]; + } +} diff --git a/extensions/ql-vscode/src/language-support/index.ts b/extensions/ql-vscode/src/language-support/index.ts new file mode 100644 index 00000000000..9b101343b95 --- /dev/null +++ b/extensions/ql-vscode/src/language-support/index.ts @@ -0,0 +1,10 @@ +export * from "./ast-viewer/ast-builder"; +export * from "./ast-viewer/ast-viewer"; +export * from "./contextual/file-range-from-uri"; +export * from "./contextual/key-type"; +export * from "./contextual/location-finder"; +export * from "./contextual/query-resolver"; +export * from "./contextual/template-provider"; +export * from "./language-client"; +export * from "./language-support"; +export * from "./query-editor"; diff --git a/extensions/ql-vscode/src/language-support/language-client.ts b/extensions/ql-vscode/src/language-support/language-client.ts new file mode 100644 index 00000000000..df060c21944 --- /dev/null +++ b/extensions/ql-vscode/src/language-support/language-client.ts @@ -0,0 +1,99 @@ +import type { TextEditor } from "vscode"; +import { ProgressLocation, window } from "vscode"; +import type { StreamInfo } from "vscode-languageclient/node"; +import { LanguageClient, NotificationType } from "vscode-languageclient/node"; +import { shouldDebugLanguageServer, spawnServer } from "../codeql-cli/cli"; +import type { QueryServerConfig } from "../config"; +import { languageServerLogger } from "../common/logging/vscode"; + +/** + * Managing the language client and corresponding server process for CodeQL. + */ + +/** + * Create a new CodeQL language client connected to a language server. + */ +export function createLanguageClient( + config: QueryServerConfig, +): CodeQLLanguageClient { + return new CodeQLLanguageClient(config); +} + +/** + * CodeQL language client. + */ +export class CodeQLLanguageClient extends LanguageClient { + constructor(config: QueryServerConfig) { + super( + "codeQL.lsp", + "CodeQL Language Server", + () => spawnLanguageServer(config), + { + documentSelector: [ + { language: "ql", scheme: "file" }, + { language: "yaml", scheme: "file", pattern: "**/qlpack.yml" }, + { language: "yaml", scheme: "file", pattern: "**/codeql-pack.yml" }, + ], + synchronize: { + configurationSection: "codeQL", + }, + // Ensure that language server exceptions are logged to the same channel as its output. + outputChannel: languageServerLogger.outputChannel, + }, + true, + ); + } + + notifyVisibilityChange(editors: readonly TextEditor[]) { + // Only send notification if the language client is running to avoid race conditions + if (!this.isRunning()) { + return; + } + const files = editors + .filter((e) => e.document.uri.scheme === "file") + .map((e) => e.document.uri.toString()); + void this.sendNotification(didChangeVisibileFiles, { + visibleFiles: files, + }); + } +} + +/** Starts a new CodeQL language server process, sending progress messages to the status bar. */ +async function spawnLanguageServer( + config: QueryServerConfig, +): Promise { + return window.withProgress( + { title: "CodeQL language server", location: ProgressLocation.Window }, + async (progressReporter, _) => { + const args = ["--check-errors", "ON_CHANGE"]; + if (shouldDebugLanguageServer()) { + args.push( + "-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=n,quiet=y", + ); + } + const child = spawnServer( + config.codeQlPath, + "CodeQL language server", + ["execute", "language-server"], + args, + languageServerLogger, + (data) => + languageServerLogger.log(data.toString(), { trailingNewline: false }), + (data) => + languageServerLogger.log(data.toString(), { trailingNewline: false }), + progressReporter, + ); + return { writer: child.stdin, reader: child.stdout }; + }, + ); +} + +/** + * Custom notification type for when the set of visible files changes. + */ +interface DidChangeVisibileFilesParams { + visibleFiles: string[]; +} + +const didChangeVisibileFiles: NotificationType = + new NotificationType("textDocument/codeQLDidChangeVisibleFiles"); diff --git a/extensions/ql-vscode/src/language-support/language-support.ts b/extensions/ql-vscode/src/language-support/language-support.ts new file mode 100644 index 00000000000..bded793fdf6 --- /dev/null +++ b/extensions/ql-vscode/src/language-support/language-support.ts @@ -0,0 +1,59 @@ +import type { OnEnterRule } from "vscode"; +import { languages, IndentAction } from "vscode"; + +/** + * OnEnterRules are available in language-configurations, but you cannot specify them in the language-configuration.json. + * They can only be specified programmatically. + * + * Also, we should keep the language-configuration.json as a json file and register it in the package.json because + * it is registered first, before the extension is activated, so language features are available quicker. + * + * See https://github.com/microsoft/vscode/issues/11514 + * See https://github.com/microsoft/vscode/blob/master/src/vs/editor/test/common/modes/supports/javascriptOnEnterRules.ts + */ +export function install() { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const langConfig = require("../../language-configuration.json"); + // setLanguageConfiguration requires a regexp for the wordpattern, not a string + langConfig.wordPattern = new RegExp(langConfig.wordPattern); + langConfig.onEnterRules = onEnterRules; + langConfig.indentationRules = { + decreaseIndentPattern: /^((?!.*?\/\*).*\*\/)?\s*[}\]].*$/, + increaseIndentPattern: /^((?!\/\/).)*(\{[^}"'`]*|\([^)"'`]*|\[[^\]"'`]*)$/, + }; + delete langConfig.autoClosingPairs; + + languages.setLanguageConfiguration("ql", langConfig); + languages.setLanguageConfiguration("qll", langConfig); + languages.setLanguageConfiguration("dbscheme", langConfig); +} + +const onEnterRules: OnEnterRule[] = [ + { + // e.g. /** | */ + beforeText: /^\s*\/\*\*(?!\/)([^*]|\*(?!\/))*$/, + afterText: /^\s*\*\/$/, + action: { indentAction: IndentAction.IndentOutdent, appendText: " * " }, + }, + { + // e.g. /** ...| + beforeText: /^\s*\/\*\*(?!\/)([^*]|\*(?!\/))*$/, + action: { indentAction: IndentAction.None, appendText: " * " }, + }, + { + // e.g. * ...| + beforeText: /^(\t|[ ])*[ ]\*([ ]([^*]|\*(?!\/))*)?$/, + // oneLineAboveText: /^(\s*(\/\*\*|\*)).*/, + action: { indentAction: IndentAction.None, appendText: "* " }, + }, + { + // e.g. */| + beforeText: /^(\t|[ ])*[ ]\*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 }, + }, + { + // e.g. *-----*/| + beforeText: /^(\t|[ ])*[ ]\*[^/]*\*\/\s*$/, + action: { indentAction: IndentAction.None, removeText: 1 }, + }, +]; diff --git a/extensions/ql-vscode/src/language-support/query-editor.ts b/extensions/ql-vscode/src/language-support/query-editor.ts new file mode 100644 index 00000000000..a7567e1f1be --- /dev/null +++ b/extensions/ql-vscode/src/language-support/query-editor.ts @@ -0,0 +1,122 @@ +import { Uri, ViewColumn, window } from "vscode"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { QueryRunner } from "../query-server"; +import { basename, join } from "path"; +import { getErrorMessage } from "../common/helpers-pure"; +import { redactableError } from "../common/errors"; +import type { + AppCommandManager, + QueryEditorCommands, +} from "../common/commands"; +import { extLogger } from "../common/logging/vscode"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import { telemetryListener } from "../common/vscode/telemetry"; + +type QueryEditorOptions = { + commandManager: AppCommandManager; + + queryRunner: QueryRunner; + cliServer: CodeQLCliServer; + + qhelpTmpDir: string; +}; + +export function getQueryEditorCommands({ + commandManager, + queryRunner, + cliServer, + qhelpTmpDir, +}: QueryEditorOptions): QueryEditorCommands { + const openReferencedFileCommand = async (selectedQuery: Uri) => + await openReferencedFile(queryRunner, cliServer, selectedQuery); + + return { + "codeQL.openReferencedFile": openReferencedFileCommand, + // Since we are tracking extension usage through commands, this command mirrors the "codeQL.openReferencedFile" command + "codeQL.openReferencedFileContextEditor": openReferencedFileCommand, + // Since we are tracking extension usage through commands, this command mirrors the "codeQL.openReferencedFile" command + "codeQL.openReferencedFileContextExplorer": openReferencedFileCommand, + "codeQL.previewQueryHelp": async (selectedQuery: Uri) => + await previewQueryHelp( + commandManager, + cliServer, + qhelpTmpDir, + selectedQuery, + ), + "codeQL.previewQueryHelpContextEditor": async (selectedQuery: Uri) => + await previewQueryHelp( + commandManager, + cliServer, + qhelpTmpDir, + selectedQuery, + ), + "codeQL.previewQueryHelpContextExplorer": async (selectedQuery: Uri) => + await previewQueryHelp( + commandManager, + cliServer, + qhelpTmpDir, + selectedQuery, + ), + }; +} + +async function previewQueryHelp( + commandManager: AppCommandManager, + cliServer: CodeQLCliServer, + qhelpTmpDir: string, + selectedQuery: Uri, +): Promise { + // selectedQuery is unpopulated when executing through the command palette + const pathToQhelp = selectedQuery + ? selectedQuery.fsPath + : window.activeTextEditor?.document.uri.fsPath; + if (pathToQhelp) { + // Create temporary directory + const relativePathToMd = `${basename(pathToQhelp, ".qhelp")}.md`; + const absolutePathToMd = join(qhelpTmpDir, relativePathToMd); + const uri = Uri.file(absolutePathToMd); + try { + await cliServer.generateQueryHelp(pathToQhelp, absolutePathToMd); + // Open and then close the raw markdown file first. This ensures that the preview + // is refreshed when we open it in the next step. + // This will mean that the users will see a the raw markdown file for a brief moment, + // but this is the best we can do for now to ensure that the preview is refreshed. + await window.showTextDocument(uri, { + viewColumn: ViewColumn.Active, + }); + await commandManager.execute("workbench.action.closeActiveEditor"); + + // Now open the preview + await commandManager.execute("markdown.showPreviewToSide", uri); + } catch (e) { + const errorMessage = getErrorMessage(e).includes( + "Generating qhelp in markdown", + ) + ? redactableError`Could not generate markdown from ${pathToQhelp}: Bad formatting in .qhelp file.` + : redactableError`Could not open a preview of the generated file (${absolutePathToMd}).`; + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + errorMessage, + { + fullMessage: `${errorMessage.fullMessage}\n${getErrorMessage(e)}`, + }, + ); + } + } +} + +async function openReferencedFile( + qs: QueryRunner, + cliServer: CodeQLCliServer, + selectedQuery: Uri, +): Promise { + // If no file is selected, the path of the file in the editor is selected + const path = + selectedQuery?.fsPath || window.activeTextEditor?.document.uri.fsPath; + if (qs !== undefined && path) { + const resolved = await cliServer.resolveQlref(path); + const uri = Uri.file(resolved.resolvedPath); + await window.showTextDocument(uri, { preview: false }); + } +} diff --git a/extensions/ql-vscode/src/languageSupport.ts b/extensions/ql-vscode/src/languageSupport.ts deleted file mode 100644 index 47bc984f690..00000000000 --- a/extensions/ql-vscode/src/languageSupport.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { languages, IndentAction, OnEnterRule } from 'vscode'; - -/** - * OnEnterRules are available in language-configurations, but you cannot specify them in the language-configuration.json. - * They can only be specified programmatically. - * - * Also, we should keep the language-configuration.json as a json file and register it in the package.json because - * it is registered first, before the extension is activated, so language features are available quicker. - * - * See https://github.com/microsoft/vscode/issues/11514 - * See https://github.com/microsoft/vscode/blob/master/src/vs/editor/test/common/modes/supports/javascriptOnEnterRules.ts - */ -export function install() { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const langConfig = require('../language-configuration.json'); - // setLanguageConfiguration requires a regexp for the wordpattern, not a string - langConfig.wordPattern = new RegExp(langConfig.wordPattern); - langConfig.onEnterRules = onEnterRules; - langConfig.indentationRules = { - decreaseIndentPattern: /^((?!.*?\/\*).*\*\/)?\s*[\}\]].*$/, - increaseIndentPattern: /^((?!\/\/).)*(\{[^}"'`]*|\([^)"'`]*|\[[^\]"'`]*)$/ - }; - - languages.setLanguageConfiguration('ql', langConfig); - languages.setLanguageConfiguration('qll', langConfig); - languages.setLanguageConfiguration('dbscheme', langConfig); -} - -const onEnterRules: OnEnterRule[] = [ - { - // e.g. /** | */ - beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, - afterText: /^\s*\*\/$/, - action: { indentAction: IndentAction.IndentOutdent, appendText: ' * ' }, - }, - { - // e.g. /** ...| - beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/, - action: { indentAction: IndentAction.None, appendText: ' * ' }, - }, - { - // e.g. * ...| - beforeText: /^(\t|[ ])*[ ]\*([ ]([^\*]|\*(?!\/))*)?$/, - // oneLineAboveText: /^(\s*(\/\*\*|\*)).*/, - action: { indentAction: IndentAction.None, appendText: '* ' }, - }, - { - // e.g. */| - beforeText: /^(\t|[ ])*[ ]\*\/\s*$/, - action: { indentAction: IndentAction.None, removeText: 1 }, - }, - { - // e.g. *-----*/| - beforeText: /^(\t|[ ])*[ ]\*[^/]*\*\/\s*$/, - action: { indentAction: IndentAction.None, removeText: 1 }, - }, -]; diff --git a/extensions/ql-vscode/src/local-queries/index.ts b/extensions/ql-vscode/src/local-queries/index.ts new file mode 100644 index 00000000000..8b9c447c88a --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/index.ts @@ -0,0 +1,8 @@ +export * from "./local-queries"; +export * from "./local-query-run"; +export * from "./query-constraints"; +export * from "./query-resolver"; +export * from "./quick-eval-code-lens-provider"; +export * from "./quick-query"; +export * from "./results-view"; +export { WebviewReveal } from "./webview"; diff --git a/extensions/ql-vscode/src/local-queries/local-queries.ts b/extensions/ql-vscode/src/local-queries/local-queries.ts new file mode 100644 index 00000000000..428cead420a --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/local-queries.ts @@ -0,0 +1,791 @@ +import type { + ProgressCallback, + ProgressUpdate, +} from "../common/vscode/progress"; +import { + UserCancellationException, + withProgress, +} from "../common/vscode/progress"; +import type { CancellationToken, Range, TabInputText } from "vscode"; +import { CancellationTokenSource, Uri, window } from "vscode"; +import { + TeeLogger, + showAndLogErrorMessage, + showAndLogWarningMessage, +} from "../common/logging"; +import { MAX_QUERIES } from "../config"; +import { gatherQlFiles } from "../common/files"; +import { basename } from "path"; +import { showBinaryChoiceDialog } from "../common/vscode/dialog"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { displayQuickQuery } from "./quick-query"; +import type { + CoreCompletedQuery, + CoreQueryTarget, + QueryRunner, +} from "../query-server"; +import type { QueryHistoryManager } from "../query-history/query-history-manager"; +import type { + DatabaseQuickPickItem, + DatabaseUI, +} from "../databases/local-databases-ui"; +import type { ResultsView } from "./results-view"; +import type { + DatabaseItem, + DatabaseManager, +} from "../databases/local-databases"; +import type { SelectedQuery } from "../run-queries-shared"; +import type { QueryOutputDir } from "./query-output-dir"; +import { + createInitialQueryInfo, + createTimestampFile, + getQuickEvalContext, + saveBeforeStart, + validateQuerySuiteUri, + validateQueryUri, +} from "../run-queries-shared"; +import type { CompletedLocalQueryInfo } from "../query-results"; +import { LocalQueryInfo } from "../query-results"; +import type { WebviewReveal } from "./webview"; +import { asError, getErrorMessage } from "../common/helpers-pure"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { LocalQueryCommands } from "../common/commands"; +import { DisposableObject } from "../common/disposable-object"; +import { SkeletonQueryWizard } from "./skeleton-query-wizard"; +import { LocalQueryRun } from "./local-query-run"; +import { createMultiSelectionCommand } from "../common/vscode/selection-commands"; +import { findLanguage } from "../codeql-cli/query-language"; +import type { QueryTreeViewItem } from "../queries-panel/query-tree-view-item"; +import type { QueryLanguage } from "../common/query-language"; +import { tryGetQueryLanguage } from "../common/query-language"; +import type { LanguageContextStore } from "../language-context-store"; +import type { ExtensionApp } from "../common/vscode/extension-app"; +import type { DatabaseFetcher } from "../databases/database-fetcher"; + +export enum QuickEvalType { + None, + QuickEval, + QuickEvalCount, +} + +export class LocalQueries extends DisposableObject { + private selectedQueryTreeViewItems: readonly QueryTreeViewItem[] = []; + + public constructor( + private readonly app: ExtensionApp, + private readonly queryRunner: QueryRunner, + private readonly getQueryRunnerForWarmingOverlayBaseCache: () => Promise, + private readonly queryHistoryManager: QueryHistoryManager, + private readonly databaseManager: DatabaseManager, + private readonly databaseFetcher: DatabaseFetcher, + private readonly cliServer: CodeQLCliServer, + private readonly databaseUI: DatabaseUI, + private readonly localQueryResultsView: ResultsView, + private readonly queryStorageDir: string, + private readonly languageContextStore: LanguageContextStore, + ) { + super(); + } + + public setSelectedQueryTreeViewItems( + selection: readonly QueryTreeViewItem[], + ) { + this.selectedQueryTreeViewItems = selection; + } + + public getCommands(): LocalQueryCommands { + return { + "codeQL.runQuery": this.runQuery.bind(this), + "codeQL.runWarmOverlayBaseCacheForQuery": + this.runWarmOverlayBaseCacheForQuery.bind(this), + "codeQL.runQueryContextEditor": this.runQuery.bind(this), + "codeQL.runWarmOverlayBaseCacheForQueryContextEditor": + this.runWarmOverlayBaseCacheForQuery.bind(this), + "codeQL.runQueryOnMultipleDatabases": + this.runQueryOnMultipleDatabases.bind(this), + "codeQL.runQueryOnMultipleDatabasesContextEditor": + this.runQueryOnMultipleDatabases.bind(this), + "codeQLQueries.runLocalQueryFromQueriesPanel": + this.runQueryFromQueriesPanel.bind(this), + "codeQLQueries.runLocalQueryContextMenu": + this.runQueryFromQueriesPanel.bind(this), + "codeQLQueries.runLocalQueriesContextMenu": + this.runQueriesFromQueriesPanel.bind(this), + "codeQLQueries.runLocalQueriesFromPanel": + this.runQueriesFromQueriesPanel.bind(this), + "codeQLQueries.createQuery": this.createSkeletonQuery.bind(this), + "codeQL.runLocalQueryFromFileTab": this.runQuery.bind(this), + "codeQL.runQueries": createMultiSelectionCommand( + this.runQueries.bind(this), + ), + "codeQL.runWarmOverlayBaseCacheForQueries": createMultiSelectionCommand( + this.runWarmOverlayBaseCacheForQueries.bind(this), + ), + "codeQL.runQuerySuite": this.runQuerySuite.bind(this), + "codeQL.runWarmOverlayBaseCacheForQuerySuite": + this.runWarmOverlayBaseCacheForQuerySuite.bind(this), + "codeQL.quickEval": this.quickEval.bind(this), + "codeQL.quickEvalCount": this.quickEvalCount.bind(this), + "codeQL.quickEvalContextEditor": this.quickEval.bind(this), + "codeQL.codeLensQuickEval": this.codeLensQuickEval.bind(this), + "codeQL.quickQuery": this.quickQuery.bind(this), + "codeQL.getCurrentQuery": () => { + // When invoked as a command, such as when resolving variables in a debug configuration, + // always allow ".qll" files, because we don't know if the configuration will be for + // quickeval yet. The debug configuration code will do further validation once it knows for + // sure. + return this.getCurrentQuery(true); + }, + "codeQL.createQuery": this.createSkeletonQuery.bind(this), + "codeQLQuickQuery.createQuery": this.createSkeletonQuery.bind(this), + }; + } + + private async runQueryFromQueriesPanel( + queryTreeViewItem: QueryTreeViewItem, + ): Promise { + if (queryTreeViewItem.path !== undefined) { + await this.runQuery(Uri.file(queryTreeViewItem.path)); + } + } + + private async runQueriesFromQueriesPanel( + queryTreeViewItem: QueryTreeViewItem, + ): Promise { + const uris = []; + for (const child of queryTreeViewItem.children) { + if (child.path !== undefined) { + uris.push(Uri.file(child.path)); + } + } + await this.runQueries(uris); + } + + private async runQuery(uri: Uri | undefined): Promise { + await this.runQueryInternal(uri, false); + } + private async runWarmOverlayBaseCacheForQuery( + uri: Uri | undefined, + ): Promise { + const queryRunner = await this.getQueryRunnerForWarmingOverlayBaseCache(); + await this.databaseManager.runWithDatabaseInSeparateQueryRunner( + queryRunner, + () => this.runQueryInternal(uri, true), + ); + } + + private async runQueryInternal( + uri: Uri | undefined, + warmOverlayBaseCache: boolean, + ): Promise { + await withProgress( + async (progress, token) => { + await this.compileAndRunQuery( + QuickEvalType.None, + uri, + progress, + token, + undefined, + warmOverlayBaseCache, + ); + }, + { + title: warmOverlayBaseCache + ? "Warm overlay-base cache for query" + : "Running query", + cancellable: true, + }, + ); + } + + private async runQueryOnMultipleDatabases( + uri: Uri | undefined, + ): Promise { + await withProgress( + async (progress, token) => + await this.compileAndRunQueryOnMultipleDatabases(progress, token, uri), + { + title: "Running query on selected databases", + cancellable: true, + }, + ); + } + + private async runQueries(fileURIs: Uri[]): Promise { + await this.runQueriesInternal(fileURIs, false); + } + + private async runWarmOverlayBaseCacheForQueries( + fileURIs: Uri[], + ): Promise { + const queryRunner = await this.getQueryRunnerForWarmingOverlayBaseCache(); + await this.databaseManager.runWithDatabaseInSeparateQueryRunner( + queryRunner, + () => this.runQueriesInternal(fileURIs, true), + ); + } + + private async runQueriesInternal( + fileURIs: Uri[], + warmOverlayBaseCache: boolean, + ): Promise { + await withProgress( + async (progress, token) => { + const maxQueryCount = MAX_QUERIES.getValue(); + const [files, dirFound] = await gatherQlFiles( + fileURIs.map((uri) => uri.fsPath), + ); + if (files.length > maxQueryCount) { + throw new Error( + `You tried to run ${files.length} queries, but the maximum is ${maxQueryCount}. Try selecting fewer queries or changing the 'codeQL.runningQueries.maxQueries' setting.`, + ); + } + // warn user and display selected files when a directory is selected because some ql + // files may be hidden from the user. + if (dirFound) { + const fileString = files.map((file) => basename(file)).join(", "); + const res = await showBinaryChoiceDialog( + `You are about to run ${files.length} queries: ${fileString} Do you want to continue?`, + ); + if (!res) { + return; + } + } + const queryUris = files.map((path) => Uri.parse(`file:${path}`, true)); + + // Use a wrapped progress so that messages appear with the queries remaining in it. + let queriesRemaining = queryUris.length; + + function wrappedProgress(update: ProgressUpdate) { + const message = + queriesRemaining > 1 + ? `${queriesRemaining} remaining. ${update.message}` + : update.message; + progress({ + ...update, + message, + }); + } + + wrappedProgress({ + maxStep: queryUris.length, + step: queryUris.length - queriesRemaining, + message: "", + }); + + await Promise.all( + queryUris.map(async (uri) => + this.compileAndRunQuery( + QuickEvalType.None, + uri, + wrappedProgress, + token, + undefined, + warmOverlayBaseCache, + ).then(() => queriesRemaining--), + ), + ); + }, + { + title: warmOverlayBaseCache + ? "Warm overlay-base cache for queries" + : "Running queries", + cancellable: true, + }, + ); + } + + private async runQuerySuite(fileUri: Uri): Promise { + await this.runQuerySuiteInternal(fileUri, false); + } + + private async runWarmOverlayBaseCacheForQuerySuite( + fileUri: Uri, + ): Promise { + const queryRunner = await this.getQueryRunnerForWarmingOverlayBaseCache(); + await this.databaseManager.runWithDatabaseInSeparateQueryRunner( + queryRunner, + () => this.runQuerySuiteInternal(fileUri, true), + ); + } + + private async runQuerySuiteInternal( + fileUri: Uri, + warmOverlayBaseCache: boolean, + ): Promise { + await withProgress( + async (progress, token) => { + const suitePath = validateQuerySuiteUri(fileUri); + const databaseItem = await this.databaseUI.getDatabaseItem(progress); + if (databaseItem === undefined) { + throw new Error("Can't run query suite without a selected database"); + } + const selectedQuery: SelectedQuery = { + queryPath: suitePath, + }; + const additionalPacks = getOnDiskWorkspaceFolders(); + const extensionPacks = + await this.getDefaultExtensionPacks(additionalPacks); + const queries = await this.cliServer.resolveQueriesInSuite( + suitePath, + additionalPacks, + ); + if ( + !(await showBinaryChoiceDialog( + `You are about to run ${basename(suitePath)}, which contains ${queries.length} queries. Do you want to continue?`, + )) + ) { + return; + } + const queryTargets: CoreQueryTarget[] = []; + queries.forEach((query, index) => { + queryTargets.push({ + queryPath: query, + outputBaseName: `${index.toString().padStart(3, "0")}-${basename(query)}`, + quickEvalPosition: undefined, + quickEvalCountOnly: false, + }); + }); + const queryRunner = warmOverlayBaseCache + ? await this.getQueryRunnerForWarmingOverlayBaseCache() + : this.queryRunner; + const coreQueryRun = queryRunner.createQueryRun( + databaseItem.databaseUri.fsPath, + queryTargets, + true, + additionalPacks, + extensionPacks, + {}, + this.queryStorageDir, + basename(suitePath), + undefined, + ); + // handle cancellation from the history view. + const source = new CancellationTokenSource(); + try { + token.onCancellationRequested(() => source.cancel()); + + const localQueryRun = await this.createLocalQueryRun( + selectedQuery, + databaseItem, + coreQueryRun.outputDir, + source, + warmOverlayBaseCache, + ); + + try { + const results = await coreQueryRun.evaluate( + progress, + source.token, + localQueryRun.logger, + ); + + await localQueryRun.complete( + results, + progress, + warmOverlayBaseCache, + ); + + return results; + } catch (e) { + const err = asError(e); + await localQueryRun.fail(err); + + if (token.isCancellationRequested) { + throw new UserCancellationException(err.message, true); + } else { + throw e; + } + } + } finally { + source.dispose(); + } + }, + { + title: warmOverlayBaseCache + ? "Warm overlay-base cache for query suite" + : "Running query suite", + cancellable: true, + }, + ); + } + + private async quickEval(uri: Uri): Promise { + await withProgress( + async (progress, token) => { + await this.compileAndRunQuery( + QuickEvalType.QuickEval, + uri, + progress, + token, + undefined, + ); + }, + { + title: "Running query", + cancellable: true, + }, + ); + } + + private async quickEvalCount(uri: Uri): Promise { + await withProgress( + async (progress, token) => { + await this.compileAndRunQuery( + QuickEvalType.QuickEvalCount, + uri, + progress, + token, + undefined, + ); + }, + { + title: "Running query", + cancellable: true, + }, + ); + } + + private async codeLensQuickEval(uri: Uri, range: Range): Promise { + await withProgress( + async (progress, token) => + await this.compileAndRunQuery( + QuickEvalType.QuickEval, + uri, + progress, + token, + undefined, + false, + range, + ), + { + title: "Running query", + cancellable: true, + }, + ); + } + + private async quickQuery(): Promise { + await withProgress( + async (progress) => + displayQuickQuery(this.app, this.cliServer, this.databaseUI, progress), + { + title: "Run Quick Query", + }, + ); + } + + /** + * Gets the current active query. This is the query that is open in the active tab. + */ + public async getCurrentQuery(allowLibraryFiles: boolean): Promise { + const input = window.tabGroups.activeTabGroup.activeTab?.input; + + if (input === undefined || !isTabInputText(input)) { + throw new Error( + "No query was selected. Please select a query and try again.", + ); + } + + return validateQueryUri(input.uri, allowLibraryFiles); + } + + private async createSkeletonQuery(): Promise { + await withProgress( + async (progress: ProgressCallback) => { + const language = this.languageContextStore.selectedLanguage; + const skeletonQueryWizard = new SkeletonQueryWizard( + this.cliServer, + progress, + this.app, + this.databaseManager, + this.databaseFetcher, + this.selectedQueryTreeViewItems, + language, + ); + await skeletonQueryWizard.execute(); + }, + { + title: "Create Query", + }, + ); + } + + /** + * Creates a new `LocalQueryRun` object to track a query evaluation. This creates a timestamp + * file in the query's output directory, creates a `LocalQueryInfo` object, and registers that + * object with the query history manager. + * + * Once the evaluation is complete, the client must call `complete()` on the `LocalQueryRun` + * object to update the UI based on the results of the query. + */ + public async createLocalQueryRun( + selectedQuery: SelectedQuery, + dbItem: DatabaseItem, + outputDir: QueryOutputDir, + tokenSource: CancellationTokenSource, + warmOverlayBaseCache: boolean = false, + ): Promise { + await createTimestampFile(outputDir.querySaveDir); + + const queryRunner = warmOverlayBaseCache + ? await this.getQueryRunnerForWarmingOverlayBaseCache() + : this.queryRunner; + + if (queryRunner.customLogDirectory) { + void showAndLogWarningMessage( + this.app.logger, + `Custom log directories are no longer supported. The "codeQL.runningQueries.customLogDirectory" setting is deprecated. Unset the setting to stop seeing this message. Query logs saved to ${outputDir.logPath}`, + ); + } + + const initialInfo = await createInitialQueryInfo( + selectedQuery, + { + databaseUri: dbItem.databaseUri.toString(), + name: dbItem.name, + language: tryGetQueryLanguage(dbItem.language), + }, + outputDir, + ); + + // When cancellation is requested from the query history view, we just stop the debug session. + const queryInfo = new LocalQueryInfo(initialInfo, tokenSource); + this.queryHistoryManager.addQuery(queryInfo); + + const logger = new TeeLogger(queryRunner.logger, outputDir.logPath); + return new LocalQueryRun( + outputDir, + this, + queryInfo, + dbItem, + logger, + this.queryHistoryManager, + this.cliServer, + ); + } + + public async compileAndRunQuery( + quickEval: QuickEvalType, + queryUri: Uri | undefined, + progress: ProgressCallback, + token: CancellationToken, + databaseItem: DatabaseItem | undefined, + warmOverlayBaseCache: boolean = false, + range?: Range, + templates?: Record, + ): Promise { + await this.compileAndRunQueryInternal( + quickEval, + queryUri, + progress, + token, + databaseItem, + range, + templates, + warmOverlayBaseCache, + ); + } + + /** Used by tests */ + public async compileAndRunQueryInternal( + quickEval: QuickEvalType, + queryUri: Uri | undefined, + progress: ProgressCallback, + token: CancellationToken, + databaseItem: DatabaseItem | undefined, + range?: Range, + templates?: Record, + warmOverlayBaseCache: boolean = false, + ): Promise { + await saveBeforeStart(); + + let queryPath: string; + if (queryUri !== undefined) { + // The query URI is provided by the command, most likely because the command was run from an + // editor context menu. Use the provided URI, but make sure it's a valid query. + queryPath = validateQueryUri(queryUri, quickEval !== QuickEvalType.None); + } else { + // Use the currently selected query. + queryPath = await this.getCurrentQuery(quickEval !== QuickEvalType.None); + } + + const selectedQuery: SelectedQuery = { + queryPath, + quickEval: quickEval + ? await getQuickEvalContext( + range, + quickEval === QuickEvalType.QuickEvalCount, + ) + : undefined, + }; + + // If no databaseItem is specified, use the database currently selected in the Databases UI + databaseItem = + databaseItem ?? (await this.databaseUI.getDatabaseItem(progress)); + if (databaseItem === undefined) { + throw new Error("Can't run query without a selected database"); + } + + const additionalPacks = getOnDiskWorkspaceFolders(); + const extensionPacks = await this.getDefaultExtensionPacks(additionalPacks); + + const queryRunner = warmOverlayBaseCache + ? await this.getQueryRunnerForWarmingOverlayBaseCache() + : this.queryRunner; + const coreQueryRun = queryRunner.createQueryRun( + databaseItem.databaseUri.fsPath, + [ + { + queryPath: selectedQuery.queryPath, + outputBaseName: "results", + quickEvalPosition: selectedQuery.quickEval?.quickEvalPosition, + quickEvalCountOnly: selectedQuery.quickEval?.quickEvalCount, + }, + ], + true, + additionalPacks, + extensionPacks, + {}, + this.queryStorageDir, + basename(selectedQuery.queryPath), + templates, + ); + + // handle cancellation from the history view. + const source = new CancellationTokenSource(); + try { + token.onCancellationRequested(() => source.cancel()); + + const localQueryRun = await this.createLocalQueryRun( + selectedQuery, + databaseItem, + coreQueryRun.outputDir, + source, + warmOverlayBaseCache, + ); + + try { + const results = await coreQueryRun.evaluate( + progress, + source.token, + localQueryRun.logger, + ); + + await localQueryRun.complete(results, progress, warmOverlayBaseCache); + + return results; + } catch (e) { + // It's odd that we have two different ways for a query evaluation to fail: by throwing an + // exception, and by returning a result with a failure code. This is how the code worked + // before the refactoring, so it's been preserved, but we should probably figure out how + // to unify both error handling paths. + const err = asError(e); + await localQueryRun.fail(err); + + if (token.isCancellationRequested) { + throw new UserCancellationException(err.message, true); + } else { + throw e; + } + } + } finally { + source.dispose(); + } + } + + private async compileAndRunQueryOnMultipleDatabases( + progress: ProgressCallback, + token: CancellationToken, + uri: Uri | undefined, + ): Promise { + let filteredDBs = this.databaseManager.databaseItems; + if (filteredDBs.length === 0) { + void showAndLogErrorMessage( + this.app.logger, + "No databases found. Please add a suitable database to your workspace.", + ); + return; + } + // If possible, only show databases with the right language (otherwise show all databases). + const queryLanguage = await findLanguage(this.cliServer, uri); + if (queryLanguage) { + filteredDBs = this.databaseManager.databaseItems.filter( + (db) => (db.language as QueryLanguage) === queryLanguage, + ); + if (filteredDBs.length === 0) { + void showAndLogErrorMessage( + this.app.logger, + `No databases found for language ${queryLanguage}. Please add a suitable database to your workspace.`, + ); + return; + } + } + const quickPickItems = filteredDBs.map((dbItem) => ({ + databaseItem: dbItem, + label: dbItem.name, + description: dbItem.language, + })); + /** + * Databases that were selected in the quick pick menu. + */ + const quickpick = await window.showQuickPick( + quickPickItems, + { canPickMany: true, ignoreFocusOut: true }, + ); + if (quickpick !== undefined) { + // Collect all skipped databases and display them at the end (instead of popping up individual errors) + const skippedDatabases = []; + const errors = []; + for (const item of quickpick) { + try { + await this.compileAndRunQuery( + QuickEvalType.None, + uri, + progress, + token, + item.databaseItem, + ); + } catch (e) { + skippedDatabases.push(item.label); + errors.push(getErrorMessage(e)); + } + } + if (skippedDatabases.length > 0) { + void this.app.logger.log(`Errors:\n${errors.join("\n")}`); + void showAndLogWarningMessage( + this.app.logger, + `The following databases were skipped:\n${skippedDatabases.join( + "\n", + )}.\nFor details about the errors, see the logs.`, + ); + } + } else { + void showAndLogErrorMessage(this.app.logger, "No databases selected."); + } + } + + public async showResultsForCompletedQuery( + query: CompletedLocalQueryInfo, + forceReveal: WebviewReveal, + ): Promise { + await this.localQueryResultsView.showResults(query, forceReveal, false); + } + + public async getDefaultExtensionPacks( + additionalPacks: string[], + ): Promise { + return this.cliServer.useExtensionPacks() + ? Object.keys(await this.cliServer.resolveQlpacks(additionalPacks, true)) + : []; + } +} + +function isTabInputText(input: unknown): input is TabInputText { + return ( + input !== null && + typeof input === "object" && + "uri" in input && + input?.uri !== undefined + ); +} diff --git a/extensions/ql-vscode/src/local-queries/local-query-run.ts b/extensions/ql-vscode/src/local-queries/local-query-run.ts new file mode 100644 index 00000000000..4cfde130276 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/local-query-run.ts @@ -0,0 +1,217 @@ +import { extLogger } from "../common/logging/vscode"; +import type { BaseLogger, Logger } from "../common/logging"; +import { + showAndLogExceptionWithTelemetry, + showAndLogWarningMessage, +} from "../common/logging"; +import type { CoreQueryResult, CoreQueryResults } from "../query-server"; +import type { QueryHistoryManager } from "../query-history/query-history-manager"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { + EvaluatorLogPaths, + QueryWithResults, +} from "../run-queries-shared"; +import type { QueryOutputDir } from "./query-output-dir"; +import { + generateEvalLogSummaries, + logEndSummary, + QueryEvaluationInfo, +} from "../run-queries-shared"; +import type { CompletedLocalQueryInfo, LocalQueryInfo } from "../query-results"; +import { WebviewReveal } from "./webview"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { QueryResultType } from "../query-server/messages"; +import { redactableError } from "../common/errors"; +import type { LocalQueries } from "./local-queries"; +import { tryGetQueryMetadata } from "../codeql-cli/query-metadata"; +import { telemetryListener } from "../common/vscode/telemetry"; +import type { Disposable } from "../common/disposable-object"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { progressUpdate } from "../common/vscode/progress"; + +function formatResultMessage(result: CoreQueryResult): string { + switch (result.resultType) { + case QueryResultType.CANCELLATION: + return `cancelled after ${Math.round( + result.evaluationTime / 1000, + )} seconds`; + case QueryResultType.OOM: + return "out of memory"; + case QueryResultType.SUCCESS: + return `finished in ${Math.round(result.evaluationTime / 1000)} seconds`; + case QueryResultType.COMPILATION_ERROR: + return `compilation failed: ${result.message}`; + case QueryResultType.OTHER_ERROR: + default: + return result.message ? `failed: ${result.message}` : "failed"; + } +} + +/** + * Tracks the evaluation of a local query, including its interactions with the UI. + * + * The client creates an instance of `LocalQueryRun` when the evaluation starts, and then invokes + * the `complete()` function once the query has completed (successfully or otherwise). + * + * Having the client tell the `LocalQueryRun` when the evaluation is complete, rather than having + * the `LocalQueryRun` manage the evaluation itself, may seem a bit clunky. It's done this way + * because once we move query evaluation into a Debug Adapter, the debugging UI drives the + * evaluation, and we can only respond to events from the debug adapter. + */ +export class LocalQueryRun { + public constructor( + private readonly outputDir: QueryOutputDir, + private readonly localQueries: LocalQueries, + private readonly queryInfo: LocalQueryInfo, + private readonly dbItem: DatabaseItem, + /** + * The logger is only available while the query is running and will be disposed of when the + * query completes. + */ + public readonly logger: Logger & Disposable, // Public so that other clients, like the debug adapter, know where to send log output + private readonly queryHistoryManager: QueryHistoryManager, + private readonly cliServer: CodeQLCliServer, + ) {} + + /** + * Updates the UI based on the results of the query evaluation. This creates the evaluator log + * summaries, updates the query history item for the evaluation with the results and evaluation + * time, and displays the results view. + * + * This function must be called when the evaluation completes, whether the evaluation was + * successful or not. + * */ + public async complete( + results: CoreQueryResults, + progress: ProgressCallback, + warmOverlayBaseCache: boolean = false, + ): Promise { + const evalLogPaths = await this.summarizeEvalLog( + Array.from(results.results.values()).every( + (result) => result.resultType === QueryResultType.SUCCESS, + ), + this.outputDir, + this.logger, + progress, + ); + if (evalLogPaths !== undefined) { + this.queryInfo.setEvaluatorLogPaths(evalLogPaths); + } + progress(progressUpdate(1, 4, "Getting completed query info")); + const queriesWithResults = await this.getCompletedQueryInfo(results); + progress(progressUpdate(2, 4, "Updating query history")); + this.queryHistoryManager.completeQueries( + this.queryInfo, + queriesWithResults, + ); + progress(progressUpdate(3, 4, "Showing results")); + if (!warmOverlayBaseCache) + await this.localQueries.showResultsForCompletedQuery( + this.queryInfo as CompletedLocalQueryInfo, + WebviewReveal.Forced, + ); + // Note we must update the query history view after showing results as the + // display and sorting might depend on the number of results + progress(progressUpdate(4, 4, "Updating query history")); + await this.queryHistoryManager.refreshTreeView(); + + this.logger.dispose(); + } + + /** + * Updates the UI in the case where query evaluation throws an exception. + */ + public async fail(err: Error): Promise { + const evalLogPaths = await this.summarizeEvalLog( + false, + this.outputDir, + this.logger, + (_) => {}, + ); + if (evalLogPaths !== undefined) { + this.queryInfo.setEvaluatorLogPaths(evalLogPaths); + } + + err.message = `Error running query: ${err.message}`; + this.queryInfo.failureReason = err.message; + await this.queryHistoryManager.refreshTreeView(); + + this.logger.dispose(); + } + + /** + * Generate summaries of the structured evaluator log. + */ + private async summarizeEvalLog( + runSuccessful: boolean, + outputDir: QueryOutputDir, + logger: BaseLogger, + progress: ProgressCallback, + ): Promise { + const evalLogPaths = await generateEvalLogSummaries( + this.cliServer, + outputDir, + progress, + ); + if (evalLogPaths !== undefined) { + if (evalLogPaths.endSummary !== undefined) { + void logEndSummary(evalLogPaths.endSummary, logger); // Logged asynchrnously + } + } else { + // Raw evaluator log was not found. Notify the user, unless we know why it wasn't found. + if (runSuccessful) { + void showAndLogWarningMessage( + extLogger, + `Failed to write structured evaluator log to ${outputDir.evalLogPath}.`, + ); + } else { + // Don't bother notifying the user if there's no log. For some errors, like compilation + // errors, we don't expect a log. For cancellations and OOM errors, whether or not we have + // a log depends on how far execution got before termination. + } + } + + return evalLogPaths; + } + + /** + * Gets a `QueryWithResults` containing information about the evaluation of the queries and their + * result, in the form expected by the query history UI. + */ + private async getCompletedQueryInfo( + results: CoreQueryResults, + ): Promise { + const infos: QueryWithResults[] = []; + for (const [queryPath, result] of results.results) { + // Read the query metadata if possible, to use in the UI. + const metadata = await tryGetQueryMetadata(this.cliServer, queryPath); + const query = new QueryEvaluationInfo( + this.outputDir.querySaveDir, + result.outputBaseName, + this.dbItem.databaseUri.fsPath, + await this.dbItem.hasMetadataFile(), + this.queryInfo.initialInfo.quickEvalPosition, + metadata, + ); + + if (result.resultType !== QueryResultType.SUCCESS) { + const message = result.message + ? redactableError`Failed to run query: ${result.message}` + : redactableError`Failed to run query`; + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + message, + ); + } + const message = formatResultMessage(result); + const successful = result.resultType === QueryResultType.SUCCESS; + infos.push({ + query, + message, + successful, + }); + } + return infos; + } +} diff --git a/extensions/ql-vscode/src/local-queries/open-referenced-file-code-lens-provider.ts b/extensions/ql-vscode/src/local-queries/open-referenced-file-code-lens-provider.ts new file mode 100644 index 00000000000..bd73277d46a --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/open-referenced-file-code-lens-provider.ts @@ -0,0 +1,29 @@ +import type { CodeLensProvider, TextDocument, Command } from "vscode"; +import { CodeLens, Range } from "vscode"; + +export class OpenReferencedFileCodeLensProvider implements CodeLensProvider { + async provideCodeLenses(document: TextDocument): Promise { + const codeLenses: CodeLens[] = []; + + // A .qlref file is a file that contains a single line with a path to a .ql file. + if (document.fileName.endsWith(".qlref")) { + const textLine = document.lineAt(0); + const range: Range = new Range( + textLine.range.start.line, + textLine.range.start.character, + textLine.range.start.line, + textLine.range.end.character, + ); + + const command: Command = { + command: "codeQL.openReferencedFile", + title: `Open referenced file`, + arguments: [document.uri], + }; + const codeLens = new CodeLens(range, command); + codeLenses.push(codeLens); + } + + return codeLenses; + } +} diff --git a/extensions/ql-vscode/src/local-queries/qlpack-generator.ts b/extensions/ql-vscode/src/local-queries/qlpack-generator.ts new file mode 100644 index 00000000000..41b4fbd2381 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/qlpack-generator.ts @@ -0,0 +1,118 @@ +import { ensureDir, writeFile } from "fs-extra"; +import { dump } from "js-yaml"; +import { dirname, join } from "path"; +import { Uri } from "vscode"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { QueryLanguage } from "../common/query-language"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { basename } from "../common/path"; + +export class QlPackGenerator { + private qlpackName: string | undefined; + private readonly qlpackVersion: string; + private readonly header: string; + private readonly qlpackFileName: string; + private readonly folderUri: Uri; + + constructor( + private readonly queryLanguage: QueryLanguage, + private readonly cliServer: CodeQLCliServer, + private readonly storagePath: string, + private readonly queryStoragePath: string, + private readonly includeFolderNameInQlpackName: boolean = false, + ) { + this.qlpackVersion = "1.0.0"; + this.header = "# This is an automatically generated file.\n\n"; + + this.qlpackFileName = "codeql-pack.yml"; + this.folderUri = Uri.file(this.storagePath); + } + + public async generate() { + this.qlpackName = await this.determineQlpackName(); + + // create QL pack folder and add to workspace + await this.createWorkspaceFolder(); + + // create codeql-pack.yml + await this.createQlPackYaml(); + + // create example.ql + await this.createExampleQlFile(); + + // create codeql-pack.lock.yml + await this.createCodeqlPackLockYaml(); + } + + private async determineQlpackName(): Promise { + let qlpackBaseName = `getting-started/codeql-extra-queries-${this.queryLanguage}`; + if (this.includeFolderNameInQlpackName) { + const folderBasename = basename(dirname(this.folderUri.fsPath)); + if ( + folderBasename.includes("codeql") || + folderBasename.includes("queries") + ) { + // If the user has already included "codeql" or "queries" in the folder name, don't include it twice + qlpackBaseName = `getting-started/${folderBasename}-${this.queryLanguage}`; + } else { + qlpackBaseName = `getting-started/codeql-extra-queries-${folderBasename}-${this.queryLanguage}`; + } + } + + const existingQlPacks = await this.cliServer.resolveQlpacks( + getOnDiskWorkspaceFolders(), + ); + const existingQlPackNames = Object.keys(existingQlPacks); + + let qlpackName = qlpackBaseName; + let i = 0; + while (existingQlPackNames.includes(qlpackName)) { + i++; + + qlpackName = `${qlpackBaseName}-${i}`; + } + + return qlpackName; + } + + private async createWorkspaceFolder() { + await ensureDir(this.folderUri.fsPath); + } + + private async createQlPackYaml() { + const qlPackFilePath = join(this.folderUri.fsPath, this.qlpackFileName); + + const qlPackYml = { + name: this.qlpackName, + version: this.qlpackVersion, + dependencies: {}, + }; + + await writeFile(qlPackFilePath, this.header + dump(qlPackYml), "utf8"); + } + + public async createExampleQlFile(fileName = "example.ql") { + const exampleQlFilePath = join(this.queryStoragePath, fileName); + + const exampleQl = ` +/** + * This is an automatically generated file + * @name Hello world + * @kind problem + * @problem.severity warning + * @id ${this.queryLanguage}/example/hello-world + */ + +import ${this.queryLanguage} + +from File f +select f, "Hello, world!" +`.trim(); + + await writeFile(exampleQlFilePath, exampleQl, "utf8"); + } + + private async createCodeqlPackLockYaml() { + await this.cliServer.packAdd(this.folderUri.fsPath, this.queryLanguage); + } +} diff --git a/extensions/ql-vscode/src/local-queries/query-constraints.ts b/extensions/ql-vscode/src/local-queries/query-constraints.ts new file mode 100644 index 00000000000..ec86799b055 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/query-constraints.ts @@ -0,0 +1,7 @@ +export interface QueryConstraints { + kind?: string; + "tags contain"?: string[]; + "tags contain all"?: string[]; + "query filename"?: string; + "query path"?: string; +} diff --git a/extensions/ql-vscode/src/local-queries/query-contents.ts b/extensions/ql-vscode/src/local-queries/query-contents.ts new file mode 100644 index 00000000000..a7302026952 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/query-contents.ts @@ -0,0 +1,23 @@ +import { basename } from "path"; +import { dbSchemeToLanguage } from "../common/query-language"; + +/** + * Returns the initial contents for an empty query, based on the language of the selected + * databse. + * + * First try to use the given language name. If that doesn't exist, try to infer it based on + * dbscheme. Otherwise return no import statement. + * + * @param language the database language or empty string if unknown + * @param dbscheme path to the dbscheme file + * + * @returns an import and empty select statement appropriate for the selected language + */ +export function getInitialQueryContents(language: string, dbscheme: string) { + if (!language) { + const dbschemeBase = basename(dbscheme); + language = dbSchemeToLanguage[dbschemeBase]; + } + + return language ? `import ${language}\n\nselect ""` : 'select ""'; +} diff --git a/extensions/ql-vscode/src/local-queries/query-output-dir.ts b/extensions/ql-vscode/src/local-queries/query-output-dir.ts new file mode 100644 index 00000000000..00be58078b7 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/query-output-dir.ts @@ -0,0 +1,85 @@ +import { join } from "path"; + +function findQueryLogFile(resultPath: string): string { + return join(resultPath, "query.log"); +} + +function findQueryEvalLogFile(resultPath: string): string { + return join(resultPath, "evaluator-log.jsonl"); +} + +function findQueryEvalLogSummaryFile(resultPath: string): string { + return join(resultPath, "evaluator-log.summary"); +} + +function findJsonQueryEvalLogSummaryFile(resultPath: string): string { + return join(resultPath, "evaluator-log.summary.jsonl"); +} + +function findQueryEvalLogSummarySymbolsFile(resultPath: string): string { + return join(resultPath, "evaluator-log.summary.symbols.json"); +} + +function findQueryEvalLogEndSummaryFile(resultPath: string): string { + return join(resultPath, "evaluator-log-end.summary"); +} + +/** + * Provides paths to the files that can be generated in the output directory for a query evaluation. + */ +export class QueryOutputDir { + constructor(public readonly querySaveDir: string) {} + + /** + * Get the path that the compiled query is if it exists. Note that it only exists when using the legacy query server. + */ + get compileQueryPath() { + return join(this.querySaveDir, "compiledQuery.qlo"); + } + + get logPath() { + return findQueryLogFile(this.querySaveDir); + } + + get evalLogPath() { + return findQueryEvalLogFile(this.querySaveDir); + } + + get evalLogSummaryPath() { + return findQueryEvalLogSummaryFile(this.querySaveDir); + } + + get jsonEvalLogSummaryPath() { + return findJsonQueryEvalLogSummaryFile(this.querySaveDir); + } + + get evalLogSummarySymbolsPath() { + return findQueryEvalLogSummarySymbolsFile(this.querySaveDir); + } + + get evalLogEndSummaryPath() { + return findQueryEvalLogEndSummaryFile(this.querySaveDir); + } + + getBqrsPath(outputBaseName: string): string { + return join(this.querySaveDir, `${outputBaseName}.bqrs`); + } + + getInterpretedResultsPath( + metadataKind: string | undefined, + outputBaseName: string, + ): string { + return join( + this.querySaveDir, + `${outputBaseName}-${metadataKind === "graph" ? "graph" : `interpreted.sarif`}`, + ); + } + + getCsvPath(outputBaseName: string): string { + return join(this.querySaveDir, `${outputBaseName}.csv`); + } + + getDilPath(outputBaseName: string): string { + return join(this.querySaveDir, `${outputBaseName}.dil`); + } +} diff --git a/extensions/ql-vscode/src/local-queries/query-resolver.ts b/extensions/ql-vscode/src/local-queries/query-resolver.ts new file mode 100644 index 00000000000..0fa2b8f05cb --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/query-resolver.ts @@ -0,0 +1,151 @@ +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { QlPacksForLanguage } from "../databases/qlpack"; +import { getPrimaryDbscheme, getQlPackForDbscheme } from "../databases/qlpack"; +import { file } from "tmp-promise"; +import { writeFile } from "fs-extra"; +import { dump } from "js-yaml"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { redactableError } from "../common/errors"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import { extLogger } from "../common/logging/vscode"; +import { telemetryListener } from "../common/vscode/telemetry"; +import type { SuiteInstruction } from "../packaging/suite-instruction"; +import type { QueryConstraints } from "./query-constraints"; + +/** + * Consider using `resolveContextualQlPacksForDatabase` instead. + * @param cli The CLI server instance to use. + * @param db The database to find the QLPack for. + */ +export async function qlpackOfDatabase( + cli: Pick, + db: Pick, +): Promise { + if (db.contents === undefined) { + throw new Error("Database is invalid and cannot infer QLPack."); + } + const datasetPath = db.contents.datasetUri.fsPath; + const dbscheme = await getPrimaryDbscheme(datasetPath); + return await getQlPackForDbscheme(cli, dbscheme); +} + +/** + * Finds the queries with the specified kind and tags in a list of CodeQL packs. + * + * @param cli The CLI instance to use. + * @param qlpacks The list of packs to search. + * @param constraints Constraints on the queries to search for. + * @param additionalPacks Additional pack paths to search. + * @returns The found queries from the first pack in which any matching queries were found. + */ +export async function resolveQueriesFromPacks( + cli: CodeQLCliServer, + qlpacks: string[], + constraints: QueryConstraints, + additionalPacks: string[] = [], +): Promise { + const suiteFile = ( + await file({ + postfix: ".qls", + }) + ).path; + const suiteYaml: SuiteInstruction[] = []; + for (const qlpack of qlpacks) { + suiteYaml.push({ + from: qlpack, + queries: ".", + include: constraints as Record, + }); + } + await writeFile( + suiteFile, + dump(suiteYaml, { + noRefs: true, // CodeQL doesn't really support refs + }), + "utf8", + ); + + return await cli.resolveQueriesInSuite(suiteFile, [ + ...getOnDiskWorkspaceFolders(), + ...additionalPacks, + ]); +} + +export async function resolveQueriesByLanguagePack( + cli: CodeQLCliServer, + qlpacks: QlPacksForLanguage, + name: string, + constraints: QueryConstraints, +): Promise { + const packsToSearch: string[] = []; + + // The CLI can handle both library packs and query packs, so search both packs in order. + packsToSearch.push(qlpacks.dbschemePack); + if (qlpacks.queryPack !== undefined) { + packsToSearch.push(qlpacks.queryPack); + } + + return resolveQueries(cli, packsToSearch, name, constraints); +} + +/** + * Finds the queries with the specified kind and tags in a QLPack. + * + * @param cli The CLI instance to use. + * @param packsToSearch The list of packs to search. + * @param name The name of the query to use in error messages. + * @param constraints Constraints on the queries to search for. + * @param additionalPacks Additional pack paths to search. + * @returns The found queries from the first pack in which any matching queries were found. + */ +export async function resolveQueries( + cli: CodeQLCliServer, + packsToSearch: string[], + name: string, + constraints: QueryConstraints, + additionalPacks: string[] = [], +): Promise { + const queries = await resolveQueriesFromPacks( + cli, + packsToSearch, + constraints, + additionalPacks, + ); + if (queries.length > 0) { + return queries; + } + + // No queries found. Determine the correct error message for the various scenarios. + const humanConstraints = []; + if (constraints.kind !== undefined) { + humanConstraints.push(`kind "${constraints.kind}"`); + } + if (constraints["tags contain"] !== undefined) { + humanConstraints.push(`tagged "${constraints["tags contain"].join(" ")}"`); + } + if (constraints["tags contain all"] !== undefined) { + humanConstraints.push( + `tagged all of "${constraints["tags contain all"].join(" ")}"`, + ); + } + if (constraints["query filename"] !== undefined) { + humanConstraints.push( + `with query filename "${constraints["query filename"]}"`, + ); + } + if (constraints["query path"] !== undefined) { + humanConstraints.push(`with query path "${constraints["query path"]}"`); + } + + const joinedPacksToSearch = packsToSearch.join(", "); + const error = redactableError`No ${name} queries (${humanConstraints.join( + ", ", + )}) could be found in the \ +current library path (tried searching the following packs: ${joinedPacksToSearch}). \ +Try upgrading the CodeQL libraries. If that doesn't work, then ${name} queries are not yet available \ +for this language.`; + + void showAndLogExceptionWithTelemetry(extLogger, telemetryListener, error); + throw error; +} diff --git a/extensions/ql-vscode/src/local-queries/quick-eval-code-lens-provider.ts b/extensions/ql-vscode/src/local-queries/quick-eval-code-lens-provider.ts new file mode 100644 index 00000000000..09c3153404d --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/quick-eval-code-lens-provider.ts @@ -0,0 +1,40 @@ +import type { CodeLensProvider, TextDocument, Command } from "vscode"; +import { CodeLens, Range } from "vscode"; +import { isQuickEvalCodelensEnabled } from "../config"; + +export class QuickEvalCodeLensProvider implements CodeLensProvider { + async provideCodeLenses(document: TextDocument): Promise { + const codeLenses: CodeLens[] = []; + + if (isQuickEvalCodelensEnabled()) { + for (let index = 0; index < document.lineCount; index++) { + const textLine = document.lineAt(index); + + // Match a predicate signature, including predicate name, parameter list, and opening brace. + // This currently does not match predicates that span multiple lines. + const regex = new RegExp(/(\w+)\s*\([^()]*\)\s*\{/); + + const matches = textLine.text.match(regex); + + // Make sure that a code lens is not generated for any predicate that is commented out. + if (matches && !/^\s*\/\//.test(textLine.text)) { + const range: Range = new Range( + textLine.range.start.line, + matches.index!, + textLine.range.end.line, + matches.index! + 1, + ); + + const command: Command = { + command: "codeQL.codeLensQuickEval", + title: `Quick Evaluation: ${matches[1]}`, + arguments: [document.uri, range], + }; + const codeLens = new CodeLens(range, command); + codeLenses.push(codeLens); + } + } + } + return codeLenses; + } +} diff --git a/extensions/ql-vscode/src/local-queries/quick-query.ts b/extensions/ql-vscode/src/local-queries/quick-query.ts new file mode 100644 index 00000000000..8e0c55d885b --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/quick-query.ts @@ -0,0 +1,179 @@ +import { ensureDir, writeFile, pathExists, readFile } from "fs-extra"; +import { dump, load } from "js-yaml"; +import { basename, join } from "path"; +import { window as Window, workspace, Uri } from "vscode"; +import { LSPErrorCodes, ResponseError } from "vscode-languageclient"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { DatabaseUI } from "../databases/local-databases-ui"; +import { getInitialQueryContents } from "./query-contents"; +import { getPrimaryDbscheme, getQlPackForDbscheme } from "../databases/qlpack"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { UserCancellationException } from "../common/vscode/progress"; +import { getErrorMessage } from "../common/helpers-pure"; +import { FALLBACK_QLPACK_FILENAME, getQlPackFilePath } from "../common/ql"; +import type { App } from "../common/app"; +import type { ExtensionApp } from "../common/vscode/extension-app"; +import type { QlPackFile } from "../packaging/qlpack-file"; + +const QUICK_QUERIES_DIR_NAME = "quick-queries"; +const QUICK_QUERY_QUERY_NAME = "quick-query.ql"; +const QUICK_QUERY_WORKSPACE_FOLDER_NAME = "Quick Queries"; +const QLPACK_FILE_HEADER = "# This is an automatically generated file.\n\n"; + +export function isQuickQueryPath(queryPath: string): boolean { + return basename(queryPath) === QUICK_QUERY_QUERY_NAME; +} + +async function getQuickQueriesDir(app: App): Promise { + const storagePath = app.workspaceStoragePath; + if (storagePath === undefined) { + throw new Error("Workspace storage path is undefined"); + } + const queriesPath = join(storagePath, QUICK_QUERIES_DIR_NAME); + await ensureDir(queriesPath, { mode: 0o700 }); + return queriesPath; +} + +function updateQuickQueryDir(queriesDir: string, index: number, len: number) { + workspace.updateWorkspaceFolders(index, len, { + uri: Uri.file(queriesDir), + name: QUICK_QUERY_WORKSPACE_FOLDER_NAME, + }); +} + +function findExistingQuickQueryEditor() { + return Window.visibleTextEditors.find( + (editor) => basename(editor.document.uri.fsPath) === QUICK_QUERY_QUERY_NAME, + ); +} + +/** + * Show a buffer the user can enter a simple query into. + */ +export async function displayQuickQuery( + app: ExtensionApp, + cliServer: CodeQLCliServer, + databaseUI: DatabaseUI, + progress: ProgressCallback, +) { + try { + // If there is already a quick query open, don't clobber it, just + // show it. + const existing = findExistingQuickQueryEditor(); + if (existing) { + await Window.showTextDocument(existing.document); + return; + } + + const workspaceFolders = workspace.workspaceFolders || []; + const queriesDir = await getQuickQueriesDir(app); + + // We need to have a multi-root workspace to make quick query work + // at all. Changing the workspace from single-root to multi-root + // causes a restart of the whole extension host environment, so we + // basically can't do anything that survives that restart. + // + // So if we are currently in a single-root workspace (of which the + // only reliable signal appears to be `workspace.workspaceFile` + // being undefined) just let the user know that they're in for a + // restart. + if (workspace.workspaceFile === undefined) { + const createQueryOption = 'Run "Create query"'; + const quickQueryOption = 'Run "Quick query" anyway'; + const quickQueryPrompt = await Window.showWarningMessage( + '"Quick query" requires reloading your workspace as a multi-root workspace, which may cause query history and databases to be lost.', + { + modal: true, + detail: + 'The "Create query" command does not require reloading the workspace.', + }, + createQueryOption, + quickQueryOption, + ); + if (quickQueryPrompt === quickQueryOption) { + updateQuickQueryDir(queriesDir, workspaceFolders.length, 0); + } + if (quickQueryPrompt === createQueryOption) { + await app.queryServerCommands.execute("codeQLQuickQuery.createQuery"); + } + return; + } + + const index = workspaceFolders.findIndex( + (folder) => folder.name === QUICK_QUERY_WORKSPACE_FOLDER_NAME, + ); + if (index === -1) { + updateQuickQueryDir(queriesDir, workspaceFolders.length, 0); + } else { + updateQuickQueryDir(queriesDir, index, 1); + } + + // We're going to infer which qlpack to use from the current database + const dbItem = await databaseUI.getDatabaseItem(progress); + if (dbItem === undefined) { + throw new Error("Can't start quick query without a selected database"); + } + + const datasetFolder = await dbItem.getDatasetFolder(cliServer); + const dbscheme = await getPrimaryDbscheme(datasetFolder); + const qlpack = (await getQlPackForDbscheme(cliServer, dbscheme)) + .dbschemePack; + const qlPackFile = await getQlPackFilePath(queriesDir); + const qlFile = join(queriesDir, QUICK_QUERY_QUERY_NAME); + const shouldRewrite = await checkShouldRewrite(qlPackFile, qlpack); + + // Only rewrite the qlpack file if the database has changed + if (shouldRewrite) { + const quickQueryQlpackYaml: QlPackFile = { + name: "vscode/quick-query", + version: "1.0.0", + dependencies: { + [qlpack]: "*", + }, + }; + await writeFile( + qlPackFile ?? join(queriesDir, FALLBACK_QLPACK_FILENAME), + QLPACK_FILE_HEADER + dump(quickQueryQlpackYaml), + "utf8", + ); + } + + if (shouldRewrite || !(await pathExists(qlFile))) { + await writeFile( + qlFile, + getInitialQueryContents(dbItem.language, dbscheme), + "utf8", + ); + } + + if (shouldRewrite) { + await cliServer.clearCache(); + await cliServer.packInstall(queriesDir, { forceUpdate: true }); + } + + await Window.showTextDocument(await workspace.openTextDocument(qlFile)); + } catch (e) { + if ( + e instanceof ResponseError && + e.code === LSPErrorCodes.RequestCancelled + ) { + throw new UserCancellationException(getErrorMessage(e)); + } else { + throw e; + } + } +} + +async function checkShouldRewrite( + qlPackFile: string | undefined, + newDependency: string, +) { + if (!qlPackFile) { + return true; + } + if (!(await pathExists(qlPackFile))) { + return true; + } + const qlPackContents = load(await readFile(qlPackFile, "utf8")) as QlPackFile; + return !qlPackContents.dependencies?.[newDependency]; +} diff --git a/extensions/ql-vscode/src/local-queries/results-view.ts b/extensions/ql-vscode/src/local-queries/results-view.ts new file mode 100644 index 00000000000..9a47ce2fcf0 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/results-view.ts @@ -0,0 +1,1281 @@ +import type { Location, Result, Run } from "sarif"; +import type { + WebviewPanel, + TextEditorSelectionChangeEvent, + Range, +} from "vscode"; +import { + Diagnostic, + DiagnosticRelatedInformation, + DiagnosticSeverity, + languages, + Uri, + window, + env, + TextEditorSelectionChangeKind, + ViewColumn, + workspace, +} from "vscode"; +import type { CodeQLCliServer, SourceInfo } from "../codeql-cli/cli"; +import type { + DatabaseItem, + DatabaseManager, +} from "../databases/local-databases"; +import { DatabaseEventKind } from "../databases/local-databases"; +import { + decodeSourceArchiveUri, + zipArchiveScheme, +} from "../common/vscode/archive-filesystem-provider"; +import { + asError, + assertNever, + getErrorMessage, + getErrorStack, +} from "../common/helpers-pure"; +import type { + FromResultsViewMsg, + Interpretation, + IntoResultsViewMsg, + QueryMetadata, + ResultsPaths, + SortedResultSetInfo, + SortedResultsMap, + InterpretedResultsSortState, + RawResultsSortState, + ParsedResultSets, + EditorSelection, +} from "../common/interface-types"; +import { + SortDirection, + ALERTS_TABLE_NAME, + GRAPH_TABLE_NAME, + NavigationDirection, + getDefaultResultSetName, + RAW_RESULTS_LIMIT, + SourceArchiveRelationship, +} from "../common/interface-types"; +import { extLogger } from "../common/logging/vscode"; +import type { Logger } from "../common/logging"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import type { + CompletedQueryInfo, + CompletedLocalQueryInfo, +} from "../query-results"; +import { interpretResultsSarif, interpretGraphResults } from "../query-results"; +import type { QueryEvaluationInfo } from "../run-queries-shared"; +import { + getLocationsFromSarifResult, + normalizeFileUri, + parseSarifLocation, + parseSarifPlainTextMessage, +} from "../common/sarif-utils"; +import { WebviewReveal, fileUriToWebviewUri } from "./webview"; +import { + tryResolveLocation, + shownLocationDecoration, + shownLocationLineDecoration, + jumpToLocation, +} from "../databases/local-databases/locations"; +import { bqrsToResultSet } from "../common/bqrs-raw-results-mapper"; +import type { WebviewPanelConfig } from "../common/vscode/abstract-webview"; +import { AbstractWebview } from "../common/vscode/abstract-webview"; +import { isCanary, PAGE_SIZE } from "../config"; +import type { HistoryItemLabelProvider } from "../query-history/history-item-label-provider"; +import { telemetryListener } from "../common/vscode/telemetry"; +import { redactableError } from "../common/errors"; +import type { ResultsViewCommands } from "../common/commands"; +import type { App } from "../common/app"; +import type { Disposable } from "../common/disposable-object"; +import type { RawResultSet, Row } from "../common/raw-result-types"; +import type { BqrsResultSetSchema } from "../common/bqrs-cli-types"; +import { CachedOperation } from "../language-support/contextual/cached-operation"; + +/** + * results-view.ts + * ------------ + * + * Displaying query results and linking back to source files when the + * webview asks us to. + */ + +function sortMultiplier(sortDirection: SortDirection): number { + switch (sortDirection) { + case SortDirection.asc: + return 1; + case SortDirection.desc: + return -1; + } +} + +function sortInterpretedResults( + results: Result[], + sortState: InterpretedResultsSortState | undefined, +): void { + if (sortState !== undefined) { + const multiplier = sortMultiplier(sortState.sortDirection); + switch (sortState.sortBy) { + case "alert-message": + results.sort((a, b) => + a.message.text === undefined + ? 0 + : b.message.text === undefined + ? 0 + : multiplier * + a.message.text?.localeCompare(b.message.text, env.language), + ); + break; + default: + assertNever(sortState.sortBy); + } + } +} + +function interpretedPageSize( + interpretation: Interpretation | undefined, +): number { + if (interpretation?.data.t === "GraphInterpretationData") { + // Graph views always have one result per page. + return 1; + } + return PAGE_SIZE.getValue(); +} + +function numPagesOfResultSet( + resultSet: RawResultSet, + interpretation?: Interpretation, +): number { + const pageSize = interpretedPageSize(interpretation); + + const n = + interpretation?.data.t === "GraphInterpretationData" + ? interpretation.data.dot.length + : resultSet.totalRowCount; + + return Math.ceil(n / pageSize); +} + +function numInterpretedPages( + interpretation: Interpretation | undefined, +): number { + if (!interpretation) { + return 0; + } + + const pageSize = interpretedPageSize(interpretation); + + const n = + interpretation.data.t === "GraphInterpretationData" + ? interpretation.data.dot.length + : interpretation.data.runs[0].results?.length || 0; + + return Math.ceil(n / pageSize); +} + +/** + * The results view is used for displaying the results of a local query. It is a singleton; only 1 results view exists + * in the extension. It is created when the extension is activated and disposed of when the extension is deactivated. + * There can be multiple panels linked to this view over the lifetime of the extension, but there is only ever 1 panel + * active at a time. + */ +export class ResultsView extends AbstractWebview< + IntoResultsViewMsg, + FromResultsViewMsg +> { + private _displayedQuery?: CompletedLocalQueryInfo; + private _interpretation?: Interpretation; + + private readonly _diagnosticCollection = languages.createDiagnosticCollection( + "codeql-query-results", + ); + + // Event listeners that should be disposed of when the view is disposed. + private disposableEventListeners: Disposable[] = []; + + private schemaCache: CachedOperation<[], BqrsResultSetSchema[]>; + + constructor( + app: App, + private databaseManager: DatabaseManager, + public cliServer: CodeQLCliServer, + public logger: Logger, + private labelProvider: HistoryItemLabelProvider, + ) { + super(app); + + // We can't use this.push for these two event listeners because they need to be disposed of when the view is + // disposed, not when the panel is disposed. The results view is a singleton, so we shouldn't be calling this.push. + this.disposableEventListeners.push( + window.onDidChangeTextEditorSelection( + this.handleSelectionChange.bind(this), + ), + ); + + this.disposableEventListeners.push( + window.onDidChangeActiveTextEditor(() => { + this.sendEditorSelectionToWebview(); + }), + ); + + this.disposableEventListeners.push( + this.databaseManager.onDidChangeDatabaseItem(({ kind }) => { + if (kind === DatabaseEventKind.Remove) { + this._diagnosticCollection.clear(); + if (this.isShowingPanel) { + void this.postMessage({ + t: "untoggleShowProblems", + }); + } + } + }), + ); + + this.schemaCache = new CachedOperation( + this.getResultSetSchemasImpl.bind(this), + ); + } + + public getCommands(): ResultsViewCommands { + return { + "codeQLQueryResults.up": this.navigateResultView.bind( + this, + NavigationDirection.up, + ), + "codeQLQueryResults.down": this.navigateResultView.bind( + this, + NavigationDirection.down, + ), + "codeQLQueryResults.left": this.navigateResultView.bind( + this, + NavigationDirection.left, + ), + "codeQLQueryResults.right": this.navigateResultView.bind( + this, + NavigationDirection.right, + ), + // For backwards compatibility with keybindings set using an earlier version of the extension. + "codeQLQueryResults.nextPathStep": this.navigateResultView.bind( + this, + NavigationDirection.down, + ), + "codeQLQueryResults.previousPathStep": this.navigateResultView.bind( + this, + NavigationDirection.up, + ), + }; + } + + async navigateResultView(direction: NavigationDirection): Promise { + if (!this.panel?.visible) { + return; + } + // Reveal the panel now as the subsequent call to 'window.showTextEditor' in 'showLocation' may destroy the webview otherwise. + this.panel.reveal(); + await this.postMessage({ t: "navigate", direction }); + } + + protected getPanelConfig(): WebviewPanelConfig { + return { + viewId: "resultsView", + title: "CodeQL Query Results", + viewColumn: this.chooseColumnForWebview(), + preserveFocus: true, + view: "results", + // Required for the graph viewer which is using d3-graphviz WASM module. Only supported in canary mode. + allowWasmEval: isCanary(), + }; + } + + protected onPanelDispose(): void { + this._displayedQuery = undefined; + } + + protected async onMessage(msg: FromResultsViewMsg): Promise { + try { + switch (msg.t) { + case "viewLoaded": + this.onWebViewLoaded(); + break; + case "viewSourceFile": { + const jumpTarget = await jumpToLocation( + msg.databaseUri, + msg.loc, + this.databaseManager, + this.logger, + ); + if (jumpTarget != null) { + // For selection-filtering purposes, we want to notify the webview that a new file is being looked at. + await this.postMessage({ + t: "setEditorSelection", + selection: this.rangeToEditorSelection( + jumpTarget.uri, + jumpTarget.range, + ), + wasFromUserInteraction: false, + }); + } + break; + } + case "toggleDiagnostics": { + if (msg.visible) { + const databaseItem = this.databaseManager.findDatabaseItem( + Uri.parse(msg.databaseUri), + ); + if (databaseItem !== undefined) { + await this.showResultsAsDiagnostics( + msg.origResultsPaths, + msg.metadata, + databaseItem, + ); + } + } else { + // TODO: Only clear diagnostics on the same database. + this._diagnosticCollection.clear(); + } + break; + } + case "changeSort": + await this.changeRawSortState(msg.resultSetName, msg.sortState); + telemetryListener?.sendUIInteraction("local-results-column-sorting"); + break; + case "changeInterpretedSort": + await this.changeInterpretedSortState(msg.sortState); + break; + case "changePage": + if ( + msg.selectedTable === ALERTS_TABLE_NAME || + msg.selectedTable === GRAPH_TABLE_NAME + ) { + await this.showPageOfInterpretedResults(msg.pageNumber); + } else { + await this.showPageOfRawResults( + msg.selectedTable, + msg.pageNumber, + // When we are in an unsorted state, we guarantee that + // sortedResultsInfo doesn't have an entry for the current + // result set. Use this to determine whether or not we use + // the sorted bqrs file. + !!this._displayedQuery?.completedQuery.sortedResultsInfo[ + msg.selectedTable + ], + ); + } + break; + case "openFile": + await this.openFile(msg.filePath); + break; + case "requestFileFilteredResults": + void this.loadFileFilteredResults(msg.fileUri, msg.selectedTable); + break; + case "telemetry": + telemetryListener?.sendUIInteraction(msg.action); + break; + case "unhandledError": + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + msg.error, + )`Unhandled error in results view: ${msg.error.message}`, + ); + break; + default: + assertNever(msg); + } + } catch (e) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(e), + )`Error handling message from results view: ${getErrorMessage(e)}`, + { + fullMessage: getErrorStack(e), + }, + ); + } + } + + /** + * Choose where to open the webview. + * + * If there is a single view column, then open beside it. + * If there are multiple view columns, then open beside the active column, + * unless the active editor is the last column. In this case, open in the first column. + * + * The goal is to avoid opening new columns when there already are two columns open. + */ + private chooseColumnForWebview(): ViewColumn { + // This is not a great way to determine the number of view columns, but I + // can't find a vscode API that does it any better. + // Here, iterate through all the visible editors and determine the max view column. + // This won't work if the largest view column is empty. + const colCount = window.visibleTextEditors.reduce( + (maxVal, editor) => + Math.max( + maxVal, + Number.parseInt(editor.viewColumn?.toFixed() || "0", 10), + ), + 0, + ); + if (colCount <= 1) { + return ViewColumn.Beside; + } + const activeViewColumnNum = Number.parseInt( + window.activeTextEditor?.viewColumn?.toFixed() || "0", + 10, + ); + return activeViewColumnNum === colCount + ? ViewColumn.One + : ViewColumn.Beside; + } + + private async changeInterpretedSortState( + sortState: InterpretedResultsSortState | undefined, + ): Promise { + if (this._displayedQuery === undefined) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError`Failed to sort results since evaluation info was unknown.`, + ); + return; + } + // Notify the webview that it should expect new results. + await this.postMessage({ t: "resultsUpdating" }); + await this._displayedQuery.completedQuery.updateInterpretedSortState( + sortState, + ); + await this.showResults(this._displayedQuery, WebviewReveal.NotForced, true); + } + + private async changeRawSortState( + resultSetName: string, + sortState: RawResultsSortState | undefined, + ): Promise { + if (this._displayedQuery === undefined) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError`Failed to sort results since evaluation info was unknown.`, + ); + return; + } + this.schemaCache.reset(); + // Notify the webview that it should expect new results. + await this.postMessage({ t: "resultsUpdating" }); + await this._displayedQuery.completedQuery.updateSortState( + this.cliServer, + resultSetName, + sortState, + ); + // Sorting resets to first page, as there is arguably no particular + // correlation between the results on the nth page that the user + // was previously viewing and the contents of the nth page in a + // new sorted order. + await this.showPageOfRawResults(resultSetName, 0, true); + } + + /** + * Show query results in webview panel. + * @param fullQuery Evaluation info for the executed query. + * @param shouldKeepOldResultsWhileRendering Should keep old results while rendering. + * @param forceReveal Force the webview panel to be visible and + * Appropriate when the user has just performed an explicit + * UI interaction requesting results, e.g. clicking on a query + * history entry. + */ + public async showResults( + fullQuery: CompletedLocalQueryInfo, + forceReveal: WebviewReveal, + shouldKeepOldResultsWhileRendering = false, + ): Promise { + if (!fullQuery.completedQuery?.successful) { + return; + } + + const panel = await this.getPanel(); + + this._interpretation = undefined; + const interpretationPage = await this.interpretResultsInfo( + fullQuery.completedQuery.query, + fullQuery.completedQuery.interpretedResultsSortState, + ); + + const sortedResultsMap: SortedResultsMap = {}; + Object.entries(fullQuery.completedQuery.sortedResultsInfo).forEach( + ([k, v]) => + (sortedResultsMap[k] = this.convertPathPropertiesToWebviewUris( + panel, + v, + )), + ); + + this._displayedQuery = fullQuery; + + await this.waitForPanelLoaded(); + if (!panel.visible) { + if (forceReveal === WebviewReveal.Forced) { + panel.reveal(undefined, true); + } else { + // The results panel exists, (`.getPanel()` guarantees it) but + // is not visible; it's in a not-currently-viewed tab. Show a + // more asynchronous message to not so abruptly interrupt + // user's workflow by immediately revealing the panel. + const showButton = "View Results"; + const queryName = this.labelProvider.getShortLabel(fullQuery); + const resultPromise = window.showInformationMessage( + `Finished running query ${ + queryName.length > 0 ? ` "${queryName}"` : "" + }.`, + showButton, + ); + // Address this click asynchronously so we still update the + // query history immediately. + void resultPromise.then((result) => { + if (result === showButton) { + panel.reveal(); + } + }); + } + } + + // Note that the resultSetSchemas will return offsets for the default (unsorted) page, + // which may not be correct. However, in this case, it doesn't matter since we only + // need the first offset, which will be the same no matter which sorting we use. + const resultSetSchemas = await this.getResultSetSchemas( + fullQuery.completedQuery, + ); + const resultSetNames = resultSetSchemas.map((schema) => schema.name); + + const selectedTable = getDefaultResultSetName(resultSetNames); + const schema = resultSetSchemas.find( + (resultSet) => resultSet.name === selectedTable, + )!; + + // Use sorted results path if it exists. This may happen if we are + // reloading the results view after it has been sorted in the past. + const resultsPath = fullQuery.completedQuery.getResultsPath(selectedTable); + const pageSize = PAGE_SIZE.getValue(); + const chunk = await this.cliServer.bqrsDecode(resultsPath, schema.name, { + // Always send the first page. + // It may not wind up being the page we actually show, + // if there are interpreted results, but speculatively + // send anyway. + offset: schema.pagination?.offsets[0], + pageSize, + }); + const resultSet = bqrsToResultSet(schema, chunk); + fullQuery.completedQuery.setResultCount( + interpretationPage?.numTotalResults || resultSet.totalRowCount, + ); + const parsedResultSets: ParsedResultSets = { + pageNumber: 0, + pageSize, + numPages: numPagesOfResultSet(resultSet, this._interpretation), + numInterpretedPages: numInterpretedPages(this._interpretation), + resultSet: { t: "RawResultSet", resultSet }, + selectedTable: undefined, + resultSetNames, + }; + + await this.postMessage({ + t: "setUserSettings", + userSettings: { + // Only show provenance info in canary mode for now. + shouldShowProvenance: isCanary(), + }, + }); + + await this.postMessage({ + t: "setState", + interpretation: interpretationPage, + origResultsPaths: { + resultsPath: fullQuery.completedQuery.query.resultsPath, + interpretedResultsPath: + fullQuery.completedQuery.query.interpretedResultsPath, + }, + resultsPath: this.convertPathToWebviewUri( + panel, + fullQuery.completedQuery.query.resultsPath, + ), + parsedResultSets, + sortedResultsMap, + database: fullQuery.initialInfo.databaseInfo, + shouldKeepOldResultsWhileRendering, + metadata: fullQuery.completedQuery.query.metadata, + queryName: this.labelProvider.getLabel(fullQuery), + queryPath: fullQuery.initialInfo.queryPath, + }); + + // Send the current editor selection so the webview can apply filtering immediately + this.sendEditorSelectionToWebview(); + } + + /** + * Show a page of interpreted results + */ + public async showPageOfInterpretedResults(pageNumber: number): Promise { + if (this._displayedQuery === undefined) { + throw new Error( + "Trying to show interpreted results but displayed query was undefined", + ); + } + if (this._interpretation === undefined) { + throw new Error( + "Trying to show interpreted results but interpretation was undefined", + ); + } + if ( + this._interpretation.data.t === "SarifInterpretationData" && + this._interpretation.data.runs[0].results === undefined + ) { + throw new Error( + "Trying to show interpreted results but results were undefined", + ); + } + + const resultSetSchemas = await this.getResultSetSchemas( + this._displayedQuery.completedQuery, + ); + const resultSetNames = resultSetSchemas.map((schema) => schema.name); + + await this.postMessage({ + t: "showInterpretedPage", + interpretation: this.getPageOfInterpretedResults(pageNumber), + database: this._displayedQuery.initialInfo.databaseInfo, + metadata: this._displayedQuery.completedQuery.query.metadata, + pageNumber, + resultSetNames, + pageSize: interpretedPageSize(this._interpretation), + numPages: numInterpretedPages(this._interpretation), + queryName: this.labelProvider.getLabel(this._displayedQuery), + queryPath: this._displayedQuery.initialInfo.queryPath, + }); + } + + private async getResultSetSchemas( + completedQuery: CompletedQueryInfo, + selectedTable = "", + ): Promise { + const resultsPath = completedQuery.getResultsPath(selectedTable); + return this.schemaCache.get(resultsPath); + } + + private async getResultSetSchemasImpl( + resultsPath: string, + ): Promise { + const schemas = await this.cliServer.bqrsInfo( + resultsPath, + PAGE_SIZE.getValue(), + ); + return schemas["result-sets"]; + } + + public async openFile(filePath: string) { + const textDocument = await workspace.openTextDocument(filePath); + await window.showTextDocument(textDocument, ViewColumn.One); + } + + /** + * Show a page of raw results from the chosen table. + */ + public async showPageOfRawResults( + selectedTable: string, + pageNumber: number, + sorted = false, + ): Promise { + const results = this._displayedQuery; + if (results === undefined) { + throw new Error("trying to view a page of a query that is not loaded"); + } + + const panel = await this.getPanel(); + + const sortedResultsMap: SortedResultsMap = {}; + Object.entries(results.completedQuery.sortedResultsInfo).forEach( + ([k, v]) => + (sortedResultsMap[k] = this.convertPathPropertiesToWebviewUris( + panel, + v, + )), + ); + + const resultSetSchemas = await this.getResultSetSchemas( + results.completedQuery, + sorted ? selectedTable : "", + ); + + // If there is a specific sorted table selected, a different bqrs file is loaded that doesn't have all the result set names. + // Make sure that we load all result set names here. + // See https://github.com/github/vscode-codeql/issues/1005 + const allResultSetSchemas = sorted + ? await this.getResultSetSchemas(results.completedQuery, "") + : resultSetSchemas; + const resultSetNames = allResultSetSchemas.map((schema) => schema.name); + + const schema = resultSetSchemas.find( + (resultSet) => resultSet.name === selectedTable, + )!; + if (schema === undefined) { + throw new Error(`Query result set '${selectedTable}' not found.`); + } + + const pageSize = PAGE_SIZE.getValue(); + const chunk = await this.cliServer.bqrsDecode( + results.completedQuery.getResultsPath(selectedTable, sorted), + schema.name, + { + offset: schema.pagination?.offsets[pageNumber], + pageSize, + }, + ); + const resultSet = bqrsToResultSet(schema, chunk); + + const parsedResultSets: ParsedResultSets = { + pageNumber, + pageSize, + resultSet: { t: "RawResultSet", resultSet }, + numPages: numPagesOfResultSet(resultSet), + numInterpretedPages: numInterpretedPages(this._interpretation), + selectedTable, + resultSetNames, + }; + + await this.postMessage({ + t: "setState", + interpretation: this._interpretation, + origResultsPaths: { + resultsPath: results.completedQuery.query.resultsPath, + interpretedResultsPath: + results.completedQuery.query.interpretedResultsPath, + }, + resultsPath: this.convertPathToWebviewUri( + panel, + results.completedQuery.query.resultsPath, + ), + parsedResultSets, + sortedResultsMap, + database: results.initialInfo.databaseInfo, + shouldKeepOldResultsWhileRendering: false, + metadata: results.completedQuery.query.metadata, + queryName: this.labelProvider.getLabel(results), + queryPath: results.initialInfo.queryPath, + }); + } + + private async _getInterpretedResults( + metadata: QueryMetadata | undefined, + resultsPaths: ResultsPaths, + sourceInfo: SourceInfo | undefined, + sourceLocationPrefix: string, + sortState: InterpretedResultsSortState | undefined, + ): Promise { + if (!resultsPaths) { + void this.logger.log( + "No results path. Cannot display interpreted results.", + ); + return undefined; + } + let data; + let numTotalResults; + // Graph results are only supported in canary mode because the graph viewer is not actively supported + if (metadata?.kind === GRAPH_TABLE_NAME && isCanary()) { + data = await interpretGraphResults( + this.cliServer, + metadata, + resultsPaths, + sourceInfo, + ); + numTotalResults = data.dot.length; + } else { + const sarif = await interpretResultsSarif( + this.cliServer, + metadata, + resultsPaths, + sourceInfo, + ); + + sarif.runs.forEach((run) => { + if (run.results) { + sortInterpretedResults(run.results, sortState); + } + }); + + sarif.sortState = sortState; + data = sarif; + + numTotalResults = (() => { + return sarif.runs?.[0]?.results ? sarif.runs[0].results.length : 0; + })(); + } + + const interpretation: Interpretation = { + data, + sourceLocationPrefix, + numTruncatedResults: 0, + numTotalResults, + }; + this._interpretation = interpretation; + return interpretation; + } + + private getPageOfInterpretedResults(pageNumber: number): Interpretation { + function getPageOfRun(run: Run): Run { + return { + ...run, + results: run.results?.slice( + PAGE_SIZE.getValue() * pageNumber, + PAGE_SIZE.getValue() * (pageNumber + 1), + ), + }; + } + + const interp = this._interpretation; + if (interp === undefined) { + throw new Error( + "Tried to get interpreted results before interpretation finished", + ); + } + + if (interp.data.t !== "SarifInterpretationData") { + return interp; + } + + if (interp.data.runs.length !== 1) { + void this.logger.log( + `Warning: SARIF file had ${interp.data.runs.length} runs, expected 1`, + ); + } + + return { + ...interp, + data: { + ...interp.data, + runs: [getPageOfRun(interp.data.runs[0])], + }, + }; + } + + private async interpretResultsInfo( + query: QueryEvaluationInfo, + sortState: InterpretedResultsSortState | undefined, + ): Promise { + if ( + query.canHaveInterpretedResults() && + query.quickEvalPosition === undefined // never do results interpretation if quickEval + ) { + try { + const dbItem = this.databaseManager.findDatabaseItem( + Uri.file(query.dbItemPath), + ); + if (!dbItem) { + throw new Error( + `Could not find database item for ${query.dbItemPath}`, + ); + } + const sourceLocationPrefix = await dbItem.getSourceLocationPrefix( + this.cliServer, + ); + const sourceArchiveUri = dbItem.sourceArchive; + const sourceInfo = + sourceArchiveUri === undefined + ? undefined + : { + sourceArchive: sourceArchiveUri.fsPath, + sourceLocationPrefix, + }; + await this._getInterpretedResults( + query.metadata, + { + resultsPath: query.resultsPath, + interpretedResultsPath: query.interpretedResultsPath, + }, + sourceInfo, + sourceLocationPrefix, + sortState, + ); + } catch (e) { + // If interpretation fails, accept the error and continue + // trying to render uninterpreted results anyway. + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(e), + )`Showing raw results instead of interpreted ones due to an error. ${getErrorMessage( + e, + )}`, + ); + } + } + return this._interpretation && this.getPageOfInterpretedResults(0); + } + + private async showResultsAsDiagnostics( + resultsInfo: ResultsPaths, + metadata: QueryMetadata | undefined, + database: DatabaseItem, + ): Promise { + const sourceLocationPrefix = await database.getSourceLocationPrefix( + this.cliServer, + ); + const sourceArchiveUri = database.sourceArchive; + const sourceInfo = + sourceArchiveUri === undefined + ? undefined + : { + sourceArchive: sourceArchiveUri.fsPath, + sourceLocationPrefix, + }; + // TODO: Performance-testing to determine whether this truncation is necessary. + const interpretation = await this._getInterpretedResults( + metadata, + resultsInfo, + sourceInfo, + sourceLocationPrefix, + undefined, + ); + + if (!interpretation) { + return; + } + + try { + await this.showProblemResultsAsDiagnostics(interpretation, database); + } catch (e) { + void this.logger.log( + `Exception while computing problem results as diagnostics: ${getErrorMessage( + e, + )}`, + ); + this._diagnosticCollection.clear(); + } + } + + private async showProblemResultsAsDiagnostics( + interpretation: Interpretation, + databaseItem: DatabaseItem, + ): Promise { + const { data, sourceLocationPrefix } = interpretation; + + if (data.t !== "SarifInterpretationData") { + return; + } + + if (!data.runs || !data.runs[0].results) { + void this.logger.log( + "Didn't find a run in the sarif results. Error processing sarif?", + ); + return; + } + + const diagnostics: Array<[Uri, readonly Diagnostic[]]> = []; + + for (const result of data.runs[0].results) { + const message = result.message.text; + if (message === undefined) { + void this.logger.log("Sarif had result without plaintext message"); + continue; + } + if (!result.locations) { + void this.logger.log("Sarif had result without location"); + continue; + } + + const sarifLoc = parseSarifLocation( + result.locations[0], + sourceLocationPrefix, + ); + if ("hint" in sarifLoc) { + continue; + } + const resultLocation = tryResolveLocation(sarifLoc, databaseItem); + if (!resultLocation) { + void this.logger.log( + `Sarif location was not resolvable: ${sarifLoc.uri.toString()}`, + ); + continue; + } + const parsedMessage = parseSarifPlainTextMessage(message); + const relatedInformation: DiagnosticRelatedInformation[] = []; + const relatedLocationsById: { [k: number]: Location } = {}; + + for (const loc of result.relatedLocations || []) { + relatedLocationsById[loc.id!] = loc; + } + const resultMessageChunks: string[] = []; + for (const section of parsedMessage) { + if (typeof section === "string") { + resultMessageChunks.push(section); + } else { + resultMessageChunks.push(section.text); + const sarifChunkLoc = parseSarifLocation( + relatedLocationsById[section.dest], + sourceLocationPrefix, + ); + if ("hint" in sarifChunkLoc) { + continue; + } + const referenceLocation = tryResolveLocation( + sarifChunkLoc, + databaseItem, + ); + + if (referenceLocation) { + const related = new DiagnosticRelatedInformation( + referenceLocation, + section.text, + ); + relatedInformation.push(related); + } + } + } + const diagnostic = new Diagnostic( + resultLocation.range, + resultMessageChunks.join(""), + DiagnosticSeverity.Warning, + ); + diagnostic.relatedInformation = relatedInformation; + + diagnostics.push([resultLocation.uri, [diagnostic]]); + } + this._diagnosticCollection.set(diagnostics); + } + + private convertPathToWebviewUri(panel: WebviewPanel, path: string): string { + return fileUriToWebviewUri(panel, Uri.file(path)); + } + + private convertPathPropertiesToWebviewUris( + panel: WebviewPanel, + info: SortedResultSetInfo, + ): SortedResultSetInfo { + return { + resultsPath: this.convertPathToWebviewUri(panel, info.resultsPath), + sortState: info.sortState, + }; + } + + private handleSelectionChange(event: TextEditorSelectionChangeEvent): void { + const wasFromUserInteraction = + event.kind !== TextEditorSelectionChangeKind.Command; + this.sendEditorSelectionToWebview(wasFromUserInteraction); + if (!wasFromUserInteraction) { + return; // Ignore selection events we caused ourselves. + } + const editor = window.activeTextEditor; + if (editor !== undefined) { + editor.setDecorations(shownLocationDecoration, []); + editor.setDecorations(shownLocationLineDecoration, []); + } + } + + /** + * Sends the current editor selection to the webview so it can filter results. + * Does not send when there is no active text editor (e.g. when the webview + * gains focus), so the webview retains the last known selection. + */ + private sendEditorSelectionToWebview(wasFromUserInteraction = false): void { + if (!this.isShowingPanel) { + return; + } + const selection = this.computeEditorSelection(); + if (selection === undefined) { + return; + } + void this.postMessage({ + t: "setEditorSelection", + selection, + wasFromUserInteraction, + }); + } + + /** + * Computes the current editor selection in a format compatible with result locations. + */ + private computeEditorSelection(): EditorSelection | undefined { + const editor = window.activeTextEditor; + if (!editor) { + return undefined; + } + + return this.rangeToEditorSelection(editor.document.uri, editor.selection); + } + + private rangeToEditorSelection(uri: Uri, range: Range) { + const fileUri = this.getEditorFileUri(uri); + if (fileUri == null) { + return undefined; + } + return { + fileUri, + // VS Code selections are 0-based; result locations are 1-based + startLine: range.start.line + 1, + endLine: range.end.line + 1, + startColumn: range.start.character + 1, + endColumn: range.end.character + 1, + isEmpty: range.isEmpty, + sourceArchiveRelationship: this.getSourceArchiveRelationship(uri), + }; + } + + /** + * Gets a file URI from the editor that can be compared with result location URIs. + * + * Result URIs (in BQRS and SARIF) use the original source file paths. + * For `file:` scheme editors, the URI already matches. + * For source archive editors, we extract the path within the archive, + * which corresponds to the original source file path. + */ + private getEditorFileUri(editorUri: Uri): string | undefined { + if (editorUri.scheme === "file") { + return editorUri.toString(); + } + if (editorUri.scheme === zipArchiveScheme) { + try { + const { pathWithinSourceArchive } = decodeSourceArchiveUri(editorUri); + return `file://${pathWithinSourceArchive}`; + } catch { + return undefined; + } + } + return undefined; + } + + /** + * Determines the relationship between the editor file and the query's database source archive. + */ + private getSourceArchiveRelationship( + editorUri: Uri, + ): SourceArchiveRelationship { + if (editorUri.scheme !== zipArchiveScheme) { + return SourceArchiveRelationship.NotInArchive; + } + const dbItem = this._displayedQuery + ? this.databaseManager.findDatabaseItem( + Uri.parse(this._displayedQuery.initialInfo.databaseInfo.databaseUri), + ) + : undefined; + if ( + dbItem?.sourceArchive && + dbItem.belongsToSourceArchiveExplorerUri(editorUri) + ) { + return SourceArchiveRelationship.CorrectArchive; + } + return SourceArchiveRelationship.WrongArchive; + } + + /** + * Loads all results from the given table that reference the given file URI, + * and sends them to the webview. Called on demand when the webview requests + * pre-filtered results for a specific (file, table) pair. + */ + private async loadFileFilteredResults( + fileUri: string, + selectedTable: string, + ): Promise { + const query = this._displayedQuery; + if (!query) { + void this.postMessage({ + t: "setFileFilteredResults", + results: { fileUri, selectedTable }, + }); + return; + } + + const normalizedFilterUri = normalizeFileUri(fileUri); + + let rawRows: Row[] | undefined; + let sarifResults: Result[] | undefined; + + // Load and filter raw BQRS results + try { + const resultSetSchemas = await this.getResultSetSchemas( + query.completedQuery, + ); + const schema = resultSetSchemas.find((s) => s.name === selectedTable); + + if (schema && schema.rows > 0) { + const resultsPath = query.completedQuery.getResultsPath(selectedTable); + const chunk = await this.cliServer.bqrsDecode( + resultsPath, + schema.name, + { + offset: schema.pagination?.offsets[0], + pageSize: schema.rows, + }, + ); + const resultSet = bqrsToResultSet(schema, chunk); + rawRows = filterRowsByFileUri(resultSet.rows, normalizedFilterUri); + if (rawRows.length > RAW_RESULTS_LIMIT) { + rawRows = rawRows.slice(0, RAW_RESULTS_LIMIT); + } + } + } catch (e) { + void this.logger.log( + `Error loading file-filtered raw results: ${getErrorMessage(e)}`, + ); + } + + // Filter SARIF results (already in memory) + if (this._interpretation?.data.t === "SarifInterpretationData") { + const allResults = this._interpretation.data.runs[0]?.results ?? []; + sarifResults = allResults.filter((result) => { + const locations = getLocationsFromSarifResult( + result, + this._interpretation!.sourceLocationPrefix, + ); + return locations.some( + (loc) => normalizeFileUri(loc.uri) === normalizedFilterUri, + ); + }); + } + + void this.postMessage({ + t: "setFileFilteredResults", + results: { + fileUri, + selectedTable, + rawRows, + sarifResults, + }, + }); + } + + dispose() { + super.dispose(); + + this._diagnosticCollection.dispose(); + this.disposableEventListeners.forEach((d) => d.dispose()); + this.disposableEventListeners = []; + } +} + +/** + * Filters raw result rows to those that have at least one location + * referencing the given file (compared by normalized URI). + */ +function filterRowsByFileUri(rows: Row[], normalizedFileUri: string): Row[] { + return rows.filter((row) => { + for (const cell of row) { + if (cell.type !== "entity") { + continue; + } + const url = cell.value.url; + if (!url) { + continue; + } + let uri: string | undefined; + if ( + url.type === "wholeFileLocation" || + url.type === "lineColumnLocation" + ) { + uri = url.uri; + } + if (uri !== undefined && normalizeFileUri(uri) === normalizedFileUri) { + return true; + } + } + return false; + }); +} diff --git a/extensions/ql-vscode/src/local-queries/run-query.ts b/extensions/ql-vscode/src/local-queries/run-query.ts new file mode 100644 index 00000000000..06ed7037280 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/run-query.ts @@ -0,0 +1,77 @@ +import type { CancellationToken } from "vscode"; +import type { ProgressCallback } from "../common/vscode/progress"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { CoreCompletedQuery, QueryRunner } from "../query-server"; +import { TeeLogger, showAndLogExceptionWithTelemetry } from "../common/logging"; +import { QueryResultType } from "../query-server/messages"; +import { extLogger } from "../common/logging/vscode"; +import { telemetryListener } from "../common/vscode/telemetry"; +import { redactableError } from "../common/errors"; +import { basename } from "path"; + +type RunQueryOptions = { + queryRunner: QueryRunner; + databaseItem: DatabaseItem; + queryPath: string; + queryStorageDir: string; + additionalPacks: string[]; + extensionPacks: string[] | undefined; + progress: ProgressCallback; + token: CancellationToken; +}; + +export async function runQuery({ + queryRunner, + databaseItem, + queryPath, + queryStorageDir, + additionalPacks, + extensionPacks, + progress, + token, +}: RunQueryOptions): Promise { + // Create a query run to execute + const queryRun = queryRunner.createQueryRun( + databaseItem.databaseUri.fsPath, + [ + { + queryPath, + outputBaseName: "results", + quickEvalPosition: undefined, + quickEvalCountOnly: false, + }, + ], + false, + additionalPacks, + extensionPacks, + {}, + queryStorageDir, + basename(queryPath), + undefined, + ); + + const teeLogger = new TeeLogger( + queryRunner.logger, + queryRun.outputDir.logPath, + ); + + try { + const completedQuery = await queryRun.evaluate(progress, token, teeLogger); + const result = completedQuery.results.get(queryPath); + + if (result?.resultType !== QueryResultType.SUCCESS) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError`Failed to run ${basename(queryPath)} query: ${ + result?.message ?? "No message" + }`, + ); + return; + } + + return completedQuery; + } finally { + teeLogger.dispose(); + } +} diff --git a/extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts b/extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts new file mode 100644 index 00000000000..f99eb8d2fda --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts @@ -0,0 +1,517 @@ +import { dirname, join } from "path"; +import { Uri, window, window as Window, workspace } from "vscode"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import type { QueryLanguage } from "../common/query-language"; +import { getLanguageDisplayName } from "../common/query-language"; +import { + getFirstWorkspaceFolder, + getOnDiskWorkspaceFolders, +} from "../common/vscode/workspace-folders"; +import { asError, getErrorMessage } from "../common/helpers-pure"; +import { QlPackGenerator } from "./qlpack-generator"; +import type { + DatabaseItem, + DatabaseManager, +} from "../databases/local-databases"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { + UserCancellationException, + withProgress, +} from "../common/vscode/progress"; +import type { DatabaseFetcher } from "../databases/database-fetcher"; +import { + getQlPackLocation, + isCodespacesTemplate, + setQlPackLocation, +} from "../config"; +import { lstat, pathExists } from "fs-extra"; +import { askForLanguage } from "../codeql-cli/query-language"; +import { showInformationMessageWithAction } from "../common/vscode/dialog"; +import { redactableError } from "../common/errors"; +import type { App } from "../common/app"; +import type { QueryTreeViewItem } from "../queries-panel/query-tree-view-item"; +import { containsPath, pathsEqual } from "../common/files"; +import { getQlPackFilePath } from "../common/ql"; +import { getQlPackLanguage } from "../common/qlpack-language"; + +type QueryLanguagesToDatabaseMap = Record; + +export const QUERY_LANGUAGE_TO_DATABASE_REPO: QueryLanguagesToDatabaseMap = { + actions: "github/codeql", + cpp: "google/brotli", + csharp: "restsharp/RestSharp", + go: "spf13/cobra", + java: "projectlombok/lombok", + javascript: "d3/d3", + python: "pallets/flask", + ruby: "jekyll/jekyll", + rust: "sharkdp/bat", + swift: "Alamofire/Alamofire", +}; + +export class SkeletonQueryWizard { + private fileName = "example.ql"; + private qlPackStoragePath: string | undefined; + private queryStoragePath: string | undefined; + private downloadPromise: Promise | undefined; + + constructor( + private readonly cliServer: CodeQLCliServer, + private readonly progress: ProgressCallback, + private readonly app: App, + private readonly databaseManager: DatabaseManager, + private readonly databaseFetcher: DatabaseFetcher, + private readonly selectedItems: readonly QueryTreeViewItem[], + private language: QueryLanguage | undefined = undefined, + ) {} + + /** + * Wait for the download process to complete by waiting for the user to select + * either "Download database" or closing the dialog. This is used for testing. + */ + public async waitForDownload() { + if (this.downloadPromise) { + await this.downloadPromise; + } + } + + public async execute() { + // First try detecting the language based on the existing qlpacks. + // This will override the selected language if there is an existing query pack. + const detectedLanguage = await this.detectLanguage(); + if (detectedLanguage) { + this.language = detectedLanguage; + } + + // If no existing qlpack was found, we need to ask the user for the language + if (!this.language) { + // show quick pick to choose language + this.language = await this.chooseLanguage(); + } + + if (!this.language) { + return; + } + + let createSkeletonQueryPack: boolean = false; + + if (!this.qlPackStoragePath) { + // This means no existing qlpack was detected in the selected folder, so we need + // to find a new location to store the qlpack. This new location could potentially + // already exist. + const storagePath = await this.determineStoragePath(); + this.qlPackStoragePath = join( + storagePath, + `codeql-custom-queries-${this.language}`, + ); + + // Try to detect if there is already a qlpack in this location. We will assume that + // the user hasn't changed the language of the qlpack. + const qlPackPath = await getQlPackFilePath(this.qlPackStoragePath); + + // If we are creating or using a qlpack in the user's selected folder, we will also + // create the query in that folder + this.queryStoragePath = this.qlPackStoragePath; + + createSkeletonQueryPack = qlPackPath === undefined; + } else { + // A query pack was detected in the selected folder or one of its ancestors, so we + // directly use the selected folder as the storage path for the query. + this.queryStoragePath = await this.determineStoragePathFromSelection(); + } + + if (createSkeletonQueryPack) { + // generate a new skeleton QL pack with query file + await this.createQlPack(); + } else { + // just create a new example query file in skeleton QL pack + await this.createExampleFile(); + } + + // open the query file + try { + await this.openExampleFile(); + } catch (e) { + void this.app.logger.log( + `Could not open example query file: ${getErrorMessage(e)}`, + ); + } + + // select existing database for language or download a new one + await this.selectOrDownloadDatabase(); + } + + private async openExampleFile() { + if (this.queryStoragePath === undefined) { + throw new Error("Path to folder is undefined"); + } + + const queryFileUri = Uri.file(join(this.queryStoragePath, this.fileName)); + + void workspace.openTextDocument(queryFileUri).then((doc) => { + void Window.showTextDocument(doc, { + preview: false, + }); + }); + } + + public async determineStoragePath(): Promise { + if (this.selectedItems.length === 0) { + return this.determineRootStoragePath(); + } + + return this.determineStoragePathFromSelection(); + } + + private async determineStoragePathFromSelection(): Promise { + // Just like VS Code's "New File" command, if the user has selected multiple files/folders in the queries panel, + // we will create the new file in the same folder as the first selected item. + // See https://github.com/microsoft/vscode/blob/a8b7239d0311d4915b57c837972baf4b01394491/src/vs/workbench/contrib/files/browser/fileActions.ts#L893-L900 + const selectedItem = this.selectedItems[0]; + + const path = selectedItem.path; + + // We use stat to protect against outdated query tree items + const fileStat = await lstat(path); + + if (fileStat.isDirectory()) { + return path; + } + + return dirname(path); + } + + public async determineRootStoragePath() { + const firstStorageFolder = getFirstWorkspaceFolder(); + + if (isCodespacesTemplate()) { + return firstStorageFolder; + } + + let storageFolder = getQlPackLocation(); + + if (storageFolder === undefined || !(await pathExists(storageFolder))) { + storageFolder = await Window.showInputBox({ + title: + "Please choose a folder in which to create your new query pack. You can change this in the extension settings.", + value: firstStorageFolder, + ignoreFocusOut: true, + }); + } + + if (storageFolder === undefined) { + throw new UserCancellationException("No storage folder entered."); + } + + if (!(await pathExists(storageFolder))) { + throw new UserCancellationException( + "Invalid folder. Must be a folder that already exists.", + ); + } + + await setQlPackLocation(storageFolder); + return storageFolder; + } + + private async detectLanguage(): Promise { + if (this.selectedItems.length < 1) { + return undefined; + } + + this.progress({ + message: "Resolving existing query packs", + step: 1, + maxStep: 3, + }); + + const storagePath = await this.determineStoragePathFromSelection(); + + const queryPacks = await this.cliServer.resolveQlpacks( + getOnDiskWorkspaceFolders(), + false, + "query", + ); + + const matchingQueryPacks = Object.values(queryPacks) + .map((paths) => paths.find((path) => containsPath(path, storagePath))) + .filter((path): path is string => path !== undefined) + // Find the longest matching path + .sort((a, b) => b.length - a.length); + + if (matchingQueryPacks.length === 0) { + return undefined; + } + + const matchingQueryPackPath = matchingQueryPacks[0]; + + const qlPackPath = await getQlPackFilePath(matchingQueryPackPath); + if (!qlPackPath) { + return undefined; + } + + const language = await getQlPackLanguage(qlPackPath); + if (language) { + this.qlPackStoragePath = matchingQueryPackPath; + } + + return language; + } + + private async chooseLanguage() { + this.progress({ + message: "Choose language", + step: 1, + maxStep: 3, + }); + + return await askForLanguage(this.cliServer, true); + } + + private async createQlPack() { + this.progress({ + message: "Creating skeleton QL pack around query", + step: 2, + maxStep: 3, + }); + + try { + const qlPackGenerator = this.createQlPackGenerator(); + + await qlPackGenerator.generate(); + } catch (e) { + void this.app.logger.log( + `Could not create skeleton QL pack: ${getErrorMessage(e)}`, + ); + } + } + + private async createExampleFile() { + this.progress({ + message: + "Skeleton query pack already exists. Creating additional query example file.", + step: 2, + maxStep: 3, + }); + + try { + const qlPackGenerator = this.createQlPackGenerator(); + + this.fileName = await this.determineNextFileName(); + await qlPackGenerator.createExampleQlFile(this.fileName); + } catch (e) { + void this.app.logger.log( + `Could not create query example file: ${getErrorMessage(e)}`, + ); + } + } + + private async determineNextFileName(): Promise { + if (this.queryStoragePath === undefined) { + throw new Error("Query storage path is undefined"); + } + + const folderUri = Uri.file(this.queryStoragePath); + const files = await workspace.fs.readDirectory(folderUri); + // If the example.ql file doesn't exist yet, use that name + if (!files.some(([filename, _fileType]) => filename === this.fileName)) { + return this.fileName; + } + + const qlFiles = files.filter(([filename, _fileType]) => + filename.match(/^example[0-9]*\.ql$/), + ); + + return `example${qlFiles.length + 1}.ql`; + } + + private async promptDownloadDatabase() { + if (this.language === undefined) { + throw new Error("Language is undefined"); + } + + const openFileLink = this.openFileMarkdownLink; + + const displayLanguage = getLanguageDisplayName(this.language); + const action = await showInformationMessageWithAction( + `New CodeQL query for ${displayLanguage} ${openFileLink} created, but no CodeQL databases for ${displayLanguage} were detected in your workspace. Would you like to download a CodeQL database for ${displayLanguage} to analyze with ${openFileLink}?`, + "Download database", + ); + + if (action) { + void withProgress(async (progress) => { + try { + await this.downloadDatabase(progress); + } catch (e) { + if (e instanceof UserCancellationException) { + return; + } + + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError( + asError(e), + )`An error occurred while downloading the GitHub repository: ${getErrorMessage( + e, + )}`, + ); + } + }); + } + } + + private async downloadDatabase(progress: ProgressCallback) { + if (this.language === undefined) { + throw new Error("Language is undefined"); + } + + progress({ + message: "Downloading database", + step: 1, + maxStep: 2, + }); + + const githubRepoNwo = QUERY_LANGUAGE_TO_DATABASE_REPO[this.language]; + await this.databaseFetcher.promptImportGithubDatabase( + progress, + this.language, + githubRepoNwo, + ); + } + + private async selectOrDownloadDatabase() { + if (this.language === undefined) { + throw new Error("Language is undefined"); + } + + const existingDatabaseItem = + await SkeletonQueryWizard.findExistingDatabaseItem( + this.language, + this.databaseManager.databaseItems, + ); + + if (existingDatabaseItem) { + const openFileLink = this.openFileMarkdownLink; + + if (this.databaseManager.currentDatabaseItem !== existingDatabaseItem) { + // select the found database + await this.databaseManager.setCurrentDatabaseItem(existingDatabaseItem); + + const displayLanguage = getLanguageDisplayName(this.language); + void window.showInformationMessage( + `New CodeQL query for ${displayLanguage} ${openFileLink} created. We have automatically selected your existing CodeQL ${displayLanguage} database ${existingDatabaseItem.name} for you to analyze with ${openFileLink}.`, + ); + } + } else { + // download new database and select it + this.downloadPromise = this.promptDownloadDatabase().finally(() => { + this.downloadPromise = undefined; + }); + } + } + + private get openFileMarkdownLink() { + if (this.queryStoragePath === undefined) { + throw new Error("QL Pack storage path is undefined"); + } + + const queryPath = join(this.queryStoragePath, this.fileName); + const queryPathUri = Uri.file(queryPath); + + const openFileArgs = [queryPathUri.toString(true)]; + const queryString = encodeURI(JSON.stringify(openFileArgs)); + return `[${this.fileName}](command:vscode.open?${queryString})`; + } + + private createQlPackGenerator() { + if (this.qlPackStoragePath === undefined) { + throw new Error("QL pack storage path is undefined"); + } + if (this.queryStoragePath === undefined) { + throw new Error("Query storage path is undefined"); + } + if (this.language === undefined) { + throw new Error("Language is undefined"); + } + + const parentFolder = dirname(this.qlPackStoragePath); + + // Only include the folder name in the qlpack name if the qlpack is not in the root of the workspace. + const includeFolderNameInQlpackName = !getOnDiskWorkspaceFolders().some( + (workspaceFolder) => pathsEqual(workspaceFolder, parentFolder), + ); + + return new QlPackGenerator( + this.language, + this.cliServer, + this.qlPackStoragePath, + this.queryStoragePath, + includeFolderNameInQlpackName, + ); + } + + public static async findDatabaseItemByNwo( + language: string, + databaseNwo: string, + databaseItems: readonly DatabaseItem[], + ): Promise { + const dbs = databaseItems.filter( + (db) => db.language === language && db.name === databaseNwo, + ); + + return dbs.pop(); + } + + public static async findDatabaseItemByLanguage( + language: string, + databaseItems: readonly DatabaseItem[], + ): Promise { + const dbs = databaseItems.filter((db) => db.language === language); + + return dbs.pop(); + } + + public static async findExistingDatabaseItem( + language: string, + databaseItems: readonly DatabaseItem[], + ): Promise { + const defaultDatabaseNwo = QUERY_LANGUAGE_TO_DATABASE_REPO[language]; + + const dbItems = + await SkeletonQueryWizard.sortDatabaseItemsByDateAdded(databaseItems); + + const defaultDatabaseItem = await SkeletonQueryWizard.findDatabaseItemByNwo( + language, + defaultDatabaseNwo, + dbItems, + ); + + if (defaultDatabaseItem !== undefined) { + return defaultDatabaseItem; + } + + return await SkeletonQueryWizard.findDatabaseItemByLanguage( + language, + dbItems, + ); + } + + public static async sortDatabaseItemsByDateAdded( + databaseItems: readonly DatabaseItem[], + ) { + const validDbItems = databaseItems.filter((db) => db.error === undefined); + + return validDbItems.sort((a, b) => { + if (a.dateAdded === undefined) { + return -1; + } + + if (b.dateAdded === undefined) { + return 1; + } + + return a.dateAdded - b.dateAdded; + }); + } +} diff --git a/extensions/ql-vscode/src/local-queries/standard-queries.ts b/extensions/ql-vscode/src/local-queries/standard-queries.ts new file mode 100644 index 00000000000..6288cb05247 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/standard-queries.ts @@ -0,0 +1,77 @@ +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { QLPACK_FILENAMES, QLPACK_LOCK_FILENAMES } from "../common/ql"; +import { basename, dirname, resolve } from "path"; +import { extLogger } from "../common/logging/vscode"; +import { promises } from "fs-extra"; +import type { BaseLogger } from "../common/logging"; + +type LockFileForStandardQueryResult = { + cleanup?: () => Promise; +}; + +/** + * Create a temporary query suite for a given query living within the standard library packs. + * + * This will create a lock file so the CLI can run the query without having the ql submodule. + */ +export async function createLockFileForStandardQuery( + cli: CodeQLCliServer, + queryPath: string, + logger: BaseLogger = extLogger, +): Promise { + // These queries live within the standard library packs. + // This simplifies distribution (you don't need the standard query pack to use the AST viewer), + // but if the library pack doesn't have a lockfile, we won't be able to find + // other pack dependencies of the library pack. + + // Work out the enclosing pack. + const packContents = await cli.packPacklist(queryPath, false); + const packFilePath = packContents.find((p) => + QLPACK_FILENAMES.includes(basename(p)), + ); + if (packFilePath === undefined) { + // Should not happen; we already resolved this query. + throw new Error( + `Could not find a CodeQL pack file for the pack enclosing the contextual query ${queryPath}`, + ); + } + const packPath = dirname(packFilePath); + const lockFilePath = packContents.find((p) => + QLPACK_LOCK_FILENAMES.includes(basename(p)), + ); + + let cleanup: (() => Promise) | undefined = undefined; + + if (!lockFilePath) { + // No lock file, likely because this library pack is in the package cache. + // Create a lock file so that we can resolve dependencies and library path + // for the contextual query. + void logger.log( + `Library pack ${packPath} is missing a lock file; creating a temporary lock file`, + ); + await cli.packResolveDependencies(packPath); + + cleanup = async () => { + const tempLockFilePath = resolve(packPath, "codeql-pack.lock.yml"); + void logger.log( + `Deleting temporary package lock file at ${tempLockFilePath}`, + ); + // It's fine if the file doesn't exist. + await promises.rm(resolve(packPath, "codeql-pack.lock.yml"), { + force: true, + }); + }; + + // Clear CLI server pack cache before installing dependencies, + // so that it picks up the new lock file, not the previously cached pack. + void logger.log("Clearing the CodeQL CLI server's pack cache"); + await cli.clearCache(); + // Install dependencies. + void logger.log( + `Installing package dependencies for library pack ${packPath}`, + ); + await cli.packInstall(packPath); + } + + return { cleanup }; +} diff --git a/extensions/ql-vscode/src/local-queries/webview.ts b/extensions/ql-vscode/src/local-queries/webview.ts new file mode 100644 index 00000000000..f0346178db0 --- /dev/null +++ b/extensions/ql-vscode/src/local-queries/webview.ts @@ -0,0 +1,20 @@ +import type { Uri, WebviewPanel } from "vscode"; + +/** + * Whether to force webview to reveal + */ +export enum WebviewReveal { + Forced, + NotForced, +} + +/** + * Converts a filesystem URI into a webview URI string that the given panel + * can use to read the file. + */ +export function fileUriToWebviewUri( + panel: WebviewPanel, + fileUriOnDisk: Uri, +): string { + return panel.webview.asWebviewUri(fileUriOnDisk).toString(); +} diff --git a/extensions/ql-vscode/src/log-insights/join-order.ts b/extensions/ql-vscode/src/log-insights/join-order.ts new file mode 100644 index 00000000000..4bf85c89402 --- /dev/null +++ b/extensions/ql-vscode/src/log-insights/join-order.ts @@ -0,0 +1,493 @@ +import { readJsonlFile } from "../common/jsonl-reader"; +import type { EvaluationLogProblemReporter } from "./log-scanner"; +import type { + InLayer, + ComputeRecursive, + SummaryEvent, + PipelineRun, + ComputeSimple, +} from "./log-summary"; + +/** + * Like `max`, but returns 0 if no meaningful maximum can be computed. + */ +function safeMax(it?: Iterable) { + const m = Math.max(...(it || [])); + return Number.isFinite(m) ? m : 0; +} + +function getDependentPredicates(operations: string[]): string[] { + const id = String.raw`[0-9a-zA-Z:#_\./]+`; + const idWithAngleBrackets = String.raw`[0-9a-zA-Z:#_<>\./]+`; + const quotedId = String.raw`\`[^\`\r\n]*\``; + const regexps = [ + // SCAN id + String.raw`SCAN\s+(${id}|${quotedId})\s`, + // JOIN id WITH id + String.raw`JOIN\s+(${id}|${quotedId})\s+WITH\s+(${id}|${quotedId})\s`, + // JOIN WITH id + String.raw`JOIN\s+WITH\s+(${id}|${quotedId})\s`, + // AGGREGATE id, id + String.raw`AGGREGATE\s+(${id}|${quotedId})\s*,\s+(${id}|${quotedId})`, + // id AND NOT id + String.raw`(${id}|${quotedId})\s+AND\s+NOT\s+(${id}|${quotedId})`, + // AND NOT id + String.raw`AND\s+NOT\s+(${id}|${quotedId})`, + // INVOKE HIGHER-ORDER RELATION rel ON + String.raw`INVOKE\s+HIGHER-ORDER\s+RELATION\s[^\s]+\sON\s+<(${idWithAngleBrackets}|${quotedId})((?:,${idWithAngleBrackets}|,${quotedId})*)>`, + // SELECT id + String.raw`SELECT\s+(${id}|${quotedId})`, + // REWRITE id WITH + String.raw`REWRITE\s+(${id}|${quotedId})\s+WITH\s`, + // id UNION id UNION ... UNION id + String.raw`(${id}|${quotedId})((?:\s+UNION\s+${id}|${quotedId})+)`, + ]; + const r = new RegExp( + `${ + String.raw`\{[0-9]+\}\s+(?:[0-9a-zA-Z]+\s=|\|)\s(?:` + regexps.join("|") + })`, + ); + return operations.flatMap((operation) => { + const matches = r.exec(operation.trim()) || []; + return matches + .slice(1) // Skip the first group as it's just the entire string + .filter((x) => !!x) + .flatMap((x) => x.split(",")) // Group 2 in the INVOKE HIGHER_ORDER RELATION case is a comma-separated list of identifiers. + .flatMap((x) => x.split(" UNION ")) // Split n-ary unions into individual arguments. + .filter((x) => !x.match("r[0-9]+|PRIMITIVE")) // Only keep the references to predicates. + .filter((x) => !!x) // Remove empty strings + .map((x) => + x.startsWith("`") && x.endsWith("`") ? x.substring(1, x.length - 1) : x, + ); // Remove quotes from quoted identifiers + }); +} + +function getMainHash(event: InLayer | ComputeRecursive): string { + switch (event.evaluationStrategy) { + case "IN_LAYER": + return event.mainHash; + case "COMPUTE_RECURSIVE": + return event.raHash; + } +} + +/** + * Sum arrays a and b element-wise. The shorter array is padded with 0s if the arrays are not the same length. + */ +function pointwiseSum( + a: Int32Array, + b: Int32Array, + problemReporter: EvaluationLogProblemReporter, +): Int32Array { + function reportIfInconsistent(ai: number, bi: number) { + if (ai === -1 && bi !== -1) { + problemReporter.log( + `Operation was not evaluated in the first pipeline, but it was evaluated in the accumulated pipeline (with tuple count ${bi}).`, + ); + } + if (ai !== -1 && bi === -1) { + problemReporter.log( + `Operation was evaluated in the first pipeline (with tuple count ${ai}), but it was not evaluated in the accumulated pipeline.`, + ); + } + } + + const length = Math.max(a.length, b.length); + const result = new Int32Array(length); + for (let i = 0; i < length; i++) { + const ai = a[i] || 0; + const bi = b[i] || 0; + // -1 is used to represent the absence of a tuple count for a line in the pretty-printed RA (e.g. an empty line), so we ignore those. + if (i < a.length && i < b.length && (ai === -1 || bi === -1)) { + result[i] = -1; + reportIfInconsistent(ai, bi); + } else { + result[i] = ai + bi; + } + } + return result; +} + +function computeJoinOrderBadness( + maxTupleCount: number, + maxDependentPredicateSize: number, + resultSize: number, +): number { + return maxTupleCount / Math.max(maxDependentPredicateSize, resultSize); +} + +/** + * A bucket contains the pointwise sum of the tuple counts, result sizes and dependent predicate sizes + * For each (predicate, order) in an SCC, we will compute a bucket. + */ +interface Bucket { + tupleCounts: Int32Array; + resultSize: number; + dependentPredicateSizes: Map; +} + +class PredicateSizeScanner { + // Map a predicate hash to its result size + readonly predicateSizes = new Map(); + readonly layerEvents = new Map>(); + + onEvent(event: SummaryEvent): void { + if ( + event.completionType !== undefined && + event.completionType !== "SUCCESS" + ) { + return; // Skip any evaluation that wasn't successful + } + switch (event.evaluationStrategy) { + case "EXTENSIONAL": + case "COMPUTED_EXTENSIONAL": + case "COMPUTE_SIMPLE": + case "CACHACA": + case "CACHE_HIT": { + this.predicateSizes.set(event.raHash, event.resultSize); + break; + } + case "SENTINEL_EMPTY": { + this.predicateSizes.set(event.raHash, 0); + break; + } + case "COMPUTE_RECURSIVE": + case "IN_LAYER": { + this.predicateSizes.set(event.raHash, event.resultSize); + // layerEvents are indexed by the mainHash. + const hash = getMainHash(event); + if (!this.layerEvents.has(hash)) { + this.layerEvents.set(hash, []); + } + this.layerEvents.get(hash)!.push(event); + break; + } + } + } +} + +class JoinOrderScanner { + constructor( + private readonly predicateSizes: Map, + private readonly layerEvents: Map< + string, + Array + >, + private readonly problemReporter: EvaluationLogProblemReporter, + private readonly warningThreshold: number, + ) {} + + public onEvent(event: SummaryEvent): void { + if ( + event.completionType !== undefined && + event.completionType !== "SUCCESS" + ) { + return; // Skip any evaluation that wasn't successful + } + switch (event.evaluationStrategy) { + case "COMPUTE_SIMPLE": { + if (!event.pipelineRuns) { + // skip if the optional pipelineRuns field is not present. + break; + } + // Compute the badness metric for a non-recursive predicate. The metric in this case is defined as: + // badness = (max tuple count in the pipeline) / (largest predicate this pipeline depends on) + const resultSize = event.resultSize; + + // There is only one entry in `pipelineRuns` if it's a non-recursive predicate. + const { maxTupleCount, maxDependentPredicateSize } = + this.badnessInputsForNonRecursiveDelta(event.pipelineRuns[0], event); + + if (maxDependentPredicateSize > 0) { + const metric = computeJoinOrderBadness( + maxTupleCount, + maxDependentPredicateSize, + resultSize, + ); + if (metric >= this.warningThreshold) { + const message = `'${event.predicateName}@${event.raHash.substring( + 0, + 8, + )}' has an inefficient join order. Its join order metric is ${metric.toFixed( + 2, + )}, which is larger than the threshold of ${this.warningThreshold.toFixed( + 2, + )}.`; + this.problemReporter.reportProblemNonRecursive( + event.predicateName, + event.raHash, + message, + ); + } + } + break; + } + + case "COMPUTE_RECURSIVE": { + // Compute the badness metric for a recursive predicate for each ordering. + const sccMetricInput = this.badnessInputsForRecursiveDelta(event); + // Loop through each predicate in the SCC + sccMetricInput.forEach((hashToOrderToBucket, predicateName) => { + hashToOrderToBucket.forEach((orderToBucket, raHash) => { + // Loop through each ordering of the predicate. + orderToBucket.forEach((bucket, raReference) => { + const maxDependentPredicateSize = Math.max( + ...bucket.dependentPredicateSizes.values(), + ); + + if (maxDependentPredicateSize > 0) { + const maxTupleCount = Math.max(...bucket.tupleCounts); + const resultSize = bucket.resultSize; + const metric = computeJoinOrderBadness( + maxTupleCount, + maxDependentPredicateSize, + resultSize, + ); + if (metric >= this.warningThreshold) { + const message = `The ${raReference} pipeline for '${predicateName}@${raHash.substring( + 0, + 8, + )}' has an inefficient join order. Its join order metric is ${metric.toFixed( + 2, + )}, which is larger than the threshold of ${this.warningThreshold.toFixed( + 2, + )}.`; + this.problemReporter.reportProblemForRecursionSummary( + predicateName, + raHash, + raReference, + message, + ); + } + } + }); + }); + }); + break; + } + } + } + + /** + * Iterate through an SCC with main node `event`. + */ + private iterateSCC( + event: ComputeRecursive, + func: ( + inLayerEvent: ComputeRecursive | InLayer, + run: PipelineRun, + iteration: number, + ) => void, + ): void { + const sccEvents = this.layerEvents.get(event.raHash)!; + const nextPipeline: number[] = new Array(sccEvents.length).fill(0); + + const maxIteration = Math.max( + ...sccEvents.map((e) => e.predicateIterationMillis.length), + ); + + for (let iteration = 0; iteration < maxIteration; ++iteration) { + // Loop through each predicate in this iteration + for (let predicate = 0; predicate < sccEvents.length; ++predicate) { + const inLayerEvent = sccEvents[predicate]; + const iterationTime = + inLayerEvent.predicateIterationMillis.length <= iteration + ? -1 + : inLayerEvent.predicateIterationMillis[iteration]; + if (iterationTime !== -1) { + const run: PipelineRun = + inLayerEvent.pipelineRuns[nextPipeline[predicate]++]; + func(inLayerEvent, run, iteration); + } + } + } + } + + /** + * Compute the maximum tuple count and maximum dependent predicate size for a non-recursive pipeline + */ + private badnessInputsForNonRecursiveDelta( + pipelineRun: PipelineRun, + event: ComputeSimple, + ): { maxTupleCount: number; maxDependentPredicateSize: number } { + const dependentPredicateSizes = Object.values(event.dependencies).map( + (hash) => this.predicateSizes.get(hash) ?? 0, // Should always be present, but zero is a safe default. + ); + const maxDependentPredicateSize = safeMax(dependentPredicateSizes); + return { + maxTupleCount: safeMax(pipelineRun.counts), + maxDependentPredicateSize, + }; + } + + private prevDeltaSizes( + event: ComputeRecursive, + predicate: string, + i: number, + ) { + // If an iteration isn't present in the map it means it was skipped because the optimizer + // inferred that it was empty. So its size is 0. + return this.curDeltaSizes(event, predicate, i - 1); + } + + private curDeltaSizes(event: ComputeRecursive, predicate: string, i: number) { + // If an iteration isn't present in the map it means it was skipped because the optimizer + // inferred that it was empty. So its size is 0. + return ( + this.layerEvents + .get(event.raHash) + ?.find((x) => x.predicateName === predicate)?.deltaSizes[i] ?? 0 + ); + } + + /** + * Compute the metric dependent predicate sizes and the result size for a predicate in an SCC. + */ + private badnessInputsForLayer( + event: ComputeRecursive, + inLayerEvent: InLayer | ComputeRecursive, + raReference: string, + iteration: number, + ) { + const dependentPredicates = getDependentPredicates( + inLayerEvent.ra[raReference], + ); + let dependentPredicateSizes: Map; + // We treat the base case as a non-recursive pipeline. In that case, the dependent predicates are + // the dependencies of the base case and the cur_deltas. + if (raReference === "base") { + dependentPredicateSizes = dependentPredicates + .map((pred): [string, number] => { + // A base case cannot contain a `prev_delta`, but it can contain a `cur_delta`. + let size = 0; + if (pred.endsWith("#cur_delta")) { + size = this.curDeltaSizes( + event, + pred.slice(0, -"#cur_delta".length), + iteration, + ); + } else { + const hash = event.dependencies[pred]; + size = this.predicateSizes.get(hash)!; + } + return [pred, size]; + }) + .reduce((acc, [pred, size]) => acc.set(pred, size), new Map()); + } else { + // It's a non-base case in a recursive pipeline. In that case, the dependent predicates are + // only the prev_deltas. + dependentPredicateSizes = dependentPredicates + .flatMap((pred) => { + // If it's actually a prev_delta + if (pred.endsWith("#prev_delta")) { + // Return the predicate without the #prev_delta suffix. + return [pred.slice(0, -"#prev_delta".length)]; + } else { + // Not a recursive delta. Skip it. + return []; + } + }) + .map((prev): [string, number] => { + const size = this.prevDeltaSizes(event, prev, iteration); + return [prev, size]; + }) + .reduce((acc, [pred, size]) => acc.set(pred, size), new Map()); + } + + const deltaSize = inLayerEvent.deltaSizes[iteration]; + return { dependentPredicateSizes, deltaSize }; + } + + /** + * Compute the metric input for all the events in a SCC that starts with main node `event` + */ + private badnessInputsForRecursiveDelta( + event: ComputeRecursive, + ): Map>> { + // nameToHashToOrderToBucket : predicate name -> RA hash -> ordering (i.e., standard, order_500000, etc.) -> bucket + const nameToHashToOrderToBucket = new Map< + string, + Map> + >(); + + // Iterate through the SCC and compute the metric inputs + this.iterateSCC(event, (inLayerEvent, run, iteration) => { + const raReference = run.raReference; + const predicateName = inLayerEvent.predicateName; + if (!nameToHashToOrderToBucket.has(predicateName)) { + nameToHashToOrderToBucket.set(predicateName, new Map()); + } + const hashToOrderToBucket = nameToHashToOrderToBucket.get(predicateName)!; + const raHash = inLayerEvent.raHash; + if (!hashToOrderToBucket.has(raHash)) { + hashToOrderToBucket.set(raHash, new Map()); + } + const orderToBucket = hashToOrderToBucket.get(raHash)!; + if (!orderToBucket.has(raReference)) { + orderToBucket.set(raReference, { + tupleCounts: new Int32Array(0), + resultSize: 0, + dependentPredicateSizes: new Map(), + }); + } + + const { dependentPredicateSizes, deltaSize } = this.badnessInputsForLayer( + event, + inLayerEvent, + raReference, + iteration, + ); + + const bucket = orderToBucket.get(raReference)!; + // Pointwise sum the tuple counts + const newTupleCounts = pointwiseSum( + bucket.tupleCounts, + new Int32Array(run.counts), + this.problemReporter, + ); + const resultSize = bucket.resultSize + deltaSize; + + // Pointwise sum the deltas. + const newDependentPredicateSizes = new Map( + bucket.dependentPredicateSizes, + ); + for (const [pred, size] of dependentPredicateSizes) { + newDependentPredicateSizes.set( + pred, + (newDependentPredicateSizes.get(pred) ?? 0) + size, + ); + } + + orderToBucket.set(raReference, { + tupleCounts: newTupleCounts, + resultSize, + dependentPredicateSizes: newDependentPredicateSizes, + }); + }); + return nameToHashToOrderToBucket; + } +} + +export async function scanAndReportJoinOrderProblems( + jsonSummaryLocation: string, + problemReporter: EvaluationLogProblemReporter, + warningThreshold: number, +) { + // Do two passes over the summary JSON. The first pass collects the sizes of predicates, along + // with collecting layer events for each recursive SCC. + const predicateSizeScanner = new PredicateSizeScanner(); + await readJsonlFile(jsonSummaryLocation, async (obj) => { + predicateSizeScanner.onEvent(obj); + }); + + // The second pass takes the information from the first pass, computes join order scores, and reports those that exceed the threshold. + const joinOrderScanner = new JoinOrderScanner( + predicateSizeScanner.predicateSizes, + predicateSizeScanner.layerEvents, + problemReporter, + warningThreshold, + ); + await readJsonlFile(jsonSummaryLocation, async (obj) => { + joinOrderScanner.onEvent(obj); + }); +} diff --git a/extensions/ql-vscode/src/log-insights/log-scanner-service.ts b/extensions/ql-vscode/src/log-insights/log-scanner-service.ts new file mode 100644 index 00000000000..e8e79d60bc5 --- /dev/null +++ b/extensions/ql-vscode/src/log-insights/log-scanner-service.ts @@ -0,0 +1,161 @@ +import { Diagnostic, DiagnosticSeverity, languages, Range, Uri } from "vscode"; +import { DisposableObject } from "../common/disposable-object"; +import type { QueryHistoryInfo } from "../query-history/query-history-info"; +import type { EvaluationLogProblemReporter } from "./log-scanner"; +import type { PipelineInfo, SummarySymbols } from "./summary-parser"; +import { readFile } from "fs-extra"; +import { extLogger } from "../common/logging/vscode"; +import type { QueryHistoryManager } from "../query-history/query-history-manager"; +import { scanAndReportJoinOrderProblems } from "./join-order"; +import { joinOrderWarningThreshold } from "../config"; + +/** + * Compute the key used to find a predicate in the summary symbols. + * @param name The name of the predicate. + * @param raHash The RA hash of the predicate. + * @returns The key of the predicate, consisting of `name@shortHash`, where `shortHash` is the first + * eight characters of `raHash`. + */ +function predicateSymbolKey(name: string, raHash: string): string { + return `${name}@${raHash.substring(0, 8)}`; +} + +/** + * Implementation of `EvaluationLogProblemReporter` that generates `Diagnostic` objects to display + * in the VS Code "Problems" view. + */ +class ProblemReporter implements EvaluationLogProblemReporter { + public readonly diagnostics: Diagnostic[] = []; + + constructor(private readonly symbols: SummarySymbols | undefined) {} + + public reportProblemNonRecursive( + predicateName: string, + raHash: string, + message: string, + ): void { + const nameWithHash = predicateSymbolKey(predicateName, raHash); + const predicateSymbol = this.symbols?.predicates[nameWithHash]; + let predicateInfo: PipelineInfo | undefined = undefined; + if (predicateSymbol !== undefined) { + predicateInfo = predicateSymbol.iterations[0]; + } + if (predicateInfo !== undefined) { + const range = new Range( + predicateInfo.raStartLine, + 0, + predicateInfo.raEndLine + 1, + 0, + ); + this.diagnostics.push( + new Diagnostic(range, message, DiagnosticSeverity.Error), + ); + } + } + + public reportProblemForRecursionSummary( + predicateName: string, + raHash: string, + order: string, + message: string, + ): void { + const nameWithHash = predicateSymbolKey(predicateName, raHash); + const predicateSymbol = this.symbols?.predicates[nameWithHash]; + let predicateInfo: PipelineInfo | undefined = undefined; + if (predicateSymbol !== undefined) { + predicateInfo = predicateSymbol.recursionSummaries[order]; + } + if (predicateInfo !== undefined) { + const range = new Range( + predicateInfo.raStartLine, + 0, + predicateInfo.raEndLine + 1, + 0, + ); + this.diagnostics.push( + new Diagnostic(range, message, DiagnosticSeverity.Error), + ); + } + } + + public log(message: string): void { + void extLogger.log(message); + } +} + +export class LogScannerService extends DisposableObject { + private readonly diagnosticCollection = this.push( + languages.createDiagnosticCollection("ql-eval-log"), + ); + private currentItem: QueryHistoryInfo | undefined = undefined; + + constructor(qhm: QueryHistoryManager) { + super(); + + this.push( + qhm.onDidChangeCurrentQueryItem(async (item) => { + if (item !== this.currentItem) { + this.currentItem = item; + await this.scanEvalLog(item); + } + }), + ); + + this.push( + qhm.onDidCompleteQuery(async (item) => { + if (item === this.currentItem) { + await this.scanEvalLog(item); + } + }), + ); + } + + /** + * Scan the evaluation log for a query, and report any diagnostics. + * + * @param query The query whose log is to be scanned. + */ + public async scanEvalLog(query: QueryHistoryInfo | undefined): Promise { + this.diagnosticCollection.clear(); + + if (query?.t !== "local" || query.evaluatorLogPaths === undefined) { + return; + } + + const { summarySymbols, jsonSummary, humanReadableSummary } = + query.evaluatorLogPaths; + + if (jsonSummary === undefined || humanReadableSummary === undefined) { + return; + } + + const diagnostics = await this.scanLog(jsonSummary, summarySymbols); + const uri = Uri.file(humanReadableSummary); + this.diagnosticCollection.set(uri, diagnostics); + } + + /** + * Scan the evaluator summary log for problems, using the scanners for all registered providers. + * @param jsonSummaryLocation The file path of the JSON summary log. + * @param symbolsLocation The file path of the symbols file for the human-readable log summary. + * @returns An array of `Diagnostic`s representing the problems found by scanners. + */ + private async scanLog( + jsonSummaryLocation: string, + symbolsLocation: string | undefined, + ): Promise { + let symbols: SummarySymbols | undefined = undefined; + if (symbolsLocation !== undefined) { + symbols = JSON.parse( + await readFile(symbolsLocation, { encoding: "utf-8" }), + ); + } + const problemReporter = new ProblemReporter(symbols); + await scanAndReportJoinOrderProblems( + jsonSummaryLocation, + problemReporter, + joinOrderWarningThreshold(), + ); + return problemReporter.diagnostics; + } +} diff --git a/extensions/ql-vscode/src/log-insights/log-scanner.ts b/extensions/ql-vscode/src/log-insights/log-scanner.ts new file mode 100644 index 00000000000..22a9a5cdf78 --- /dev/null +++ b/extensions/ql-vscode/src/log-insights/log-scanner.ts @@ -0,0 +1,38 @@ +/** + * Callback interface used to report diagnostics from a log scanner. + */ +export interface EvaluationLogProblemReporter { + /** + * Report a potential problem detected in the evaluation log for a non-recursive predicate. + * + * @param predicateName The mangled name of the predicate with the problem. + * @param raHash The RA hash of the predicate with the problem. + * @param message The problem message. + */ + reportProblemNonRecursive( + predicateName: string, + raHash: string, + message: string, + ): void; + + /** + * Report a potential problem detected in the evaluation log for the summary of a recursive pipeline. + * + * @param predicateName The mangled name of the predicate with the problem. + * @param raHash The RA hash of the predicate with the problem. + * @param order The particular order (pipeline name) that had the problem. + * @param message The problem message. + */ + reportProblemForRecursionSummary( + predicateName: string, + raHash: string, + order: string, + message: string, + ): void; + + /** + * Log a message about a problem in the implementation of the scanner. These will typically be + * displayed separate from any problems reported via `reportProblem()`. + */ + log(message: string): void; +} diff --git a/extensions/ql-vscode/src/log-insights/log-summary-parser.ts b/extensions/ql-vscode/src/log-insights/log-summary-parser.ts new file mode 100644 index 00000000000..dad0622e78b --- /dev/null +++ b/extensions/ql-vscode/src/log-insights/log-summary-parser.ts @@ -0,0 +1,36 @@ +import { readJsonlFile } from "../common/jsonl-reader"; + +// TODO(angelapwen): Only load in necessary information and +// location in bytes for this log to save memory. +export interface EvalLogData { + predicateName: string; + millis: number; + resultSize: number; + // Key: pipeline identifier; Value: array of pipeline steps + ra: Record; +} + +/** + * A pure method that parses a string of evaluator log summaries into + * an array of EvalLogData objects. + */ +export async function parseViewerData( + jsonSummaryPath: string, +): Promise { + const viewerData: EvalLogData[] = []; + + await readJsonlFile(jsonSummaryPath, async (jsonObj) => { + // Only convert log items that have an RA and millis field + if (jsonObj.ra !== undefined && jsonObj.millis !== undefined) { + const newLogData: EvalLogData = { + predicateName: jsonObj.predicateName, + millis: jsonObj.millis, + resultSize: jsonObj.resultSize, + ra: jsonObj.ra, + }; + viewerData.push(newLogData); + } + }); + + return viewerData; +} diff --git a/extensions/ql-vscode/src/log-insights/log-summary.ts b/extensions/ql-vscode/src/log-insights/log-summary.ts new file mode 100644 index 00000000000..6919210f98c --- /dev/null +++ b/extensions/ql-vscode/src/log-insights/log-summary.ts @@ -0,0 +1,108 @@ +export interface PipelineRun { + raReference: string; + counts: number[]; + duplicationPercentages: number[]; +} + +interface Ra { + [key: string]: string[]; +} + +type EvaluationStrategy = + | "COMPUTE_SIMPLE" + | "COMPUTE_RECURSIVE" + | "IN_LAYER" + | "COMPUTED_EXTENSIONAL" + | "EXTENSIONAL" + | "SENTINEL_EMPTY" + | "CACHACA" + | "CACHE_HIT" + | "NAMED_LOCAL"; + +interface SummaryEventBase { + evaluationStrategy: EvaluationStrategy; + predicateName: string; + raHash: string; + appearsAs: { [key: string]: { [key: string]: number[] } }; + completionType?: string; +} + +interface ResultEventBase extends SummaryEventBase { + resultSize: number; + dependencies?: { [key: string]: string }; + mainHash?: string; +} + +export interface ComputeSimple extends ResultEventBase { + evaluationStrategy: "COMPUTE_SIMPLE"; + ra: Ra; + millis: number; + pipelineRuns?: [PipelineRun]; + queryCausingWork?: string; + dependencies: { [key: string]: string }; +} + +export interface ComputeRecursive extends ResultEventBase { + evaluationStrategy: "COMPUTE_RECURSIVE"; + deltaSizes: number[]; + ra: Ra; + millis: number; + pipelineRuns: PipelineRun[]; + queryCausingWork?: string; + dependencies: { [key: string]: string }; + predicateIterationMillis: number[]; +} + +export interface InLayer extends ResultEventBase { + evaluationStrategy: "IN_LAYER"; + deltaSizes: number[]; + ra: Ra; + pipelineRuns: PipelineRun[]; + queryCausingWork?: string; + mainHash: string; + predicateIterationMillis: number[]; +} + +interface NamedLocal extends ResultEventBase { + evaluationStrategy: "NAMED_LOCAL"; + deltaSizes: number[]; + ra: Ra; + pipelineRuns: PipelineRun[]; + queryCausingWork?: string; + predicateIterationMillis: number[]; +} + +interface ComputedExtensional extends ResultEventBase { + evaluationStrategy: "COMPUTED_EXTENSIONAL"; + queryCausingWork?: string; +} + +interface NonComputedExtensional extends ResultEventBase { + evaluationStrategy: "EXTENSIONAL"; + queryCausingWork?: string; +} + +interface SentinelEmpty extends SummaryEventBase { + evaluationStrategy: "SENTINEL_EMPTY"; + sentinelRaHash: string; +} + +interface Cachaca extends ResultEventBase { + evaluationStrategy: "CACHACA"; +} + +interface CacheHit extends ResultEventBase { + evaluationStrategy: "CACHE_HIT"; +} + +type Extensional = ComputedExtensional | NonComputedExtensional; + +export type SummaryEvent = + | ComputeSimple + | ComputeRecursive + | InLayer + | Extensional + | SentinelEmpty + | Cachaca + | CacheHit + | NamedLocal; diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts new file mode 100644 index 00000000000..7dfb516b9c3 --- /dev/null +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -0,0 +1,242 @@ +import { createHash } from "crypto"; +import type { SummaryEvent } from "./log-summary"; + +export interface PipelineSummary { + steps: string[]; + /** Total counts for each step in the RA array, across all iterations */ + counts: number[]; + hash: string; +} + +/** + * Data extracted from a log for the purpose of doing a performance comparison. + * + * Memory compactness is important since we keep this data in memory; once for + * each side of the comparison. + * + * This object must be able to survive a `postMessage` transfer from the extension host + * to a web view (which rules out `Map` values, for example). + */ +export interface PerformanceComparisonDataFromLog { + /** + * Names of predicates mentioned in the log. + * + * For compactness, details of these predicates are stored in a "struct of arrays" style. + * + * All fields (except those ending with `Indices`) should contain an array of the same length as `names`; + * details of a given predicate should be stored at the same index in each of those arrays. + */ + names: string[]; + + /** RA hash of the `i`th predicate event */ + raHashes: string[]; + + /** Number of milliseconds spent evaluating the `i`th predicate from the `names` array. */ + timeCosts: number[]; + + /** Number of tuples seen in pipelines evaluating the `i`th predicate from the `names` array. */ + tupleCosts: number[]; + + /** Number of iterations seen when evaluating the `i`th predicate from the `names` array. */ + iterationCounts: number[]; + + /** Number of executions of pipelines evaluating the `i`th predicate from the `names` array. */ + evaluationCounts: number[]; + + /** + * List of indices into the `names` array for which we have seen a cache hit. + */ + cacheHitIndices: number[]; + + /** + * List of indices into the `names` array where the predicate was deemed empty due to a sentinel check. + */ + sentinelEmptyIndices: number[]; + + /** + * All the pipeline runs seen for the `i`th predicate from the `names` array. + */ + pipelineSummaryList: Array>; + + /** All dependencies of the `i`th predicate from the `names` array, encoded as a list of indices in `names`. */ + dependencyLists: number[][]; +} + +export class PerformanceOverviewScanner { + private readonly data: PerformanceComparisonDataFromLog = { + names: [], + raHashes: [], + timeCosts: [], + tupleCosts: [], + cacheHitIndices: [], + sentinelEmptyIndices: [], + pipelineSummaryList: [], + evaluationCounts: [], + iterationCounts: [], + dependencyLists: [], + }; + private readonly raToIndex = new Map(); + private readonly mainHashToRepr = new Map(); + private readonly nameToIndex = new Map(); + + private getPredicateIndex(name: string, ra: string): number { + let index = this.raToIndex.get(ra); + if (index === undefined) { + index = this.raToIndex.size; + this.raToIndex.set(ra, index); + const { + names, + raHashes, + timeCosts, + tupleCosts, + iterationCounts, + evaluationCounts, + pipelineSummaryList, + dependencyLists, + } = this.data; + names.push(name); + raHashes.push(ra); + timeCosts.push(0); + tupleCosts.push(0); + iterationCounts.push(0); + evaluationCounts.push(0); + pipelineSummaryList.push({}); + dependencyLists.push([]); + } + return index; + } + + getData(): PerformanceComparisonDataFromLog { + return this.data; + } + + onEvent(event: SummaryEvent): void { + const { completionType, evaluationStrategy, predicateName, raHash } = event; + if (completionType !== undefined && completionType !== "SUCCESS") { + return; // Skip any evaluation that wasn't successful + } + + switch (evaluationStrategy) { + case "EXTENSIONAL": { + break; + } + case "COMPUTED_EXTENSIONAL": { + if (predicateName.startsWith("cached_")) { + // Add a dependency from a cached COMPUTED_EXTENSIONAL to the predicate with the actual contents. + // The raHash of the this event may appear in a CACHE_HIT event in the other event log. The dependency + // we're adding here is needed in order to associate the original predicate with such a cache hit. + const originalName = predicateName.substring("cached_".length); + const originalIndex = this.nameToIndex.get(originalName); + if (originalIndex != null) { + const index = this.getPredicateIndex(predicateName, raHash); + this.data.dependencyLists[index].push(originalIndex); + } + } + break; + } + case "CACHE_HIT": + case "CACHACA": { + // Record a cache hit, but only if the predicate has not been seen before. + // We're mainly interested in the reuse of caches from an earlier query run as they can distort comparisons. + if (!this.raToIndex.has(raHash)) { + this.data.cacheHitIndices.push( + this.getPredicateIndex(predicateName, raHash), + ); + } + break; + } + case "SENTINEL_EMPTY": { + const index = this.getPredicateIndex(predicateName, raHash); + this.data.sentinelEmptyIndices.push(index); + const sentinelIndex = this.raToIndex.get(event.sentinelRaHash); + if (sentinelIndex != null) { + this.data.dependencyLists[index].push(sentinelIndex); // needed for matching up cache hits + } + break; + } + case "COMPUTE_RECURSIVE": + case "COMPUTE_SIMPLE": + case "NAMED_LOCAL": + case "IN_LAYER": { + const index = this.getPredicateIndex(predicateName, raHash); + this.nameToIndex.set(predicateName, index); + let totalTime = 0; + let totalTuples = 0; + if (evaluationStrategy === "COMPUTE_SIMPLE") { + totalTime += event.millis; + } else { + // Make a best-effort estimate of the total time by adding up the positive iteration times (they can be negative). + // Note that for COMPUTE_RECURSIVE the "millis" field contain the total time of the SCC, not just that predicate, + // but we don't have a good way to show that in the UI, so we rely on the accumulated iteration times. + for (const millis of event.predicateIterationMillis ?? []) { + if (millis > 0) { + totalTime += millis; + } + } + } + const { + timeCosts, + tupleCosts, + iterationCounts, + evaluationCounts, + pipelineSummaryList, + dependencyLists, + } = this.data; + const pipelineSummaries = pipelineSummaryList[index]; + const dependencyList = dependencyLists[index]; + for (const { counts, raReference } of event.pipelineRuns ?? []) { + // Get or create the pipeline summary for this RA + const pipelineSummary = (pipelineSummaries[raReference] ??= { + steps: event.ra[raReference], + counts: counts.map(() => 0), + hash: getPipelineHash(event.ra[raReference]), + }); + const { counts: totalTuplesPerStep } = pipelineSummary; + for (let i = 0, length = counts.length; i < length; ++i) { + const count = counts[i]; + if (count < 0) { + // Empty RA lines have a tuple count of -1. Do not count them when aggregating. + // But retain the fact that this step had a negative count for rendering purposes. + totalTuplesPerStep[i] = count; + continue; + } + totalTuples += count; + totalTuplesPerStep[i] += count; + } + } + for (const dependencyHash of Object.values(event.dependencies ?? {})) { + const dependencyIndex = this.raToIndex.get(dependencyHash); + if (dependencyIndex != null) { + dependencyList.push(dependencyIndex); + } + } + // For predicates in the same SCC, add two-way dependencies with an arbitrary SCC member + const sccHash = + event.mainHash ?? + (evaluationStrategy === "COMPUTE_RECURSIVE" ? raHash : null); + if (sccHash != null) { + const mainIndex = this.mainHashToRepr.get(sccHash); + if (mainIndex == null) { + this.mainHashToRepr.set(sccHash, index); + } else { + dependencyLists[index].push(mainIndex); + dependencyLists[mainIndex].push(index); + } + } + timeCosts[index] += totalTime; + tupleCosts[index] += totalTuples; + iterationCounts[index] += event.pipelineRuns?.length ?? 0; + evaluationCounts[index] += 1; + break; + } + } + } +} + +function getPipelineHash(steps: string[]) { + const md5 = createHash("md5"); + for (const step of steps) { + md5.write(step); + } + return md5.digest("base64"); +} diff --git a/extensions/ql-vscode/src/log-insights/summary-language-support.ts b/extensions/ql-vscode/src/log-insights/summary-language-support.ts index 989347c8d59..6546fd04ce2 100644 --- a/extensions/ql-vscode/src/log-insights/summary-language-support.ts +++ b/extensions/ql-vscode/src/log-insights/summary-language-support.ts @@ -1,10 +1,24 @@ -import * as fs from 'fs-extra'; -import { RawSourceMap, SourceMapConsumer } from 'source-map'; -import { commands, Position, Selection, TextDocument, TextEditor, TextEditorRevealType, TextEditorSelectionChangeEvent, ViewColumn, window, workspace } from 'vscode'; -import { DisposableObject } from '../pure/disposable-object'; -import { commandRunner } from '../commandRunner'; -import { logger } from '../logging'; -import { getErrorMessage } from '../pure/helpers-pure'; +import { readFile } from "fs-extra"; +import type { RawSourceMap } from "source-map"; +import { SourceMapConsumer } from "source-map"; +import type { + TextDocument, + TextEditor, + TextEditorSelectionChangeEvent, +} from "vscode"; +import { + Position, + Selection, + TextEditorRevealType, + ViewColumn, + window, + workspace, +} from "vscode"; +import { DisposableObject } from "../common/disposable-object"; +import { extLogger } from "../common/logging/vscode"; +import { getErrorMessage } from "../common/helpers-pure"; +import type { SummaryLanguageSupportCommands } from "../common/commands"; +import type { App } from "../common/app"; /** A `Position` within a specified file on disk. */ interface PositionInFile { @@ -20,7 +34,10 @@ async function showSourceLocation(position: PositionInFile): Promise { const document = await workspace.openTextDocument(position.filePath); const editor = await window.showTextDocument(document, ViewColumn.Active); editor.selection = new Selection(position.position, position.position); - editor.revealRange(editor.selection, TextEditorRevealType.InCenterIfOutsideViewport); + editor.revealRange( + editor.selection, + TextEditorRevealType.InCenterIfOutsideViewport, + ); } /** @@ -35,20 +52,37 @@ export class SummaryLanguageSupport extends DisposableObject { * The last `TextDocument` (with language `ql-summary`) for which we tried to find a sourcemap, or * `undefined` if we have not seen such a document yet. */ - private lastDocument : TextDocument | undefined = undefined; + private lastDocument: TextDocument | undefined = undefined; /** * The sourcemap for `lastDocument`, or `undefined` if there was no such sourcemap or document. */ - private sourceMap : SourceMapConsumer | undefined = undefined; + private sourceMap: SourceMapConsumer | undefined = undefined; - constructor() { + constructor(private readonly app: App) { super(); - this.push(window.onDidChangeActiveTextEditor(this.handleDidChangeActiveTextEditor)); - this.push(window.onDidChangeTextEditorSelection(this.handleDidChangeTextEditorSelection)); - this.push(workspace.onDidCloseTextDocument(this.handleDidCloseTextDocument)); + this.push( + window.onDidChangeActiveTextEditor( + this.handleDidChangeActiveTextEditor.bind(this), + ), + ); + this.push( + window.onDidChangeTextEditorSelection( + this.handleDidChangeTextEditorSelection.bind(this), + ), + ); + this.push( + workspace.onDidCloseTextDocument( + this.handleDidCloseTextDocument.bind(this), + ), + ); + } - this.push(commandRunner('codeQL.gotoQL', this.handleGotoQL)); + public getCommands(): SummaryLanguageSupportCommands { + return { + "codeQL.gotoQL": this.handleGotoQL.bind(this), + "codeQL.gotoQLContextEditor": this.handleGotoQL.bind(this), + }; } /** @@ -62,26 +96,28 @@ export class SummaryLanguageSupport extends DisposableObject { } const document = editor.document; - if (document.languageId !== 'ql-summary') { + if (document.languageId !== "ql-summary") { return undefined; } - if (document.uri.scheme !== 'file') { + if (document.uri.scheme !== "file") { return undefined; } if (this.lastDocument !== document) { this.clearCache(); - const mapPath = document.uri.fsPath + '.map'; + const mapPath = `${document.uri.fsPath}.map`; try { - const sourceMapText = await fs.readFile(mapPath, 'utf-8'); + const sourceMapText = await readFile(mapPath, "utf-8"); const rawMap: RawSourceMap = JSON.parse(sourceMapText); this.sourceMap = await new SourceMapConsumer(rawMap); - } catch (e: unknown) { + } catch (e) { // Error reading sourcemap. Pretend there was no sourcemap. - void logger.log(`Error reading sourcemap file '${mapPath}': ${getErrorMessage(e)}`); + void extLogger.log( + `Error reading sourcemap file '${mapPath}': ${getErrorMessage(e)}`, + ); this.sourceMap = undefined; } this.lastDocument = document; @@ -94,19 +130,19 @@ export class SummaryLanguageSupport extends DisposableObject { const qlPosition = this.sourceMap.originalPositionFor({ line: editor.selection.start.line + 1, column: editor.selection.start.character, - bias: SourceMapConsumer.GREATEST_LOWER_BOUND + bias: SourceMapConsumer.GREATEST_LOWER_BOUND, }); - if ((qlPosition.source === null) || (qlPosition.line === null)) { + if (qlPosition.source === null || qlPosition.line === null) { // No position found. return undefined; } - const line = qlPosition.line - 1; // In `source-map`, lines are 1-based... - const column = qlPosition.column ?? 0; // ...but columns are 0-based :( + const line = qlPosition.line - 1; // In `source-map`, lines are 1-based... + const column = qlPosition.column ?? 0; // ...but columns are 0-based :( return { filePath: qlPosition.source, - position: new Position(line, column) + position: new Position(line, column), }; } @@ -128,22 +164,30 @@ export class SummaryLanguageSupport extends DisposableObject { private async updateContext(): Promise { const position = await this.getQLSourceLocation(); - await commands.executeCommand('setContext', 'codeql.hasQLSource', position !== undefined); + await this.app.commands.execute( + "setContext", + "codeql.hasQLSource", + position !== undefined, + ); } - handleDidChangeActiveTextEditor = async (_editor: TextEditor | undefined): Promise => { + handleDidChangeActiveTextEditor = async ( + _editor: TextEditor | undefined, + ): Promise => { await this.updateContext(); - } + }; - handleDidChangeTextEditorSelection = async (_e: TextEditorSelectionChangeEvent): Promise => { + handleDidChangeTextEditorSelection = async ( + _e: TextEditorSelectionChangeEvent, + ): Promise => { await this.updateContext(); - } + }; handleDidCloseTextDocument = (document: TextDocument): void => { if (this.lastDocument === document) { this.clearCache(); } - } + }; handleGotoQL = async (): Promise => { const position = await this.getQLSourceLocation(); diff --git a/extensions/ql-vscode/src/log-insights/summary-parser.ts b/extensions/ql-vscode/src/log-insights/summary-parser.ts new file mode 100644 index 00000000000..61a3a8af250 --- /dev/null +++ b/extensions/ql-vscode/src/log-insights/summary-parser.ts @@ -0,0 +1,31 @@ +/** + * Location information for a single pipeline invocation in the RA. + */ +export interface PipelineInfo { + startLine: number; + raStartLine: number; + raEndLine: number; +} + +/** + * Location information for a single predicate in the RA. + */ +interface PredicateSymbol { + /** + * `PipelineInfo` for each iteration. A non-recursive predicate will have a single iteration `0`. + */ + iterations: Record; + + /** + * `PipelineInfo` for each order, summarised for all iterations that used that order. Empty for non-recursive predicates. + */ + recursionSummaries: Record; +} + +/** + * Location information for the RA from an evaluation log. Line numbers point into the + * human-readable log summary. + */ +export interface SummarySymbols { + predicates: Record; +} diff --git a/extensions/ql-vscode/src/logging.ts b/extensions/ql-vscode/src/logging.ts deleted file mode 100644 index 778b1158428..00000000000 --- a/extensions/ql-vscode/src/logging.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { window as Window, OutputChannel, Progress } from 'vscode'; -import { DisposableObject } from './pure/disposable-object'; -import * as fs from 'fs-extra'; -import * as path from 'path'; - -interface LogOptions { - /** If false, don't output a trailing newline for the log entry. Default true. */ - trailingNewline?: boolean; - - /** If specified, add this log entry to the log file at the specified location. */ - additionalLogLocation?: string; -} - -export interface Logger { - /** Writes the given log message, optionally followed by a newline. */ - log(message: string, options?: LogOptions): Promise; - /** - * Reveal this channel in the UI. - * - * @param preserveFocus When `true` the channel will not take focus. - */ - show(preserveFocus?: boolean): void; - - /** - * Remove the log at the specified location - * @param location log to remove - */ - removeAdditionalLogLocation(location: string | undefined): void; -} - -export type ProgressReporter = Progress<{ message: string }>; - -/** A logger that writes messages to an output channel in the Output tab. */ -export class OutputChannelLogger extends DisposableObject implements Logger { - public readonly outputChannel: OutputChannel; - private readonly additionalLocations = new Map(); - isCustomLogDirectory: boolean; - - constructor(title: string) { - super(); - this.outputChannel = Window.createOutputChannel(title); - this.push(this.outputChannel); - this.isCustomLogDirectory = false; - } - - /** - * This function is asynchronous and will only resolve once the message is written - * to the side log (if required). It is not necessary to await the results of this - * function if you don't need to guarantee that the log writing is complete before - * continuing. - */ - async log(message: string, options = {} as LogOptions): Promise { - try { - if (options.trailingNewline === undefined) { - options.trailingNewline = true; - } - if (options.trailingNewline) { - this.outputChannel.appendLine(message); - } else { - this.outputChannel.append(message); - } - - if (options.additionalLogLocation) { - if (!path.isAbsolute(options.additionalLogLocation)) { - throw new Error(`Additional Log Location must be an absolute path: ${options.additionalLogLocation}`); - } - const logPath = options.additionalLogLocation; - let additional = this.additionalLocations.get(logPath); - if (!additional) { - const msg = `| Log being saved to ${logPath} |`; - const separator = new Array(msg.length).fill('-').join(''); - this.outputChannel.appendLine(separator); - this.outputChannel.appendLine(msg); - this.outputChannel.appendLine(separator); - additional = new AdditionalLogLocation(logPath); - this.additionalLocations.set(logPath, additional); - } - - await additional.log(message, options); - } - } catch (e) { - if (e instanceof Error && e.message === 'Channel has been closed') { - // Output channel is closed logging to console instead - console.log('Output channel is closed logging to console instead:', message); - } else { - throw e; - } - } - } - - show(preserveFocus?: boolean): void { - this.outputChannel.show(preserveFocus); - } - - removeAdditionalLogLocation(location: string | undefined): void { - if (location) { - this.additionalLocations.delete(location); - } - } -} - -class AdditionalLogLocation { - constructor(private location: string) { - /**/ - } - - async log(message: string, options = {} as LogOptions): Promise { - if (options.trailingNewline === undefined) { - options.trailingNewline = true; - } - await fs.ensureFile(this.location); - - await fs.appendFile(this.location, message + (options.trailingNewline ? '\n' : ''), { - encoding: 'utf8' - }); - } -} - -/** The global logger for the extension. */ -export const logger = new OutputChannelLogger('CodeQL Extension Log'); - -/** The logger for messages from the query server. */ -export const queryServerLogger = new OutputChannelLogger('CodeQL Query Server'); - -/** The logger for messages from the language server. */ -export const ideServerLogger = new OutputChannelLogger( - 'CodeQL Language Server' -); - -/** The logger for messages from tests. */ -export const testLogger = new OutputChannelLogger('CodeQL Tests'); diff --git a/extensions/ql-vscode/src/model-editor/bqrs.ts b/extensions/ql-vscode/src/model-editor/bqrs.ts new file mode 100644 index 00000000000..5cab2bdf19d --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/bqrs.ts @@ -0,0 +1,165 @@ +import type { + DecodedBqrsChunk, + BqrsEntityValue, +} from "../common/bqrs-cli-types"; +import type { Method, Usage } from "./method"; +import { EndpointType, CallClassification } from "./method"; +import type { ModeledMethodType } from "./modeled-method"; +import { parseLibraryFilename } from "./library"; +import { Mode } from "./shared/mode"; +import type { ApplicationModeTuple, FrameworkModeTuple } from "./queries/query"; +import type { QueryLanguage } from "../common/query-language"; +import { getModelsAsDataLanguage } from "./languages"; +import { mapUrlValue } from "../common/bqrs-raw-results-mapper"; +import { isUrlValueResolvable } from "../common/raw-result-types"; + +export function decodeBqrsToMethods( + chunk: DecodedBqrsChunk, + mode: Mode, + language: QueryLanguage, +): Method[] { + const methodsByApiName = new Map(); + + const definition = getModelsAsDataLanguage(language); + + chunk?.tuples.forEach((tuple) => { + let usageEntityValue: BqrsEntityValue; + let packageName: string; + let typeName: string; + let methodName: string; + let methodParameters: string; + let supported: boolean; + let library: string; + let libraryVersion: string | undefined; + let type: ModeledMethodType; + let classification: CallClassification; + let endpointKindColumn: string | BqrsEntityValue | undefined; + let endpointType: EndpointType | undefined = undefined; + + if (mode === Mode.Application) { + [ + usageEntityValue, + packageName, + typeName, + methodName, + methodParameters, + supported, + library, + libraryVersion, + type, + classification, + endpointKindColumn, + ] = tuple as ApplicationModeTuple; + } else { + [ + usageEntityValue, + packageName, + typeName, + methodName, + methodParameters, + supported, + library, + type, + endpointKindColumn, + ] = tuple as FrameworkModeTuple; + + classification = CallClassification.Unknown; + } + + if ((type as string) === "") { + type = "none"; + } + + if (definition.endpointTypeForEndpoint) { + endpointType = definition.endpointTypeForEndpoint( + { + endpointType, + packageName, + typeName, + methodName, + methodParameters, + }, + typeof endpointKindColumn === "object" + ? endpointKindColumn.label + : endpointKindColumn, + ); + } + + if (endpointType === undefined) { + endpointType = + methodName === "" ? EndpointType.Class : EndpointType.Method; + } + + const signature = definition.createMethodSignature({ + endpointType, + packageName, + typeName, + methodName, + methodParameters, + }); + + // For Java, we'll always get back a .jar file, and the library version may be bad because not all library authors + // properly specify the version. Therefore, we'll always try to parse the name and version from the library filename + // for Java. + if ( + library.endsWith(".jar") || + libraryVersion === "" || + libraryVersion === undefined + ) { + const { name, version } = parseLibraryFilename(library); + library = name; + if (version) { + libraryVersion = version; + } + } + + if (libraryVersion === "") { + libraryVersion = undefined; + } + + if (!methodsByApiName.has(signature)) { + methodsByApiName.set(signature, { + library, + libraryVersion, + signature, + endpointType, + packageName, + typeName, + methodName, + methodParameters, + supported, + supportedType: type, + usages: [], + }); + } + + if (usageEntityValue.url === undefined) { + return; + } + + const usageUrl = mapUrlValue(usageEntityValue.url); + if (!usageUrl || !isUrlValueResolvable(usageUrl)) { + return; + } + + if (!usageEntityValue.label) { + return; + } + + const method = methodsByApiName.get(signature)!; + const usages: Usage[] = [ + ...method.usages, + { + label: usageEntityValue.label, + url: usageUrl, + classification, + }, + ]; + methodsByApiName.set(signature, { + ...method, + usages, + }); + }); + + return Array.from(methodsByApiName.values()); +} diff --git a/extensions/ql-vscode/src/model-editor/consistency-check.ts b/extensions/ql-vscode/src/model-editor/consistency-check.ts new file mode 100644 index 00000000000..2388654634f --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/consistency-check.ts @@ -0,0 +1,77 @@ +import type { Method } from "./method"; +import type { ModeledMethod } from "./modeled-method"; +import type { BaseLogger } from "../common/logging"; + +interface Notifier { + missingMethod( + signature: string, + modeledMethods: readonly ModeledMethod[], + ): void; + inconsistentSupported(signature: string, expectedSupported: boolean): void; +} + +export function checkConsistency( + methods: readonly Method[], + modeledMethods: Readonly>, + notifier: Notifier, +) { + const methodsBySignature = methods.reduce( + (acc, method) => { + acc[method.signature] = method; + return acc; + }, + {} as Record, + ); + + for (const signature in modeledMethods) { + const modeledMethodsForSignature = modeledMethods[signature]; + + const method = methodsBySignature[signature]; + if (!method) { + notifier.missingMethod(signature, modeledMethodsForSignature); + continue; + } + + checkMethodConsistency(method, modeledMethodsForSignature, notifier); + } +} + +function checkMethodConsistency( + method: Method, + modeledMethods: readonly ModeledMethod[], + notifier: Notifier, +) { + // Type models are currently not shown as `supported` since they do not give any model information. + const expectSupported = modeledMethods.some( + (m) => m.type !== "none" && m.type !== "type", + ); + + if (method.supported !== expectSupported) { + notifier.inconsistentSupported(method.signature, expectSupported); + } +} + +export class DefaultNotifier implements Notifier { + constructor(private readonly logger: BaseLogger) {} + + missingMethod(signature: string, modeledMethods: readonly ModeledMethod[]) { + const modelTypes = modeledMethods + .map((m) => m.type) + .filter((t) => t !== "none") + .join(", "); + + void this.logger.log( + `Model editor query consistency check: Missing method ${signature} for method that is modeled as ${modelTypes}`, + ); + } + + inconsistentSupported(signature: string, expectedSupported: boolean) { + const expectedMessage = expectedSupported + ? `Expected method to be supported, but it is not.` + : `Expected method to not be supported, but it is.`; + + void this.logger.log( + `Model editor query consistency check: Inconsistent supported flag for method ${signature}. ${expectedMessage}`, + ); + } +} diff --git a/extensions/ql-vscode/src/model-editor/extension-pack-metadata.schema.json b/extensions/ql-vscode/src/model-editor/extension-pack-metadata.schema.json new file mode 100644 index 00000000000..96f9fb38dcf --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/extension-pack-metadata.schema.json @@ -0,0 +1,141 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/ExtensionPackMetadata", + "definitions": { + "ExtensionPackMetadata": { + "type": "object", + "properties": { + "name": { + "type": ["string", "null"] + }, + "version": { + "type": ["string", "null"] + }, + "extensionTargets": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "dataExtensions": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dependencies": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "dbscheme": { + "type": ["string", "null"] + }, + "library": { + "type": ["boolean", "null"] + }, + "defaultSuite": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/SuiteInstruction" + } + }, + { + "$ref": "#/definitions/SuiteInstruction" + }, + { + "type": "null" + } + ] + }, + "defaultSuiteFile": { + "type": ["string", "null"] + } + }, + "required": ["dataExtensions", "extensionTargets", "name", "version"] + }, + "SuiteInstruction": { + "type": "object", + "properties": { + "qlpack": { + "type": "string" + }, + "query": { + "type": "string" + }, + "queries": { + "type": "string" + }, + "include": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + }, + "exclude": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + }, + "description": { + "type": "string" + }, + "import": { + "type": "string" + }, + "from": { + "type": "string" + } + }, + "description": "A single entry in a .qls file." + } + } +} diff --git a/extensions/ql-vscode/src/model-editor/extension-pack-metadata.ts b/extensions/ql-vscode/src/model-editor/extension-pack-metadata.ts new file mode 100644 index 00000000000..2d1e151a5a2 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/extension-pack-metadata.ts @@ -0,0 +1,9 @@ +import type { QlPackFile } from "../packaging/qlpack-file"; + +export type ExtensionPackMetadata = QlPackFile & { + // Make name, version, extensionTargets, and dataExtensions required + name: string; + version: string; + extensionTargets: Record; + dataExtensions: string[] | string; +}; diff --git a/extensions/ql-vscode/src/model-editor/extension-pack-name.ts b/extensions/ql-vscode/src/model-editor/extension-pack-name.ts new file mode 100644 index 00000000000..b9e972be018 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/extension-pack-name.ts @@ -0,0 +1,88 @@ +import { createFilenameFromString } from "../common/filenames"; + +const packNamePartRegex = /[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/; +const packNameRegex = new RegExp( + `^(?${packNamePartRegex.source})/(?${packNamePartRegex.source})$`, +); +const packNameLength = 128; + +export interface ExtensionPackName { + scope: string; + name: string; +} + +export function formatPackName(packName: ExtensionPackName): string { + return `${packName.scope}/${packName.name}`; +} + +export function sanitizePackName(userPackName: string): ExtensionPackName { + let packName = userPackName; + + packName = packName.trim(); + + while (packName.startsWith("/")) { + packName = packName.slice(1); + } + + while (packName.endsWith("/")) { + packName = packName.slice(0, -1); + } + + if (!packName.includes("/")) { + packName = `pack/${packName}`; + } + + const parts = packName.split("/"); + const sanitizedParts = parts.map((part) => + createFilenameFromString(part, { + removeDots: true, + }), + ); + + // If the scope is empty (e.g. if the given name is "-/b"), then we need to still set a scope + if (sanitizedParts[0].length === 0) { + sanitizedParts[0] = "pack"; + } + + return { + scope: sanitizedParts[0], + // This will ensure there's only 1 slash + name: sanitizedParts.slice(1).join("-"), + }; +} + +export function parsePackName(packName: string): ExtensionPackName | undefined { + const matches = packNameRegex.exec(packName); + if (!matches?.groups) { + return; + } + + const scope = matches.groups.scope; + const name = matches.groups.name; + + return { + scope, + name, + }; +} + +export function validatePackName(name: string): string | undefined { + if (!name) { + return "Pack name must not be empty"; + } + + if (name.length > packNameLength) { + return `Pack name must be no longer than ${packNameLength} characters`; + } + + const matches = packNameRegex.exec(name); + if (!matches?.groups) { + if (!name.includes("/")) { + return "Invalid package name: a pack name must contain a slash to separate the scope from the pack name"; + } + + return "Invalid package name: a pack name must contain only lowercase ASCII letters, ASCII digits, and hyphens"; + } + + return undefined; +} diff --git a/extensions/ql-vscode/src/model-editor/extension-pack-picker.ts b/extensions/ql-vscode/src/model-editor/extension-pack-picker.ts new file mode 100644 index 00000000000..d5e8f0d78a5 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/extension-pack-picker.ts @@ -0,0 +1,284 @@ +import { join } from "path"; +import { outputFile, pathExists, readFile } from "fs-extra"; +import { dump as dumpYaml, load as loadYaml } from "js-yaml"; +import type { CancellationToken } from "vscode"; +import Ajv from "ajv"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { UserCancellationException } from "../common/vscode/progress"; +import type { DatabaseItem } from "../databases/local-databases"; +import { getQlPackFilePath, QLPACK_FILENAMES } from "../common/ql"; +import { getErrorMessage } from "../common/helpers-pure"; +import type { ExtensionPack } from "./shared/extension-pack"; +import type { NotificationLogger } from "../common/logging"; +import { showAndLogErrorMessage } from "../common/logging"; +import type { ModelConfig, ModelConfigPackVariables } from "../config"; +import type { ExtensionPackName } from "./extension-pack-name"; +import { + validatePackName, + sanitizePackName, + formatPackName, +} from "./extension-pack-name"; +import { + ensurePackLocationIsInWorkspaceFolder, + packLocationToAbsolute, +} from "./extensions-workspace-folder"; + +import type { ExtensionPackMetadata } from "./extension-pack-metadata"; +import extensionPackMetadataSchemaJson from "./extension-pack-metadata.schema.json"; + +const ajv = new Ajv({ allErrors: true }); +const extensionPackValidate = ajv.compile(extensionPackMetadataSchemaJson); + +export async function pickExtensionPack( + cliServer: Pick, + databaseItem: Pick, + modelConfig: ModelConfig, + logger: NotificationLogger, + progress: ProgressCallback, + token: CancellationToken, + maxStep: number, +): Promise { + progress({ + message: "Resolving extension packs...", + step: 1, + maxStep, + }); + + // Get all existing extension packs in the workspace + const additionalPacks = getOnDiskWorkspaceFolders(); + // the CLI doesn't check packs in the .github folder, so we need to add it manually + if (additionalPacks.length === 1) { + additionalPacks.push(`${additionalPacks[0]}/.github`); + } + const extensionPacksInfo = await cliServer.resolveQlpacks( + additionalPacks, + true, + ); + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Open Model editor action cancelled.", + true, + ); + } + + progress({ + message: "Creating extension pack...", + step: 2, + maxStep, + }); + + // The default is .github/codeql/extensions/${name}-${language} + const packPath = await packLocationToAbsolute( + modelConfig.getPackLocation( + databaseItem.language, + getModelConfigPackVariables(databaseItem), + ), + logger, + ); + if (!packPath) { + return undefined; + } + + await ensurePackLocationIsInWorkspaceFolder(packPath, modelConfig, logger); + + const userPackName = modelConfig.getPackName( + databaseItem.language, + getModelConfigPackVariables(databaseItem), + ); + + // Generate the name of the extension pack + const packName = sanitizePackName(userPackName); + + // Validate that the name isn't too long etc. + const packNameError = validatePackName(formatPackName(packName)); + if (packNameError) { + void showAndLogErrorMessage( + logger, + `Invalid model pack name '${formatPackName(packName)}' for database ${databaseItem.name}: ${packNameError}`, + ); + + return undefined; + } + + // Find any existing locations of this extension pack + const existingExtensionPackPaths = + extensionPacksInfo[formatPackName(packName)]; + + // If there is already an extension pack with this name, use it if it is valid + if (existingExtensionPackPaths?.length === 1) { + let extensionPack: ExtensionPack; + try { + extensionPack = await readExtensionPack( + existingExtensionPackPaths[0], + databaseItem.language, + ); + } catch (e) { + void showAndLogErrorMessage( + logger, + `Could not read extension pack ${formatPackName(packName)}`, + { + fullMessage: `Could not read extension pack ${formatPackName( + packName, + )} at ${existingExtensionPackPaths[0]}: ${getErrorMessage(e)}`, + }, + ); + + return undefined; + } + + return extensionPack; + } + + // If there is already an existing extension pack with this name, but it resolves + // to multiple paths, then we can't use it + if (existingExtensionPackPaths?.length > 1) { + void showAndLogErrorMessage( + logger, + `Extension pack ${formatPackName(packName)} resolves to multiple paths`, + { + fullMessage: `Extension pack ${formatPackName( + packName, + )} resolves to multiple paths: ${existingExtensionPackPaths.join( + ", ", + )}`, + }, + ); + + return undefined; + } + + if (await pathExists(packPath)) { + void showAndLogErrorMessage( + logger, + `Directory ${packPath} already exists for extension pack ${formatPackName( + packName, + )}, but wasn't returned by codeql resolve qlpacks --kind extension --no-recursive`, + ); + + return undefined; + } + + return writeExtensionPack(packPath, packName, databaseItem.language); +} + +function getModelConfigPackVariables( + databaseItem: Pick, +): ModelConfigPackVariables { + const database = databaseItem.name; + const language = databaseItem.language; + let name = databaseItem.name; + let owner = ""; + + if (databaseItem.origin?.type === "github") { + [owner, name] = databaseItem.origin.repository.split("/"); + } + + return { + database, + language, + name, + owner, + }; +} + +async function writeExtensionPack( + packPath: string, + packName: ExtensionPackName, + language: string, +): Promise { + const packYamlPath = join(packPath, "codeql-pack.yml"); + + const extensionPack: ExtensionPack = { + path: packPath, + yamlPath: packYamlPath, + name: formatPackName(packName), + version: "0.0.0", + language, + extensionTargets: { + [`codeql/${language}-all`]: "*", + }, + dataExtensions: ["models/**/*.yml"], + }; + + await outputFile( + packYamlPath, + dumpYaml({ + name: extensionPack.name, + version: extensionPack.version, + library: true, + extensionTargets: extensionPack.extensionTargets, + dataExtensions: extensionPack.dataExtensions, + }), + ); + + return extensionPack; +} + +function validateExtensionPack( + extensionPack: unknown, +): extensionPack is ExtensionPackMetadata { + extensionPackValidate(extensionPack); + + if (extensionPackValidate.errors) { + throw new Error( + `Invalid extension pack YAML: ${extensionPackValidate.errors + .map((error) => `${error.instancePath} ${error.message}`) + .join(", ")}`, + ); + } + + return true; +} + +async function readExtensionPack( + path: string, + language: string, +): Promise { + const qlpackPath = await getQlPackFilePath(path); + if (!qlpackPath) { + throw new Error( + `Could not find any of ${QLPACK_FILENAMES.join(", ")} in ${path}`, + ); + } + + const qlpack = await loadYaml(await readFile(qlpackPath, "utf8"), { + filename: qlpackPath, + }); + if (typeof qlpack !== "object" || qlpack === null) { + throw new Error(`Could not parse ${qlpackPath}`); + } + + if (!validateExtensionPack(qlpack)) { + throw new Error(`Could not validate ${qlpackPath}`); + } + + const dataExtensionValue = qlpack.dataExtensions; + if ( + !( + Array.isArray(dataExtensionValue) || + typeof dataExtensionValue === "string" + ) + ) { + throw new Error( + `Expected 'dataExtensions' to be a string or an array in ${qlpackPath}`, + ); + } + + // The YAML allows either a string or an array of strings + const dataExtensions = Array.isArray(dataExtensionValue) + ? dataExtensionValue + : [dataExtensionValue]; + + return { + path, + yamlPath: qlpackPath, + name: qlpack.name, + version: qlpack.version, + language, + extensionTargets: qlpack.extensionTargets, + dataExtensions, + }; +} diff --git a/extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts b/extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts new file mode 100644 index 00000000000..f3736748805 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/extensions-workspace-folder.ts @@ -0,0 +1,297 @@ +import type { WorkspaceFolder } from "vscode"; +import { FileType, Uri, workspace } from "vscode"; +import { getOnDiskWorkspaceFoldersObjects } from "../common/vscode/workspace-folders"; +import { containsPath, tmpdir } from "../common/files"; +import type { NotificationLogger } from "../common/logging"; +import { showAndLogErrorMessage } from "../common/logging"; +import { isAbsolute, normalize, resolve } from "path"; +import { nanoid } from "nanoid"; +import type { ModelConfig } from "../config"; + +/** + * Returns the ancestors of this path in order from furthest to closest (i.e. root of filesystem to parent directory) + */ +function getAncestors(uri: Uri): Uri[] { + const ancestors: Uri[] = []; + let current = uri; + while (current.fsPath !== Uri.joinPath(current, "..").fsPath) { + ancestors.push(current); + current = Uri.joinPath(current, ".."); + } + + // The ancestors are now in order from closest to furthest, so reverse them + ancestors.reverse(); + + return ancestors; +} + +function findCommonAncestor(uris: Uri[]): Uri | undefined { + if (uris.length === 0) { + return undefined; + } + + if (uris.length === 1) { + return uris[0]; + } + + // Find the common root directory of all workspace folders by finding the longest common prefix + const commonRoot = uris.reduce((commonRoot, folderUri) => { + const ancestors = getAncestors(folderUri); + + const minLength = Math.min(commonRoot.length, ancestors.length); + let commonLength = 0; + for (let i = 0; i < minLength; i++) { + if (commonRoot[i].fsPath === ancestors[i].fsPath) { + commonLength++; + } else { + break; + } + } + + return commonRoot.slice(0, commonLength); + }, getAncestors(uris[0])); + + if (commonRoot.length === 0) { + return undefined; + } + + // The path closest to the workspace folders is the last element of the common root + const commonRootUri = commonRoot[commonRoot.length - 1]; + + // If we are at the root of the filesystem, we can't go up any further and there's something + // wrong, so just return undefined + if (commonRootUri.fsPath === Uri.joinPath(commonRootUri, "..").fsPath) { + return undefined; + } + + return commonRootUri; +} + +/** + * Finds the root directory of this workspace. It is determined + * heuristically based on the on-disk workspace folders. + * + * The heuristic is as follows: + * 1. If there is a workspace file (`.code-workspace`), use the directory containing that file + * 2. If there is only 1 workspace folder, use that folder + * 3. If there is a common root directory for all workspace folders, use that directory + * - Workspace folders in the system temp directory are ignored + * - If the common root directory is the root of the filesystem, then it's not used + * 4. If there is a .git directory in any workspace folder, use the directory containing that .git directory + * for which the .git directory is closest to a workspace folder + * 5. If none of the above apply, return `undefined` + */ +export async function getRootWorkspaceDirectory(): Promise { + // If there is a valid workspace file, just use its directory as the directory for the extensions + const workspaceFile = workspace.workspaceFile; + if (workspaceFile?.scheme === "file") { + return Uri.joinPath(workspaceFile, ".."); + } + + const allWorkspaceFolders = getOnDiskWorkspaceFoldersObjects(); + + if (allWorkspaceFolders.length === 1) { + return allWorkspaceFolders[0].uri; + } + + // Get the system temp directory and convert it to a URI so it's normalized + const systemTmpdir = Uri.file(tmpdir()); + + const workspaceFolders = allWorkspaceFolders.filter((folder) => { + // Never use a workspace folder that is in the system temp directory + return !folder.uri.fsPath.startsWith(systemTmpdir.fsPath); + }); + + // The path closest to the workspace folders is the last element of the common root + const commonRootUri = findCommonAncestor( + workspaceFolders.map((folder) => folder.uri), + ); + + // If there is no common root URI, try to find a .git folder in the workspace folders + if (commonRootUri === undefined) { + return await findGitFolder(workspaceFolders); + } + + return commonRootUri; +} + +async function findGitFolder( + workspaceFolders: WorkspaceFolder[], +): Promise { + // Go through all workspace folders one-by-one and try to find the closest .git folder for each one + const folders = await Promise.all( + workspaceFolders.map(async (folder) => { + const ancestors = getAncestors(folder.uri); + + // Reverse the ancestors so we're going from closest to furthest + ancestors.reverse(); + + const gitFoldersExists = await Promise.all( + ancestors.map(async (uri) => { + const gitFolder = Uri.joinPath(uri, ".git"); + try { + const stat = await workspace.fs.stat(gitFolder); + // Check whether it's a directory + return (stat.type & FileType.Directory) !== 0; + } catch { + return false; + } + }), + ); + + // Find the first ancestor that has a .git folder + const ancestorIndex = gitFoldersExists.findIndex((exists) => exists); + + if (ancestorIndex === -1) { + return undefined; + } + + return [ancestorIndex, ancestors[ancestorIndex]]; + }), + ); + + const validFolders = folders.filter( + (folder): folder is [number, Uri] => folder !== undefined, + ); + if (validFolders.length === 0) { + return undefined; + } + + // Find the .git folder which is closest to a workspace folder + const closestFolder = validFolders.reduce((closestFolder, folder) => { + if (folder[0] < closestFolder[0]) { + return folder; + } + return closestFolder; + }, validFolders[0]); + + return closestFolder?.[1]; +} + +export async function packLocationToAbsolute( + packLocation: string, + logger: NotificationLogger, +): Promise { + let userPackLocation = packLocation.trim(); + + if (!isAbsolute(userPackLocation)) { + const rootDirectory = await getRootWorkspaceDirectory(); + if (!rootDirectory) { + void logger.log("Unable to determine root workspace directory"); + + return undefined; + } + + userPackLocation = resolve(rootDirectory.fsPath, userPackLocation); + } + + userPackLocation = normalize(userPackLocation); + + if (!isAbsolute(userPackLocation)) { + // This shouldn't happen, but just in case + void showAndLogErrorMessage( + logger, + `Invalid pack location: ${userPackLocation}`, + ); + + return undefined; + } + + // If we are at the root of the filesystem, then something is wrong since + // this should never be the location of a pack + if (userPackLocation === resolve(userPackLocation, "..")) { + void showAndLogErrorMessage( + logger, + `Invalid pack location: ${userPackLocation}`, + ); + + return undefined; + } + + return userPackLocation; +} + +/** + * This function will try to add the pack location as a workspace folder if it's not already in a + * workspace folder and the workspace is a multi-root workspace. + */ +export async function ensurePackLocationIsInWorkspaceFolder( + packLocation: string, + modelConfig: ModelConfig, + logger: NotificationLogger, +): Promise { + const workspaceFolders = getOnDiskWorkspaceFoldersObjects(); + + const existsInWorkspaceFolder = workspaceFolders.some((folder) => + containsPath(folder.uri.fsPath, packLocation), + ); + + if (existsInWorkspaceFolder) { + // If the pack location is already in a workspace folder, we don't need to do anything + return; + } + + if (workspace.workspaceFile === undefined) { + // If we're not in a workspace, we can't add a workspace folder without reloading the window, + // so we'll not do anything + return; + } + + // To find the "correct" directory to add as a workspace folder, we'll generate a few different + // pack locations and find the common ancestor of the directories. This is the directory that + // we'll add as a workspace folder. + + // Generate a few different pack locations to get an accurate common ancestor + const otherPackLocations = await Promise.all( + Array.from({ length: 3 }).map(() => + packLocationToAbsolute( + modelConfig.getPackLocation(nanoid(), { + database: nanoid(), + language: nanoid(), + name: nanoid(), + owner: nanoid(), + }), + logger, + ), + ), + ); + + const otherPackLocationUris = otherPackLocations + .filter((loc): loc is string => loc !== undefined) + .map((loc) => Uri.file(loc)); + + if (otherPackLocationUris.length === 0) { + void logger.log( + `Failed to generate different pack locations, not adding workspace folder.`, + ); + return; + } + + const commonRootUri = findCommonAncestor([ + Uri.file(packLocation), + ...otherPackLocationUris, + ]); + + if (commonRootUri === undefined) { + void logger.log( + `Failed to find common ancestor for ${packLocation} and ${otherPackLocationUris[0].fsPath}, not adding workspace folder.`, + ); + return; + } + + if ( + !workspace.updateWorkspaceFolders( + workspace.workspaceFolders?.length ?? 0, + 0, + { + name: "CodeQL Extension Packs", + uri: commonRootUri, + }, + ) + ) { + void logger.log( + `Failed to add workspace folder for extensions at ${commonRootUri.fsPath}`, + ); + return; + } +} diff --git a/extensions/ql-vscode/src/model-editor/generate.ts b/extensions/ql-vscode/src/model-editor/generate.ts new file mode 100644 index 00000000000..157ed78b78d --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/generate.ts @@ -0,0 +1,104 @@ +import type { CancellationToken } from "vscode"; +import type { DatabaseItem } from "../databases/local-databases"; +import { basename } from "path"; +import type { QueryRunner } from "../query-server"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { runQuery } from "../local-queries/run-query"; +import type { QueryConstraints } from "../local-queries"; +import { resolveQueries } from "../local-queries"; +import type { DecodedBqrs } from "../common/bqrs-cli-types"; + +type GenerateQueriesOptions = { + queryConstraints: QueryConstraints; + filterQueries?: (queryPath: string) => boolean; + onResults: (queryPath: string, results: DecodedBqrs) => void | Promise; + + cliServer: CodeQLCliServer; + queryRunner: QueryRunner; + queryStorageDir: string; + databaseItem: DatabaseItem; + progress: ProgressCallback; + token: CancellationToken; +}; + +export async function runGenerateQueries(options: GenerateQueriesOptions) { + const { queryConstraints, filterQueries, onResults } = options; + + options.progress({ + message: "Resolving queries", + step: 1, + maxStep: 5000, + }); + + const packsToSearch = [`codeql/${options.databaseItem.language}-queries`]; + const queryPaths = await resolveQueries( + options.cliServer, + packsToSearch, + "generate model", + queryConstraints, + ); + + const filteredQueryPaths = filterQueries + ? queryPaths.filter(filterQueries) + : queryPaths; + + const maxStep = filteredQueryPaths.length * 1000; + + for (let i = 0; i < filteredQueryPaths.length; i++) { + const queryPath = filteredQueryPaths[i]; + + const bqrs = await runSingleGenerateQuery(queryPath, i, maxStep, options); + if (bqrs) { + await onResults(queryPath, bqrs); + } + } +} + +async function runSingleGenerateQuery( + queryPath: string, + queryStep: number, + maxStep: number, + { + cliServer, + queryRunner, + queryStorageDir, + databaseItem, + progress, + token, + }: GenerateQueriesOptions, +): Promise { + const queryBasename = basename(queryPath); + + // Run the query + const completedQuery = await runQuery({ + queryRunner, + databaseItem, + queryPath, + queryStorageDir, + additionalPacks: getOnDiskWorkspaceFolders(), + extensionPacks: undefined, + progress: ({ step, message }) => + progress({ + message: `Generating model from ${queryBasename}: ${message}`, + step: queryStep * 1000 + step, + maxStep, + }), + token, + }); + + if (!completedQuery) { + return undefined; + } + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but got ${queryResults.length}`, + ); + } + + return cliServer.bqrsDecodeAll( + completedQuery.outputDir.getBqrsPath(queryResults[0].outputBaseName), + ); +} diff --git a/extensions/ql-vscode/src/model-editor/languages/csharp/index.ts b/extensions/ql-vscode/src/model-editor/languages/csharp/index.ts new file mode 100644 index 00000000000..e30e604b467 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/csharp/index.ts @@ -0,0 +1,21 @@ +import type { ModelsAsDataLanguage } from "../models-as-data"; +import { staticLanguage } from "../static"; + +export const csharp: ModelsAsDataLanguage = { + ...staticLanguage, + predicates: { + ...staticLanguage.predicates, + sink: { + ...staticLanguage.predicates.sink, + }, + source: { + ...staticLanguage.predicates.source, + supportedKinds: [ + ...staticLanguage.predicates.source.supportedKinds, + // https://github.com/github/codeql/blob/0c5ea975a4c4dc5c439b908c006e440cb9bdf926/shared/mad/codeql/mad/ModelValidation.qll#L122-L123 + "file-write", + "windows-registry", + ], + }, + }, +}; diff --git a/extensions/ql-vscode/src/model-editor/languages/index.ts b/extensions/ql-vscode/src/model-editor/languages/index.ts new file mode 100644 index 00000000000..a96cb4788ae --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/index.ts @@ -0,0 +1,2 @@ +export * from "./languages"; +export * from "./models-as-data"; diff --git a/extensions/ql-vscode/src/model-editor/languages/java/index.ts b/extensions/ql-vscode/src/model-editor/languages/java/index.ts new file mode 100644 index 00000000000..e19fd2e79ae --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/java/index.ts @@ -0,0 +1,42 @@ +import type { ModelsAsDataLanguage } from "../models-as-data"; +import { staticLanguage } from "../static"; + +export const java: ModelsAsDataLanguage = { + ...staticLanguage, + predicates: { + ...staticLanguage.predicates, + sink: { + ...staticLanguage.predicates.sink, + supportedKinds: [ + ...staticLanguage.predicates.sink.supportedKinds, + // https://github.com/github/codeql/blob/0c5ea975a4c4dc5c439b908c006e440cb9bdf926/shared/mad/codeql/mad/ModelValidation.qll#L32-L37 + "bean-validation", + "fragment-injection", + "groovy-injection", + "hostname-verification", + "information-leak", + "intent-redirection", + "jexl-injection", + "jndi-injection", + "mvel-injection", + "notification", + "ognl-injection", + "pending-intents", + "response-splitting", + "trust-boundary-violation", + "template-injection", + "xpath-injection", + "xslt-injection", + ], + }, + source: { + ...staticLanguage.predicates.source, + supportedKinds: [ + ...staticLanguage.predicates.source.supportedKinds, + // https://github.com/github/codeql/blob/0c5ea975a4c4dc5c439b908c006e440cb9bdf926/shared/mad/codeql/mad/ModelValidation.qll#L120-L121 + "android-external-storage-dir", + "contentprovider", + ], + }, + }, +}; diff --git a/extensions/ql-vscode/src/model-editor/languages/languages.ts b/extensions/ql-vscode/src/model-editor/languages/languages.ts new file mode 100644 index 00000000000..a2a013c5eea --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/languages.ts @@ -0,0 +1,39 @@ +import { QueryLanguage } from "../../common/query-language"; +import type { + ModelsAsDataLanguage, + ModelsAsDataLanguagePredicates, +} from "./models-as-data"; +import { csharp } from "./csharp"; +import { java } from "./java"; +import { python } from "./python"; +import { ruby } from "./ruby"; + +const languages: Partial> = { + [QueryLanguage.CSharp]: csharp, + [QueryLanguage.Java]: java, + [QueryLanguage.Python]: python, + [QueryLanguage.Ruby]: ruby, +}; + +export function getModelsAsDataLanguage( + language: QueryLanguage, +): ModelsAsDataLanguage { + const definition = languages[language]; + if (!definition) { + throw new Error(`No models-as-data definition for ${language}`); + } + return definition; +} + +export function getModelsAsDataLanguageModel< + T extends keyof ModelsAsDataLanguagePredicates, +>( + language: QueryLanguage, + model: T, +): NonNullable { + const definition = getModelsAsDataLanguage(language).predicates[model]; + if (!definition) { + throw new Error(`No models-as-data predicate for ${model}`); + } + return definition; +} diff --git a/extensions/ql-vscode/src/model-editor/languages/models-as-data.ts b/extensions/ql-vscode/src/model-editor/languages/models-as-data.ts new file mode 100644 index 00000000000..9ce524dc838 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/models-as-data.ts @@ -0,0 +1,195 @@ +import type { EndpointType, MethodArgument, MethodDefinition } from "../method"; +import type { + ModeledMethod, + NeutralModeledMethod, + SinkModeledMethod, + SourceModeledMethod, + SummaryModeledMethod, + TypeModeledMethod, +} from "../modeled-method"; +import type { DataTuple, ModelExtension } from "../model-extension-file"; +import type { Mode } from "../shared/mode"; +import type { QueryConstraints } from "../../local-queries/query-constraints"; +import type { + DecodedBqrs, + DecodedBqrsChunk, +} from "../../common/bqrs-cli-types"; +import type { BaseLogger } from "../../common/logging"; +import type { AccessPathSuggestionRow } from "../suggestions"; + +// This is a subset of the model config that doesn't import the vscode module. +// It only includes settings that are actually used. +export type ModelConfig = { + flowGeneration: boolean; +}; + +/** + * This function creates a new model config object from the given model config object. + * The new model config object is a deep copy of the given model config object. + * + * @param modelConfig The model config object to create a new model config object from. + * In most cases, this is a `ModelConfigListener`. + */ +export function createModelConfig(modelConfig: ModelConfig): ModelConfig { + return { + flowGeneration: modelConfig.flowGeneration, + }; +} + +export const defaultModelConfig: ModelConfig = { + flowGeneration: false, +}; + +type GenerateMethodDefinition = (method: T) => DataTuple[]; +type ReadModeledMethod = (row: DataTuple[]) => ModeledMethod; + +type IsHiddenContext = { + method: MethodDefinition; + config: ModelConfig; +}; + +export type ModelsAsDataLanguagePredicate = { + extensiblePredicate: string; + supportedKinds?: string[]; + /** + * The endpoint types that this predicate supports. If not specified, the predicate supports all + * endpoint types. + */ + supportedEndpointTypes?: EndpointType[]; + generateMethodDefinition: GenerateMethodDefinition; + readModeledMethod: ReadModeledMethod; + + /** + * Controls whether this predicate is hidden for a certain method. This only applies to the UI. + * If not specified, the predicate is visible for all methods. + * + * @param method The method to check if the predicate is hidden for. + */ + isHidden?: (context: IsHiddenContext) => boolean; +}; + +export type GenerationContext = { + mode: Mode; + config: ModelConfig; +}; + +type ParseGenerationResults = ( + // The path to the query that generated the results. + queryPath: string, + // The results of the query. + bqrs: DecodedBqrs, + // The language-specific predicate that was used to generate the results. This is passed to allow + // sharing of code between different languages. + modelsAsDataLanguage: ModelsAsDataLanguage, + // The logger to use for logging. + logger: BaseLogger, + // Context about this invocation of the generation. + context: GenerationContext, +) => ModeledMethod[]; + +type ModelsAsDataLanguageModelGeneration = { + queryConstraints: (mode: Mode) => QueryConstraints; + filterQueries?: (queryPath: string) => boolean; + parseResults: ParseGenerationResults; +}; + +type ParseResultsToYaml = ( + // The path to the query that generated the results. + queryPath: string, + // The results of the query. + bqrs: DecodedBqrs, + // The language-specific predicate that was used to generate the results. This is passed to allow + // sharing of code between different languages. + modelsAsDataLanguage: ModelsAsDataLanguage, + // The logger to use for logging. + logger: BaseLogger, +) => ModelExtension[]; + +export enum AutoModelGenerationType { + /** + * Auto model generation is disabled and will not be run. + */ + Disabled = "disabled", + /** + * The models are generated to a separate file (suffixed with .model.generated.yml). + */ + SeparateFile = "separateFile", + /** + * The models are added as a model in the model editor, but are not automatically saved. + * The user can view them and choose to save them. + */ + Models = "models", +} + +type ModelsAsDataLanguageAutoModelGeneration = { + queryConstraints: (mode: Mode) => QueryConstraints; + filterQueries?: (queryPath: string) => boolean; + /** + * This function is only used when type is `separateFile`. + */ + parseResultsToYaml: ParseResultsToYaml; + /** + * This function is only used when type is `models`. + */ + parseResults: ParseGenerationResults; + type: (context: GenerationContext) => AutoModelGenerationType; +}; + +type ModelsAsDataLanguageAccessPathSuggestions = { + queryConstraints: (mode: Mode) => QueryConstraints; + parseResults: ( + // The results of a single predicate of the query. + bqrs: DecodedBqrsChunk, + // The language-specific predicate that was used to generate the results. This is passed to allow + // sharing of code between different languages. + modelsAsDataLanguage: ModelsAsDataLanguage, + // The logger to use for logging. + logger: BaseLogger, + ) => AccessPathSuggestionRow[]; +}; + +export type ModelsAsDataLanguagePredicates = { + source?: ModelsAsDataLanguagePredicate; + sink?: ModelsAsDataLanguagePredicate; + summary?: ModelsAsDataLanguagePredicate; + neutral?: ModelsAsDataLanguagePredicate; + type?: ModelsAsDataLanguagePredicate; +}; + +export type MethodArgumentOptions = { + options: MethodArgument[]; + defaultArgumentPath: string; +}; + +export type ModelsAsDataLanguage = { + /** + * The modes that are available for this language. If not specified, all + * modes are available. + */ + availableModes?: Mode[]; + createMethodSignature: (method: MethodDefinition) => string; + /** + * This allows modifying the endpoint type automatically assigned to an endpoint. The default + * endpoint type is undefined, and if this method returns undefined, the default endpoint type will + * be determined by heuristics. + * @param method The method to get the endpoint type for. The endpoint type can be undefined if the + * query does not return an endpoint type. + * @param endpointKind An optional column that may be provided by the query to help determine the + * endpoint type. + */ + endpointTypeForEndpoint?: ( + method: Omit & { + endpointType: EndpointType | undefined; + }, + endpointKind: string | undefined, + ) => EndpointType | undefined; + predicates: ModelsAsDataLanguagePredicates; + modelGeneration?: ModelsAsDataLanguageModelGeneration; + autoModelGeneration?: ModelsAsDataLanguageAutoModelGeneration; + accessPathSuggestions?: ModelsAsDataLanguageAccessPathSuggestions; + /** + * Returns the list of valid arguments that can be selected for the given method. + * @param method The method to get the valid arguments for. + */ + getArgumentOptions: (method: MethodDefinition) => MethodArgumentOptions; +}; diff --git a/extensions/ql-vscode/src/model-editor/languages/python/access-paths.ts b/extensions/ql-vscode/src/model-editor/languages/python/access-paths.ts new file mode 100644 index 00000000000..010719b5773 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/python/access-paths.ts @@ -0,0 +1,195 @@ +import { parseAccessPathTokens } from "../../shared/access-paths"; +import type { MethodDefinition } from "../../method"; +import { EndpointType } from "../../method"; + +const memberTokenRegex = /^Member\[(.+)]$/; + +// In Python, the type can contain both the package name and the type name. +export function parsePythonType(type: string) { + // The first part is always the package name. All remaining parts are the type + // name. + + const parts = type.split("."); + const packageName = parts.shift() ?? ""; + + return { + packageName, + typeName: parts.join("."), + }; +} + +// The type name can also be specified in the type, so this will combine +// the already parsed type name and the type name from the access path. +export function parsePythonAccessPath( + path: string, + shortTypeName: string, +): { + typeName: string; + methodName: string; + endpointType: EndpointType; + path: string; +} { + const tokens = parseAccessPathTokens(path); + + if (tokens.length === 0) { + const typeName = shortTypeName.endsWith("!") + ? shortTypeName.slice(0, -1) + : shortTypeName; + + return { + typeName, + methodName: "", + endpointType: EndpointType.Method, + path: "", + }; + } + + const typeParts = []; + let endpointType = EndpointType.Function; + // If a short type name was given and it doesn't end in a `!`, then this refers to a method. + if (shortTypeName !== "" && !shortTypeName.endsWith("!")) { + endpointType = EndpointType.Method; + } + + let remainingTokens: typeof tokens = []; + + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const memberMatch = token.text.match(memberTokenRegex); + if (memberMatch) { + typeParts.push(memberMatch[1]); + } else if (token.text === "Instance") { + // Alternative way of specifying that this refers to a method. + endpointType = EndpointType.Method; + } else { + remainingTokens = tokens.slice(i); + break; + } + } + + const methodName = typeParts.pop() ?? ""; + let typeName = typeParts.join("."); + const remainingPath = remainingTokens.map((token) => token.text).join("."); + + if (shortTypeName !== "") { + if (shortTypeName.endsWith("!")) { + // The actual type name is the name without the `!`. + shortTypeName = shortTypeName.slice(0, -1); + } + + if (typeName !== "") { + typeName = `${shortTypeName}.${typeName}`; + } else { + typeName = shortTypeName; + } + } + + return { + methodName, + typeName, + endpointType, + path: remainingPath, + }; +} + +export function parsePythonTypeAndPath( + type: string, + path: string, +): { + packageName: string; + typeName: string; + methodName: string; + endpointType: EndpointType; + path: string; +} { + const { packageName, typeName: shortTypeName } = parsePythonType(type); + const { + typeName, + methodName, + endpointType, + path: remainingPath, + } = parsePythonAccessPath(path, shortTypeName); + + return { + packageName, + typeName, + methodName, + endpointType, + path: remainingPath, + }; +} + +export function pythonMethodSignature(typeName: string, methodName: string) { + return `${typeName}#${methodName}`; +} + +export function pythonType( + packageName: string, + typeName: string, + endpointType: EndpointType, +) { + if (typeName !== "" && packageName !== "") { + return `${packageName}.${typeName}${endpointType === EndpointType.Function ? "!" : ""}`; + } + + return `${packageName}${typeName}`; +} + +export function pythonMethodPath(methodName: string) { + if (methodName === "") { + return ""; + } + + return `Member[${methodName}]`; +} + +export function pythonPath(methodName: string, path: string) { + const methodPath = pythonMethodPath(methodName); + if (methodPath === "") { + return path; + } + + if (path === "") { + return methodPath; + } + + return `${methodPath}.${path}`; +} + +export function pythonEndpointType( + method: Omit, + endpointKind: string | undefined, +): EndpointType { + switch (endpointKind) { + case "Function": + return EndpointType.Function; + case "InstanceMethod": + return EndpointType.Method; + case "ClassMethod": + return EndpointType.ClassMethod; + case "StaticMethod": + return EndpointType.StaticMethod; + case "InitMethod": + return EndpointType.Constructor; + case "Class": + return EndpointType.Class; + } + + // Legacy behavior for when the kind column is missing. + if ( + method.methodParameters.startsWith("(self,") || + method.methodParameters === "(self)" + ) { + return EndpointType.Method; + } + return EndpointType.Function; +} + +export function hasPythonSelfArgument(endpointType: EndpointType): boolean { + // Instance methods and class methods both use `Argument[self]` for the first parameter. The first + // parameter after self is called `Argument[0]`. + return ( + endpointType === EndpointType.Method || + endpointType === EndpointType.ClassMethod + ); +} diff --git a/extensions/ql-vscode/src/model-editor/languages/python/index.ts b/extensions/ql-vscode/src/model-editor/languages/python/index.ts new file mode 100644 index 00000000000..d6611d4ea2c --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/python/index.ts @@ -0,0 +1,250 @@ +import type { ModelsAsDataLanguage } from "../models-as-data"; +import { sharedExtensiblePredicates, sharedKinds } from "../shared"; +import { Mode } from "../../shared/mode"; +import type { MethodArgument } from "../../method"; +import { EndpointType, getArgumentsList } from "../../method"; +import { + hasPythonSelfArgument, + parsePythonTypeAndPath, + pythonEndpointType, + pythonMethodPath, + pythonMethodSignature, + pythonPath, + pythonType, +} from "./access-paths"; + +export const python: ModelsAsDataLanguage = { + availableModes: [Mode.Framework], + createMethodSignature: ({ typeName, methodName }) => + `${typeName}#${methodName}`, + endpointTypeForEndpoint: (method, endpointKind) => + pythonEndpointType(method, endpointKind), + predicates: { + source: { + extensiblePredicate: sharedExtensiblePredicates.source, + supportedKinds: sharedKinds.source, + supportedEndpointTypes: [ + EndpointType.Method, + EndpointType.Function, + EndpointType.Constructor, + EndpointType.ClassMethod, + EndpointType.StaticMethod, + ], + // extensible predicate sourceModel( + // string type, string path, string kind + // ); + generateMethodDefinition: (method) => [ + pythonType(method.packageName, method.typeName, method.endpointType), + pythonPath(method.methodName, method.output), + method.kind, + ], + readModeledMethod: (row) => { + const { + packageName, + typeName, + methodName, + endpointType, + path: output, + } = parsePythonTypeAndPath(row[0] as string, row[1] as string); + return { + type: "source", + output, + kind: row[2] as string, + provenance: "manual", + signature: pythonMethodSignature(typeName, methodName), + endpointType, + packageName, + typeName, + methodName, + methodParameters: "", + }; + }, + }, + sink: { + extensiblePredicate: sharedExtensiblePredicates.sink, + supportedKinds: sharedKinds.sink, + supportedEndpointTypes: [ + EndpointType.Method, + EndpointType.Function, + EndpointType.Constructor, + EndpointType.ClassMethod, + EndpointType.StaticMethod, + ], + // extensible predicate sinkModel( + // string type, string path, string kind + // ); + generateMethodDefinition: (method) => { + return [ + pythonType(method.packageName, method.typeName, method.endpointType), + pythonPath(method.methodName, method.input), + method.kind, + ]; + }, + readModeledMethod: (row) => { + const { + packageName, + typeName, + methodName, + endpointType, + path: input, + } = parsePythonTypeAndPath(row[0] as string, row[1] as string); + return { + type: "sink", + input, + kind: row[2] as string, + provenance: "manual", + signature: pythonMethodSignature(typeName, methodName), + endpointType, + packageName, + typeName, + methodName, + methodParameters: "", + }; + }, + }, + summary: { + extensiblePredicate: sharedExtensiblePredicates.summary, + supportedKinds: sharedKinds.summary, + supportedEndpointTypes: [ + EndpointType.Method, + EndpointType.Function, + EndpointType.Constructor, + EndpointType.ClassMethod, + EndpointType.StaticMethod, + ], + // extensible predicate summaryModel( + // string type, string path, string input, string output, string kind + // ); + generateMethodDefinition: (method) => [ + pythonType(method.packageName, method.typeName, method.endpointType), + pythonMethodPath(method.methodName), + method.input, + method.output, + method.kind, + ], + readModeledMethod: (row) => { + const { packageName, typeName, methodName, endpointType, path } = + parsePythonTypeAndPath(row[0] as string, row[1] as string); + if (path !== "") { + throw new Error("Summary path must be a method"); + } + return { + type: "summary", + input: row[2] as string, + output: row[3] as string, + kind: row[4] as string, + provenance: "manual", + signature: pythonMethodSignature(typeName, methodName), + endpointType, + packageName, + typeName, + methodName, + methodParameters: "", + }; + }, + }, + neutral: { + extensiblePredicate: sharedExtensiblePredicates.neutral, + supportedKinds: sharedKinds.neutral, + // extensible predicate neutralModel( + // string type, string path, string kind + // ); + generateMethodDefinition: (method) => [ + pythonType(method.packageName, method.typeName, method.endpointType), + pythonMethodPath(method.methodName), + method.kind, + ], + readModeledMethod: (row) => { + const { packageName, typeName, methodName, endpointType, path } = + parsePythonTypeAndPath(row[0] as string, row[1] as string); + if (path !== "") { + throw new Error("Neutral path must be a method"); + } + return { + type: "neutral", + kind: row[2] as string, + provenance: "manual", + signature: pythonMethodSignature(typeName, methodName), + endpointType, + packageName, + typeName, + methodName, + methodParameters: "", + }; + }, + }, + type: { + extensiblePredicate: "typeModel", + // extensible predicate typeModel(string type1, string type2, string path); + generateMethodDefinition: (method) => [ + method.relatedTypeName, + pythonType(method.packageName, method.typeName, method.endpointType), + pythonPath(method.methodName, method.path), + ], + readModeledMethod: (row) => { + const { packageName, typeName, methodName, endpointType, path } = + parsePythonTypeAndPath(row[1] as string, row[2] as string); + + return { + type: "type", + relatedTypeName: row[0] as string, + path, + signature: pythonMethodSignature(typeName, methodName), + endpointType, + packageName, + typeName, + methodName, + methodParameters: "", + }; + }, + }, + }, + getArgumentOptions: (method) => { + // Argument and Parameter are equivalent in Python, but we'll use Argument in the model editor + const argumentsList = getArgumentsList(method.methodParameters).map( + (argument, index): MethodArgument => { + if (hasPythonSelfArgument(method.endpointType) && index === 0) { + return { + path: "Argument[self]", + label: `Argument[self]: ${argument}`, + }; + } + + // If this endpoint has a self argument, self does not count as an argument index so we + // should start at 0 for the second argument + if (hasPythonSelfArgument(method.endpointType)) { + index -= 1; + } + + // Keyword-only arguments end with `:` in the query + if (argument.endsWith(":")) { + return { + path: `Argument[${argument}]`, + label: `Argument[${argument}]: ${argument.substring(0, argument.length - 1)}`, + }; + } + + // Positional-only arguments end with `/` in the query + if (argument.endsWith("/")) { + return { + path: `Argument[${index}]`, + label: `Argument[${index}]: ${argument.substring(0, argument.length - 1)}`, + }; + } + + // All other arguments are both keyword and positional + return { + path: `Argument[${index},${argument}:]`, + label: `Argument[${index},${argument}:]: ${argument}`, + }; + }, + ); + + return { + options: argumentsList, + // If there are no arguments, we will default to "Argument[self]" + defaultArgumentPath: + argumentsList.length > 0 ? argumentsList[0].path : "Argument[self]", + }; + }, +}; diff --git a/extensions/ql-vscode/src/model-editor/languages/ruby/access-paths.ts b/extensions/ql-vscode/src/model-editor/languages/ruby/access-paths.ts new file mode 100644 index 00000000000..1210fcdd0a3 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/ruby/access-paths.ts @@ -0,0 +1,90 @@ +import { parseAccessPathTokens } from "../../shared/access-paths"; +import { EndpointType } from "../../method"; + +const methodTokenRegex = /^Method\[(.+)]$/; + +export function parseRubyMethodFromPath(path: string): string { + const tokens = parseAccessPathTokens(path); + + if (tokens.length === 0) { + return ""; + } + + const match = tokens[0].text.match(methodTokenRegex); + if (match) { + return match[1]; + } else { + return ""; + } +} + +export function parseRubyAccessPath(path: string): { + methodName: string; + path: string; +} { + const tokens = parseAccessPathTokens(path); + + if (tokens.length === 0) { + return { methodName: "", path: "" }; + } + + const match = tokens[0].text.match(methodTokenRegex); + + if (match) { + return { + methodName: match[1], + path: tokens + .slice(1) + .map((token) => token.text) + .join("."), + }; + } else { + return { methodName: "", path: "" }; + } +} + +export function rubyMethodSignature(typeName: string, methodName: string) { + return `${typeName}#${methodName}`; +} + +export function rubyMethodPath(methodName: string) { + if (methodName === "") { + return ""; + } + + return `Method[${methodName}]`; +} + +export function rubyPath(methodName: string, path: string) { + const methodPath = rubyMethodPath(methodName); + if (methodPath === "") { + return path; + } + + return `${methodPath}.${path}`; +} + +/** For the purpose of the model editor, we are defining the endpoint types as follows: + * - Class: A class instance + * - Module: The class itself + * - Method: A method in a class + * - Constructor: A constructor method + * @param typeName + * @param methodName + */ +export function rubyEndpointType(typeName: string, methodName: string) { + if (typeName.endsWith("!") && methodName === "new") { + // This is a constructor + return EndpointType.Constructor; + } + + if (typeName.endsWith("!") && methodName === "") { + return EndpointType.Module; + } + + if (methodName === "") { + return EndpointType.Class; + } + + return EndpointType.Method; +} diff --git a/extensions/ql-vscode/src/model-editor/languages/ruby/generate.ts b/extensions/ql-vscode/src/model-editor/languages/ruby/generate.ts new file mode 100644 index 00000000000..64a10f0ee53 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/ruby/generate.ts @@ -0,0 +1,50 @@ +import type { BaseLogger } from "../../../common/logging"; +import type { DecodedBqrs } from "../../../common/bqrs-cli-types"; +import type { ModelsAsDataLanguage } from "../models-as-data"; +import type { ModeledMethod } from "../../modeled-method"; +import type { DataTuple } from "../../model-extension-file"; + +export function parseGenerateModelResults( + _queryPath: string, + bqrs: DecodedBqrs, + modelsAsDataLanguage: ModelsAsDataLanguage, + logger: BaseLogger, +): ModeledMethod[] { + const modeledMethods: ModeledMethod[] = []; + + for (const resultSetName in bqrs) { + const definition = Object.values(modelsAsDataLanguage.predicates).find( + (definition) => definition.extensiblePredicate === resultSetName, + ); + if (definition === undefined) { + void logger.log(`No predicate found for ${resultSetName}`); + + continue; + } + + const resultSet = bqrs[resultSetName]; + + if ( + resultSet.tuples.some((tuple) => + tuple.some((value) => typeof value === "object"), + ) + ) { + void logger.log( + `Skipping ${resultSetName} because it contains undefined values`, + ); + continue; + } + + modeledMethods.push( + ...resultSet.tuples.map((tuple) => { + const row = tuple.filter( + (value): value is DataTuple => typeof value !== "object", + ); + + return definition.readModeledMethod(row); + }), + ); + } + + return modeledMethods; +} diff --git a/extensions/ql-vscode/src/model-editor/languages/ruby/index.ts b/extensions/ql-vscode/src/model-editor/languages/ruby/index.ts new file mode 100644 index 00000000000..b78e3909dc4 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/ruby/index.ts @@ -0,0 +1,276 @@ +import type { ModelsAsDataLanguage } from "../models-as-data"; +import { AutoModelGenerationType } from "../models-as-data"; +import { sharedExtensiblePredicates, sharedKinds } from "../shared"; +import { Mode } from "../../shared/mode"; +import { parseGenerateModelResults } from "./generate"; +import type { MethodArgument } from "../../method"; +import { EndpointType, getArgumentsList } from "../../method"; +import { + parseRubyAccessPath, + parseRubyMethodFromPath, + rubyEndpointType, + rubyMethodPath, + rubyMethodSignature, + rubyPath, +} from "./access-paths"; +import { parseAccessPathSuggestionsResults } from "./suggestions"; +import { modeTag } from "../../mode-tag"; + +export const ruby: ModelsAsDataLanguage = { + availableModes: [Mode.Framework], + createMethodSignature: ({ typeName, methodName }) => + `${typeName}#${methodName}`, + endpointTypeForEndpoint: ({ typeName, methodName }) => + rubyEndpointType(typeName, methodName), + predicates: { + source: { + extensiblePredicate: sharedExtensiblePredicates.source, + supportedKinds: sharedKinds.source, + supportedEndpointTypes: [EndpointType.Method, EndpointType.Class], + // extensible predicate sourceModel( + // string type, string path, string kind + // ); + generateMethodDefinition: (method) => [ + method.typeName, + rubyPath(method.methodName, method.output), + method.kind, + ], + readModeledMethod: (row) => { + const typeName = row[0] as string; + const { methodName, path: output } = parseRubyAccessPath( + row[1] as string, + ); + return { + type: "source", + output, + kind: row[2] as string, + provenance: "manual", + signature: rubyMethodSignature(typeName, methodName), + endpointType: rubyEndpointType(typeName, methodName), + packageName: "", + typeName, + methodName, + methodParameters: "", + }; + }, + }, + sink: { + extensiblePredicate: sharedExtensiblePredicates.sink, + supportedKinds: sharedKinds.sink, + supportedEndpointTypes: [EndpointType.Method, EndpointType.Constructor], + // extensible predicate sinkModel( + // string type, string path, string kind + // ); + generateMethodDefinition: (method) => { + return [ + method.typeName, + rubyPath(method.methodName, method.input), + method.kind, + ]; + }, + readModeledMethod: (row) => { + const typeName = row[0] as string; + const { methodName, path: input } = parseRubyAccessPath( + row[1] as string, + ); + return { + type: "sink", + input, + kind: row[2] as string, + provenance: "manual", + signature: rubyMethodSignature(typeName, methodName), + endpointType: rubyEndpointType(typeName, methodName), + packageName: "", + typeName, + methodName, + methodParameters: "", + }; + }, + }, + summary: { + extensiblePredicate: sharedExtensiblePredicates.summary, + supportedKinds: sharedKinds.summary, + supportedEndpointTypes: [EndpointType.Method, EndpointType.Constructor], + // extensible predicate summaryModel( + // string type, string path, string input, string output, string kind + // ); + generateMethodDefinition: (method) => [ + method.typeName, + rubyMethodPath(method.methodName), + method.input, + method.output, + method.kind, + ], + readModeledMethod: (row) => { + const typeName = row[0] as string; + const methodName = parseRubyMethodFromPath(row[1] as string); + return { + type: "summary", + input: row[2] as string, + output: row[3] as string, + kind: row[4] as string, + provenance: "manual", + signature: rubyMethodSignature(typeName, methodName), + endpointType: rubyEndpointType(typeName, methodName), + packageName: "", + typeName, + methodName, + methodParameters: "", + }; + }, + }, + neutral: { + extensiblePredicate: sharedExtensiblePredicates.neutral, + supportedKinds: sharedKinds.neutral, + // extensible predicate neutralModel( + // string type, string path, string kind + // ); + generateMethodDefinition: (method) => [ + method.typeName, + rubyMethodPath(method.methodName), + method.kind, + ], + readModeledMethod: (row) => { + const typeName = row[0] as string; + const methodName = parseRubyMethodFromPath(row[1] as string); + return { + type: "neutral", + kind: row[2] as string, + provenance: "manual", + signature: rubyMethodSignature(typeName, methodName), + endpointType: rubyEndpointType(typeName, methodName), + packageName: "", + typeName, + methodName, + methodParameters: "", + }; + }, + }, + type: { + extensiblePredicate: "typeModel", + // extensible predicate typeModel(string type1, string type2, string path); + generateMethodDefinition: (method) => [ + method.relatedTypeName, + method.typeName, + rubyPath(method.methodName, method.path), + ], + readModeledMethod: (row) => { + const typeName = row[1] as string; + const { methodName, path } = parseRubyAccessPath(row[2] as string); + + return { + type: "type", + relatedTypeName: row[0] as string, + path, + signature: rubyMethodSignature(typeName, methodName), + endpointType: rubyEndpointType(typeName, methodName), + packageName: "", + typeName, + methodName, + methodParameters: "", + }; + }, + }, + }, + modelGeneration: { + queryConstraints: (mode) => ({ + kind: "table", + "tags contain all": ["modeleditor", "generate-model", modeTag(mode)], + }), + parseResults: parseGenerateModelResults, + }, + autoModelGeneration: { + queryConstraints: (mode) => ({ + kind: "table", + "tags contain all": ["modeleditor", "generate-model", modeTag(mode)], + }), + parseResultsToYaml: (_queryPath, bqrs, modelsAsDataLanguage) => { + const typePredicate = modelsAsDataLanguage.predicates.type; + if (!typePredicate) { + throw new Error("Type predicate not found"); + } + + const typeTuples = bqrs[typePredicate.extensiblePredicate]; + if (!typeTuples) { + return []; + } + + return [ + { + addsTo: { + pack: "codeql/ruby-all", + extensible: typePredicate.extensiblePredicate, + }, + data: typeTuples.tuples.filter((tuple): tuple is string[] => { + return ( + tuple.filter((x) => typeof x === "string").length === tuple.length + ); + }), + }, + ]; + }, + parseResults: (queryPath, bqrs, modelsAsDataLanguage, logger) => { + // Only parse type models when automatically generating models + const typePredicate = modelsAsDataLanguage.predicates.type; + if (!typePredicate) { + throw new Error("Type predicate not found"); + } + + const typeTuples = bqrs[typePredicate.extensiblePredicate]; + if (!typeTuples) { + return []; + } + + return parseGenerateModelResults( + queryPath, + { + [typePredicate.extensiblePredicate]: typeTuples, + }, + modelsAsDataLanguage, + logger, + ); + }, + // Only enabled for framework mode when type models are hidden + type: ({ mode }) => + mode === Mode.Framework + ? AutoModelGenerationType.Models + : AutoModelGenerationType.Disabled, + }, + accessPathSuggestions: { + queryConstraints: (mode) => ({ + kind: "table", + "tags contain all": ["modeleditor", "access-paths", modeTag(mode)], + }), + parseResults: parseAccessPathSuggestionsResults, + }, + getArgumentOptions: (method) => { + const argumentsList = getArgumentsList(method.methodParameters).map( + (argument, index): MethodArgument => { + if (argument.endsWith(":")) { + return { + path: `Argument[${argument}]`, + label: `Argument[${argument}]`, + }; + } + + return { + path: `Argument[${index}]`, + label: `Argument[${index}]: ${argument}`, + }; + }, + ); + + return { + options: [ + { + path: "Argument[self]", + label: "Argument[self]", + }, + ...argumentsList, + ], + // If there are no arguments, we will default to "Argument[self]" + defaultArgumentPath: + argumentsList.length > 0 ? argumentsList[0].path : "Argument[self]", + }; + }, +}; diff --git a/extensions/ql-vscode/src/model-editor/languages/ruby/suggestions.ts b/extensions/ql-vscode/src/model-editor/languages/ruby/suggestions.ts new file mode 100644 index 00000000000..a2105875566 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/ruby/suggestions.ts @@ -0,0 +1,86 @@ +import type { BaseLogger } from "../../../common/logging"; +import type { + BqrsCellValue, + BqrsEntityValue, + DecodedBqrsChunk, +} from "../../../common/bqrs-cli-types"; +import type { ModelsAsDataLanguage } from "../models-as-data"; +import type { AccessPathSuggestionRow } from "../../suggestions"; +import { isDefinitionType } from "../../suggestions"; +import { + parseRubyMethodFromPath, + rubyEndpointType, + rubyMethodSignature, +} from "./access-paths"; + +function checkTupleFormat( + tuple: BqrsCellValue[], +): tuple is [string, string, string, BqrsEntityValue, string] { + if (tuple.length !== 5) { + return false; + } + + const [type, methodName, value, node, definitionType] = tuple; + if ( + typeof type !== "string" || + typeof methodName !== "string" || + typeof value !== "string" || + typeof node !== "object" || + typeof definitionType !== "string" + ) { + return false; + } + + if (Array.isArray(node)) { + return false; + } + + return true; +} + +export function parseAccessPathSuggestionsResults( + bqrs: DecodedBqrsChunk, + _modelsAsDataLanguage: ModelsAsDataLanguage, + logger: BaseLogger, +): AccessPathSuggestionRow[] { + return bqrs.tuples + .map((tuple, index): AccessPathSuggestionRow | null => { + if (!checkTupleFormat(tuple)) { + void logger.log( + `Skipping result ${index} because it has the wrong format`, + ); + return null; + } + + const type = tuple[0]; + const methodName = parseRubyMethodFromPath(tuple[1]); + const value = tuple[2]; + const node = tuple[3]; + const definitionType = tuple[4]; + + if (!isDefinitionType(definitionType)) { + void logger.log( + `Skipping result ${index} because it has an invalid definition type`, + ); + return null; + } + + return { + method: { + packageName: "", + endpointType: rubyEndpointType(type, methodName), + typeName: type, + methodName, + methodParameters: "", + signature: rubyMethodSignature(type, methodName), + }, + value, + details: node.label ?? "", + definitionType, + }; + }) + .filter( + (suggestion): suggestion is AccessPathSuggestionRow => + suggestion !== null, + ); +} diff --git a/extensions/ql-vscode/src/model-editor/languages/shared.ts b/extensions/ql-vscode/src/model-editor/languages/shared.ts new file mode 100644 index 00000000000..62e9d55fa52 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/shared.ts @@ -0,0 +1,30 @@ +export const sharedExtensiblePredicates = { + source: "sourceModel", + sink: "sinkModel", + summary: "summaryModel", + neutral: "neutralModel", +}; + +export const sharedKinds = { + // https://github.com/github/codeql/blob/0c5ea975a4c4dc5c439b908c006e440cb9bdf926/shared/mad/codeql/mad/ModelValidation.qll#L118-L119 + source: ["local", "remote", "file", "commandargs", "database", "environment"], + // Bhttps://github.com/github/codeql/blob/0c5ea975a4c4dc5c439b908c006e440cb9bdf926/shared/mad/codeql/mad/ModelValidation.qll#L28-L31 + sink: [ + "code-injection", + "command-injection", + "environment-injection", + "file-content-store", + "html-injection", + "js-injection", + "ldap-injection", + "log-injection", + "path-injection", + "request-forgery", + "sql-injection", + "url-redirection", + ], + // https://github.com/github/codeql/blob/0c5ea975a4c4dc5c439b908c006e440cb9bdf926/shared/mad/codeql/mad/ModelValidation.qll#L142-L143 + summary: ["taint", "value"], + // https://github.com/github/codeql/blob/0c5ea975a4c4dc5c439b908c006e440cb9bdf926/shared/mad/codeql/mad/ModelValidation.qll#L155-L156 + neutral: ["summary", "source", "sink"], +}; diff --git a/extensions/ql-vscode/src/model-editor/languages/static/generate.ts b/extensions/ql-vscode/src/model-editor/languages/static/generate.ts new file mode 100644 index 00000000000..3b78f677b67 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/static/generate.ts @@ -0,0 +1,60 @@ +import type { BaseLogger } from "../../../common/logging"; +import type { + ModelsAsDataLanguage, + ModelsAsDataLanguagePredicates, +} from "../models-as-data"; +import type { DecodedBqrs } from "../../../common/bqrs-cli-types"; +import type { ModeledMethod } from "../../modeled-method"; +import { basename } from "../../../common/path"; + +const queriesToModel: Record = { + "CaptureSummaryModels.ql": "summary", + "CaptureSinkModels.ql": "sink", + "CaptureSourceModels.ql": "source", + "CaptureNeutralModels.ql": "neutral", +}; + +export function filterFlowModelQueries(queryPath: string): boolean { + return Object.keys(queriesToModel).includes(basename(queryPath)); +} + +export function parseFlowModelResults( + queryPath: string, + bqrs: DecodedBqrs, + modelsAsDataLanguage: ModelsAsDataLanguage, + logger: BaseLogger, +): ModeledMethod[] { + if (Object.keys(bqrs).length !== 1) { + throw new Error( + `Expected exactly one result set from ${queryPath}, but got ${ + Object.keys(bqrs).length + }`, + ); + } + + const modelType = queriesToModel[basename(queryPath)]; + if (!modelType) { + void logger.log(`Unknown model type for ${queryPath}`); + return []; + } + + const resultSet = bqrs[Object.keys(bqrs)[0]]; + + const results = resultSet.tuples; + + const definition = modelsAsDataLanguage.predicates[modelType]; + if (!definition) { + throw new Error(`No definition for ${modelType}`); + } + + return ( + results + // This is just a sanity check. The query should only return strings. + .filter((result) => typeof result[0] === "string") + .map((result) => { + const row = result[0] as string; + + return definition.readModeledMethod(row.split(";")); + }) + ); +} diff --git a/extensions/ql-vscode/src/model-editor/languages/static/index.ts b/extensions/ql-vscode/src/model-editor/languages/static/index.ts new file mode 100644 index 00000000000..cfeb07bc50f --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/languages/static/index.ts @@ -0,0 +1,171 @@ +import type { ModelsAsDataLanguage } from "../models-as-data"; +import type { Provenance } from "../../modeled-method"; +import type { DataTuple } from "../../model-extension-file"; +import { sharedExtensiblePredicates, sharedKinds } from "../shared"; +import { filterFlowModelQueries, parseFlowModelResults } from "./generate"; +import type { MethodArgument } from "../../method"; +import { EndpointType, getArgumentsList } from "../../method"; + +function readRowToMethod(row: DataTuple[]): string { + return `${row[0]}.${row[1]}#${row[3]}${row[4]}`; +} + +export const staticLanguage = { + createMethodSignature: ({ + packageName, + typeName, + methodName, + methodParameters, + }) => `${packageName}.${typeName}#${methodName}${methodParameters}`, + predicates: { + source: { + extensiblePredicate: sharedExtensiblePredicates.source, + supportedKinds: sharedKinds.source, + // extensible predicate sourceModel( + // string package, string type, boolean subtypes, string name, string signature, string ext, + // string output, string kind, string provenance + // ); + generateMethodDefinition: (method) => [ + method.packageName, + method.typeName, + true, + method.methodName, + method.methodParameters, + "", + method.output, + method.kind, + method.provenance, + ], + readModeledMethod: (row) => ({ + type: "source", + output: row[6] as string, + kind: row[7] as string, + provenance: row[8] as Provenance, + signature: readRowToMethod(row), + endpointType: EndpointType.Method, + packageName: row[0] as string, + typeName: row[1] as string, + methodName: row[3] as string, + methodParameters: row[4] as string, + }), + }, + sink: { + extensiblePredicate: sharedExtensiblePredicates.sink, + supportedKinds: sharedKinds.sink, + // extensible predicate sinkModel( + // string package, string type, boolean subtypes, string name, string signature, string ext, + // string input, string kind, string provenance + // ); + generateMethodDefinition: (method) => [ + method.packageName, + method.typeName, + true, + method.methodName, + method.methodParameters, + "", + method.input, + method.kind, + method.provenance, + ], + readModeledMethod: (row) => ({ + type: "sink", + input: row[6] as string, + kind: row[7] as string, + provenance: row[8] as Provenance, + signature: readRowToMethod(row), + endpointType: EndpointType.Method, + packageName: row[0] as string, + typeName: row[1] as string, + methodName: row[3] as string, + methodParameters: row[4] as string, + }), + }, + summary: { + extensiblePredicate: sharedExtensiblePredicates.summary, + supportedKinds: sharedKinds.summary, + // extensible predicate summaryModel( + // string package, string type, boolean subtypes, string name, string signature, string ext, + // string input, string output, string kind, string provenance + // ); + generateMethodDefinition: (method) => [ + method.packageName, + method.typeName, + true, + method.methodName, + method.methodParameters, + "", + method.input, + method.output, + method.kind, + method.provenance, + ], + readModeledMethod: (row) => ({ + type: "summary", + input: row[6] as string, + output: row[7] as string, + kind: row[8] as string, + provenance: row[9] as Provenance, + signature: readRowToMethod(row), + endpointType: EndpointType.Method, + packageName: row[0] as string, + typeName: row[1] as string, + methodName: row[3] as string, + methodParameters: row[4] as string, + }), + }, + neutral: { + extensiblePredicate: sharedExtensiblePredicates.neutral, + supportedKinds: sharedKinds.neutral, + // extensible predicate neutralModel( + // string package, string type, string name, string signature, string kind, string provenance + // ); + generateMethodDefinition: (method) => [ + method.packageName, + method.typeName, + method.methodName, + method.methodParameters, + method.kind, + method.provenance, + ], + readModeledMethod: (row) => ({ + type: "neutral", + kind: row[4] as string, + provenance: row[5] as Provenance, + signature: `${row[0]}.${row[1]}#${row[2]}${row[3]}`, + endpointType: EndpointType.Method, + packageName: row[0] as string, + typeName: row[1] as string, + methodName: row[2] as string, + methodParameters: row[3] as string, + }), + }, + }, + modelGeneration: { + queryConstraints: () => ({ + "tags contain": ["modelgenerator"], + }), + filterQueries: filterFlowModelQueries, + parseResults: parseFlowModelResults, + }, + getArgumentOptions: (method) => { + const argumentsList = getArgumentsList(method.methodParameters).map( + (argument, index): MethodArgument => ({ + path: `Argument[${index}]`, + label: `Argument[${index}]: ${argument}`, + }), + ); + + return { + options: [ + { + path: "Argument[this]", + label: "Argument[this]", + }, + ...argumentsList, + ], + // If there are no arguments, we will default to "Argument[this]" + defaultArgumentPath: + argumentsList.length > 0 ? argumentsList[0].path : "Argument[this]", + }; + }, +} satisfies ModelsAsDataLanguage; diff --git a/extensions/ql-vscode/src/model-editor/library.ts b/extensions/ql-vscode/src/model-editor/library.ts new file mode 100644 index 00000000000..7cc12514de9 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/library.ts @@ -0,0 +1,58 @@ +import { basename, extname } from "../common/path"; + +// From the semver package using +// const { re, t } = require("semver/internal/re"); +// console.log(re[t.LOOSE]); +// Modifications: +// - Added version named group which does not capture the v prefix +// - Removed the ^ and $ anchors +// - Made the minor and patch versions optional +// - Added a hyphen to the start of the version +// - Added a dot as a valid separator between the version and the label +// - Made the patch version optional even if a label is given +// This will match any semver string at the end of a larger string +const semverRegex = + /-[v=\s]*(?([0-9]+)(\.([0-9]+)(?:(\.([0-9]+))?(?:[-.]?((?:[0-9]+|\d*[a-zA-Z-][a-zA-Z0-9-]*)(?:\.(?:[0-9]+|\d*[a-zA-Z-][a-zA-Z0-9-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?)?)?)/g; + +interface Library { + name: string; + version?: string; +} + +export function parseLibraryFilename(filename: string): Library { + let libraryName = basename(filename); + const extension = extname(libraryName); + libraryName = libraryName.slice(0, -extension.length); + + let libraryVersion: string | undefined; + + let match: RegExpMatchArray | null = null; + + // Reset the regex + semverRegex.lastIndex = 0; + + // Find the last occurence of the regex within the library name + + while (true) { + const currentMatch = semverRegex.exec(libraryName); + if (currentMatch === null) { + break; + } + + match = currentMatch; + } + + if (match?.groups) { + libraryVersion = match.groups?.version; + // Remove everything after the start of the match + libraryName = libraryName.slice(0, match.index); + } + + // Remove any leading or trailing hyphens or dots + libraryName = libraryName.replaceAll(/^[.-]+|[.-]+$/g, ""); + + return { + name: libraryName, + version: libraryVersion, + }; +} diff --git a/extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-panel.ts b/extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-panel.ts new file mode 100644 index 00000000000..e5f9f4a0d64 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-panel.ts @@ -0,0 +1,37 @@ +import { window } from "vscode"; +import type { App } from "../../common/app"; +import { DisposableObject } from "../../common/disposable-object"; +import { MethodModelingViewProvider } from "./method-modeling-view-provider"; +import type { ModelingStore } from "../modeling-store"; +import { ModelConfigListener } from "../../config"; +import type { ModelingEvents } from "../modeling-events"; + +export class MethodModelingPanel extends DisposableObject { + private readonly provider: MethodModelingViewProvider; + + constructor( + app: App, + modelingStore: ModelingStore, + modelingEvents: ModelingEvents, + ) { + super(); + + // This is here instead of in MethodModelingViewProvider because we need to + // dispose this when the extension gets disposed, not when the webview gets + // disposed. + const modelConfig = this.push(new ModelConfigListener()); + + this.provider = new MethodModelingViewProvider( + app, + modelingStore, + modelingEvents, + modelConfig, + ); + this.push( + window.registerWebviewViewProvider( + MethodModelingViewProvider.viewType, + this.provider, + ), + ); + } +} diff --git a/extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts b/extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts new file mode 100644 index 00000000000..53fc6f1275e --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts @@ -0,0 +1,236 @@ +import type { + FromMethodModelingMessage, + ToMethodModelingMessage, +} from "../../common/interface-types"; +import { telemetryListener } from "../../common/vscode/telemetry"; +import { showAndLogExceptionWithTelemetry } from "../../common/logging/notifications"; +import type { App } from "../../common/app"; +import { redactableError } from "../../common/errors"; +import type { Method, MethodSignature } from "../method"; +import type { ModelingStore } from "../modeling-store"; +import { AbstractWebviewViewProvider } from "../../common/vscode/abstract-webview-view-provider"; +import { assertNever } from "../../common/helpers-pure"; +import type { ModelConfigListener } from "../../config"; +import type { DatabaseItem } from "../../databases/local-databases"; +import type { ModelingEvents } from "../modeling-events"; +import type { QueryLanguage } from "../../common/query-language"; +import { tryGetQueryLanguage } from "../../common/query-language"; +import { createModelConfig } from "../languages"; +import type { ModeledMethod } from "../modeled-method"; + +export class MethodModelingViewProvider extends AbstractWebviewViewProvider< + ToMethodModelingMessage, + FromMethodModelingMessage +> { + public static readonly viewType = "codeQLMethodModeling"; + + private method: Method | undefined = undefined; + private databaseItem: DatabaseItem | undefined = undefined; + private language: QueryLanguage | undefined = undefined; + + constructor( + app: App, + private readonly modelingStore: ModelingStore, + private readonly modelingEvents: ModelingEvents, + private readonly modelConfig: ModelConfigListener, + ) { + super(app, "method-modeling"); + } + + protected override async onWebViewLoaded(): Promise { + await this.setInitialState(); + this.registerToModelingEvents(); + this.registerToModelConfigEvents(); + } + + private async setViewState(): Promise { + await this.postMessage({ + t: "setMethodModelingPanelViewState", + viewState: { + language: this.language, + modelConfig: createModelConfig(this.modelConfig), + }, + }); + } + + private async setDatabaseItem(databaseItem: DatabaseItem): Promise { + this.databaseItem = databaseItem; + + await this.postMessage({ + t: "setInModelingMode", + inModelingMode: true, + }); + + this.language = tryGetQueryLanguage(databaseItem.language); + await this.setViewState(); + } + + private async setSelectedMethod( + databaseItem: DatabaseItem, + method: Method, + modeledMethods: readonly ModeledMethod[], + isModified: boolean, + ): Promise { + this.method = method; + this.databaseItem = databaseItem; + this.language = tryGetQueryLanguage(databaseItem.language); + + await this.postMessage({ + t: "setSelectedMethod", + method, + modeledMethods, + isModified, + }); + } + + private async setInitialState(): Promise { + await this.setViewState(); + + const stateForActiveDb = this.modelingStore.getStateForActiveDb(); + if (!stateForActiveDb) { + return; + } + + await this.setDatabaseItem(stateForActiveDb.databaseItem); + + const selectedMethod = this.modelingStore.getSelectedMethodDetails(); + if (selectedMethod) { + await this.setSelectedMethod( + stateForActiveDb.databaseItem, + selectedMethod.method, + selectedMethod.modeledMethods, + selectedMethod.isModified, + ); + } + } + + protected override async onMessage( + msg: FromMethodModelingMessage, + ): Promise { + switch (msg.t) { + case "viewLoaded": + await this.onWebViewLoaded(); + break; + + case "telemetry": + telemetryListener?.sendUIInteraction(msg.action); + break; + + case "unhandledError": + void showAndLogExceptionWithTelemetry( + this.app.logger, + telemetryListener, + redactableError( + msg.error, + )`Unhandled error in method modeling view: ${msg.error.message}`, + ); + break; + + case "setMultipleModeledMethods": { + if (!this.databaseItem) { + return; + } + + this.modelingStore.updateModeledMethods( + this.databaseItem, + msg.methodSignature, + msg.modeledMethods, + true, + ); + break; + } + case "revealInModelEditor": + await this.revealInModelEditor(msg.method); + void telemetryListener?.sendUIInteraction( + "method-modeling-reveal-in-model-editor", + ); + + break; + + case "startModeling": + await this.app.commands.execute( + "codeQL.openModelEditorFromModelingPanel", + ); + break; + default: + assertNever(msg); + } + } + + private async revealInModelEditor(method: MethodSignature): Promise { + if (!this.databaseItem) { + return; + } + + this.modelingEvents.fireRevealInModelEditorEvent( + this.databaseItem.databaseUri.toString(), + method, + ); + } + + private registerToModelingEvents(): void { + this.push( + this.modelingEvents.onModeledAndModifiedMethodsChanged(async (e) => { + if (this.webviewView && e.isActiveDb && this.method) { + const modeledMethods = e.modeledMethods[this.method.signature]; + if (modeledMethods) { + await this.postMessage({ + t: "setMultipleModeledMethods", + methodSignature: this.method.signature, + modeledMethods, + }); + } + + await this.postMessage({ + t: "setMethodModified", + isModified: e.modifiedMethodSignatures.has(this.method.signature), + }); + } + }), + ); + + this.push( + this.modelingEvents.onSelectedMethodChanged(async (e) => { + if (this.webviewView) { + await this.setSelectedMethod( + e.databaseItem, + e.method, + e.modeledMethods, + e.isModified, + ); + } + }), + ); + + this.push( + this.modelingEvents.onDbOpened(async (databaseItem) => { + await this.setDatabaseItem(databaseItem); + }), + ); + + this.push( + this.modelingEvents.onDbClosed(async (dbUri) => { + if (!this.modelingStore.anyDbsBeingModeled()) { + await this.postMessage({ + t: "setInModelingMode", + inModelingMode: false, + }); + } + + if (dbUri === this.databaseItem?.databaseUri.toString()) { + await this.postMessage({ + t: "setNoMethodSelected", + }); + } + }), + ); + } + + private registerToModelConfigEvents(): void { + this.push( + this.modelConfig.onDidChangeConfiguration(() => { + void this.setViewState(); + }), + ); + } +} diff --git a/extensions/ql-vscode/src/model-editor/method.ts b/extensions/ql-vscode/src/model-editor/method.ts new file mode 100644 index 00000000000..e62449d2054 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/method.ts @@ -0,0 +1,110 @@ +import type { ModeledMethod, ModeledMethodType } from "./modeled-method"; +import type { UrlValueResolvable } from "../common/raw-result-types"; + +type Call = { + readonly label: string; + readonly url: Readonly; +}; + +export enum CallClassification { + Unknown = "unknown", + Source = "source", + Test = "test", + Generated = "generated", +} + +export type Usage = Call & { + readonly classification: CallClassification; +}; + +/** + * Endpoint types are generic and can be used to represent different types of endpoints in different languages. + * + * For a reference of symbol kinds used in the LSP protocol (which is a good reference for widely supported features), see + * https://github.com/microsoft/vscode-languageserver-node/blob/4c8115f40b52f2e13adab41109c5b1208fc155ab/types/src/main.ts#L2890-L2920 + */ +export enum EndpointType { + Module = "module", + Class = "class", + Method = "method", + Constructor = "constructor", + Function = "function", + StaticMethod = "staticMethod", + ClassMethod = "classMethod", +} + +export interface MethodDefinition { + readonly endpointType: EndpointType; + /** + * The package name in Java, or the namespace in C#, e.g. `org.sql2o` or `System.Net.Http.Headers`. + * + * If the class is not in a package, the value should be an empty string. + */ + readonly packageName: string; + readonly typeName: string; + readonly methodName: string; + /** + * The method parameters, including enclosing parentheses, e.g. `(String, String)` + */ + readonly methodParameters: string; +} + +export interface MethodSignature extends MethodDefinition { + /** + * Contains the version of the library if it can be determined by CodeQL, e.g. `4.2.2.2` + */ + readonly libraryVersion?: string; + /** + * A unique signature that can be used to identify this external API usage. + * + * The signature contains the package name, type name, method name, and method parameters + * in the form "packageName.typeName#methodName(methodParameters)". + * e.g. `org.sql2o.Connection#createQuery(String)` + */ + readonly signature: string; +} + +export interface Method extends MethodSignature { + /** + * Contains the name of the library containing the method declaration, e.g. `sql2o-1.6.0.jar` or `System.Runtime.dll` + */ + readonly library: string; + /** + * Is this method already supported by CodeQL standard libraries. + * If so, there is no need for the user to model it themselves. + */ + readonly supported: boolean; + readonly supportedType: ModeledMethodType; + readonly usages: readonly Usage[]; +} + +export interface MethodArgument { + path: string; + label: string; +} + +export function getArgumentsList(methodParameters: string): string[] { + if (methodParameters === "()") { + return []; + } + + return methodParameters.substring(1, methodParameters.length - 1).split(","); +} + +/** + * Should we present the user with the ability to edit to modelings for this method. + * + * A method may be unmodelable if it is already modeled by CodeQL or by an extension + * pack other than the one currently being edited. + */ +export function canMethodBeModeled( + method: Method, + modeledMethods: readonly ModeledMethod[], + methodIsUnsaved: boolean, +): boolean { + return ( + !method.supported || + modeledMethods.some((modeledMethod) => modeledMethod.type !== "none") || + methodIsUnsaved + ); +} diff --git a/extensions/ql-vscode/src/model-editor/methods-usage/methods-usage-data-provider.ts b/extensions/ql-vscode/src/model-editor/methods-usage/methods-usage-data-provider.ts new file mode 100644 index 00000000000..fe3c3a86732 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/methods-usage/methods-usage-data-provider.ts @@ -0,0 +1,268 @@ +import type { Event, TreeDataProvider, TreeItem } from "vscode"; +import { + EventEmitter, + ThemeColor, + ThemeIcon, + TreeItemCollapsibleState, + Uri, +} from "vscode"; +import { DisposableObject } from "../../common/disposable-object"; +import type { Method, Usage } from "../method"; +import { canMethodBeModeled } from "../method"; +import type { DatabaseItem } from "../../databases/local-databases"; +import { relative } from "path"; +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import { INITIAL_HIDE_MODELED_METHODS_VALUE } from "../shared/hide-modeled-methods"; +import { getModelingStatus } from "../shared/modeling-status"; +import { assertNever } from "../../common/helpers-pure"; +import type { ModeledMethod } from "../modeled-method"; +import { groupMethods, sortGroupNames } from "../shared/sorting"; +import type { Mode } from "../shared/mode"; +import { INITIAL_MODE } from "../shared/mode"; +import type { UrlValueResolvable } from "../../common/raw-result-types"; + +export class MethodsUsageDataProvider + extends DisposableObject + implements TreeDataProvider +{ + private methods: readonly Method[] = []; + // sortedMethods is a separate field so we can check if the methods have changed + // by reference, which is faster than checking if the methods have changed by value. + private sortedTreeItems: readonly MethodTreeViewItem[] = []; + private databaseItem: DatabaseItem | undefined = undefined; + private sourceLocationPrefix: string | undefined = undefined; + private hideModeledMethods: boolean = INITIAL_HIDE_MODELED_METHODS_VALUE; + private mode: Mode = INITIAL_MODE; + private modeledMethods: Readonly> = + {}; + private modifiedMethodSignatures: ReadonlySet = new Set(); + + private readonly onDidChangeTreeDataEmitter = this.push( + new EventEmitter(), + ); + + public constructor(private readonly cliServer: CodeQLCliServer) { + super(); + } + + public get onDidChangeTreeData(): Event { + return this.onDidChangeTreeDataEmitter.event; + } + + /** + * Update the data displayed in the tree view. + * + * Will only trigger an update if the data has changed. This relies on + * object identity, so be sure to not mutate the data passed to this + * method and instead always pass new objects/arrays. + */ + public async setState( + methods: readonly Method[], + databaseItem: DatabaseItem, + hideModeledMethods: boolean, + mode: Mode, + modeledMethods: Readonly>, + modifiedMethodSignatures: ReadonlySet, + ): Promise { + if ( + this.methods !== methods || + this.databaseItem !== databaseItem || + this.hideModeledMethods !== hideModeledMethods || + this.mode !== mode || + this.modeledMethods !== modeledMethods || + this.modifiedMethodSignatures !== modifiedMethodSignatures + ) { + this.methods = methods; + this.sortedTreeItems = createTreeItems(createGroups(methods, mode)); + this.databaseItem = databaseItem; + this.sourceLocationPrefix = + await this.databaseItem.getSourceLocationPrefix(this.cliServer); + this.hideModeledMethods = hideModeledMethods; + this.mode = mode; + this.modeledMethods = modeledMethods; + this.modifiedMethodSignatures = modifiedMethodSignatures; + + this.onDidChangeTreeDataEmitter.fire(); + } + } + + getTreeItem(item: MethodsUsageTreeViewItem): TreeItem { + if (isMethodTreeViewItem(item)) { + const { method } = item; + + return { + label: `${method.packageName}.${method.typeName}.${method.methodName}${method.methodParameters}`, + collapsibleState: TreeItemCollapsibleState.Collapsed, + iconPath: this.getModelingStatusIcon(method), + }; + } else { + const { method, usage } = item; + + const description = + usage.url.type === "wholeFileLocation" + ? this.relativePathWithinDatabase(usage.url.uri) + : `${this.relativePathWithinDatabase(usage.url.uri)} [${ + usage.url.startLine + }, ${usage.url.endLine}]`; + + return { + label: usage.label, + description, + collapsibleState: TreeItemCollapsibleState.None, + command: { + title: "Show usage", + command: "codeQLModelEditor.jumpToMethod", + arguments: [method, usage, this.databaseItem], + }, + }; + } + } + + private getModelingStatusIcon(method: Method): ThemeIcon { + const modeledMethods = this.modeledMethods[method.signature] ?? []; + const modifiedMethod = this.modifiedMethodSignatures.has(method.signature); + + const status = getModelingStatus(modeledMethods, modifiedMethod); + switch (status) { + case "unmodeled": + return new ThemeIcon("error", new ThemeColor("errorForeground")); + case "unsaved": + return new ThemeIcon("pass", new ThemeColor("testing.iconPassed")); + case "saved": + return new ThemeIcon( + "pass-filled", + new ThemeColor("testing.iconPassed"), + ); + default: + assertNever(status); + } + } + + private relativePathWithinDatabase(uri: string): string { + const parsedUri = Uri.parse(uri); + if (this.sourceLocationPrefix) { + return relative(this.sourceLocationPrefix, parsedUri.fsPath); + } else { + return parsedUri.fsPath; + } + } + + getChildren(item?: MethodsUsageTreeViewItem): MethodsUsageTreeViewItem[] { + if (item === undefined) { + if (this.hideModeledMethods) { + return this.sortedTreeItems.filter((api) => + canMethodBeModeled( + api.method, + this.modeledMethods[api.method.signature] ?? [], + this.modifiedMethodSignatures.has(api.method.signature), + ), + ); + } else { + return [...this.sortedTreeItems]; + } + } else if (isMethodTreeViewItem(item)) { + return item.children; + } else { + return []; + } + } + + getParent( + item: MethodsUsageTreeViewItem, + ): MethodsUsageTreeViewItem | undefined { + if (isMethodTreeViewItem(item)) { + return undefined; + } else { + return item.parent; + } + } + + public resolveUsageTreeViewItem( + methodSignature: string, + usage: Usage, + ): UsageTreeViewItem | undefined { + const method = this.sortedTreeItems.find( + (m) => m.method.signature === methodSignature, + ); + if (!method) { + return undefined; + } + + return method.children.find((u) => usagesAreEqual(u.usage, usage)); + } +} + +type MethodTreeViewItem = { + method: Method; + children: UsageTreeViewItem[]; +}; + +type UsageTreeViewItem = { + method: Method; + usage: Usage; + parent: MethodTreeViewItem; +}; + +export type MethodsUsageTreeViewItem = MethodTreeViewItem | UsageTreeViewItem; + +function isMethodTreeViewItem( + item: MethodsUsageTreeViewItem, +): item is MethodTreeViewItem { + return "children" in item && "method" in item; +} + +function usagesAreEqual(u1: Usage, u2: Usage): boolean { + return ( + u1.label === u2.label && + u1.classification === u2.classification && + urlValueResolvablesAreEqual(u1.url, u2.url) + ); +} + +function urlValueResolvablesAreEqual( + u1: UrlValueResolvable, + u2: UrlValueResolvable, +): boolean { + if (u1.type !== u2.type) { + return false; + } + + if (u1.type === "wholeFileLocation" && u2.type === "wholeFileLocation") { + return u1.uri === u2.uri; + } + + if (u1.type === "lineColumnLocation" && u2.type === "lineColumnLocation") { + return ( + u1.uri === u2.uri && + u1.startLine === u2.startLine && + u1.startColumn === u2.startColumn && + u1.endLine === u2.endLine && + u1.endColumn === u2.endColumn + ); + } + + return false; +} + +function createGroups(methods: readonly Method[], mode: Mode): Method[] { + const grouped = groupMethods(methods, mode); + return sortGroupNames(grouped).flatMap((groupName) => grouped[groupName]); +} + +function createTreeItems(methods: readonly Method[]): MethodTreeViewItem[] { + return methods.map((method) => { + const newMethod: MethodTreeViewItem = { + method, + children: [], + }; + + newMethod.children = method.usages.map((usage) => ({ + method, + usage, + // This needs to be a reference to the parent method, not a copy of it. + parent: newMethod, + })); + + return newMethod; + }); +} diff --git a/extensions/ql-vscode/src/model-editor/methods-usage/methods-usage-panel.ts b/extensions/ql-vscode/src/model-editor/methods-usage/methods-usage-panel.ts new file mode 100644 index 00000000000..a71a31f0bb3 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/methods-usage/methods-usage-panel.ts @@ -0,0 +1,132 @@ +import type { TreeView } from "vscode"; +import { window } from "vscode"; +import { DisposableObject } from "../../common/disposable-object"; +import type { MethodsUsageTreeViewItem } from "./methods-usage-data-provider"; +import { MethodsUsageDataProvider } from "./methods-usage-data-provider"; +import type { Method, Usage } from "../method"; +import type { DatabaseItem } from "../../databases/local-databases"; +import type { CodeQLCliServer } from "../../codeql-cli/cli"; +import type { ModelingStore } from "../modeling-store"; +import type { ModeledMethod } from "../modeled-method"; +import type { Mode } from "../shared/mode"; +import type { ModelingEvents } from "../modeling-events"; + +export class MethodsUsagePanel extends DisposableObject { + private readonly dataProvider: MethodsUsageDataProvider; + private readonly treeView: TreeView; + + public constructor( + private readonly modelingStore: ModelingStore, + private readonly modelingEvents: ModelingEvents, + cliServer: CodeQLCliServer, + ) { + super(); + + this.dataProvider = new MethodsUsageDataProvider(cliServer); + + this.treeView = window.createTreeView("codeQLMethodsUsage", { + treeDataProvider: this.dataProvider, + }); + this.push(this.treeView); + + this.registerToModelingEvents(); + } + + public async setState( + methods: readonly Method[], + databaseItem: DatabaseItem, + hideModeledMethods: boolean, + mode: Mode, + modeledMethods: Readonly>, + modifiedMethodSignatures: ReadonlySet, + ): Promise { + await this.dataProvider.setState( + methods, + databaseItem, + hideModeledMethods, + mode, + modeledMethods, + modifiedMethodSignatures, + ); + const numOfApis = hideModeledMethods + ? methods.filter((api) => !api.supported).length + : methods.length; + this.treeView.badge = { + value: numOfApis, + tooltip: "Number of external APIs", + }; + } + + private async revealItem( + methodSignature: string, + usage: Usage, + ): Promise { + const usageTreeViewItem = this.dataProvider.resolveUsageTreeViewItem( + methodSignature, + usage, + ); + if (usageTreeViewItem !== undefined) { + await this.treeView.reveal(usageTreeViewItem); + } + } + + private registerToModelingEvents(): void { + this.push( + this.modelingEvents.onActiveDbChanged(async () => { + await this.handleStateChangeEvent(); + }), + ); + + this.push( + this.modelingEvents.onMethodsChanged(async (event) => { + if (event.isActiveDb) { + await this.handleStateChangeEvent(); + } + }), + ); + + this.push( + this.modelingEvents.onHideModeledMethodsChanged(async (event) => { + if (event.isActiveDb) { + await this.handleStateChangeEvent(); + } + }), + ); + + this.push( + this.modelingEvents.onModeChanged(async (event) => { + if (event.isActiveDb) { + await this.handleStateChangeEvent(); + } + }), + ); + + this.push( + this.modelingEvents.onModeledAndModifiedMethodsChanged(async (event) => { + if (event.isActiveDb) { + await this.handleStateChangeEvent(); + } + }), + ); + + this.push( + this.modelingEvents.onSelectedMethodChanged(async (event) => { + await this.revealItem(event.method.signature, event.usage); + }), + ); + } + + private async handleStateChangeEvent(): Promise { + const activeState = this.modelingStore.getStateForActiveDb(); + if (activeState !== undefined) { + await this.setState( + activeState.methods, + activeState.databaseItem, + activeState.hideModeledMethods, + activeState.mode, + activeState.modeledMethods, + activeState.modifiedMethodSignatures, + ); + } + } +} diff --git a/extensions/ql-vscode/src/model-editor/mode-tag.ts b/extensions/ql-vscode/src/model-editor/mode-tag.ts new file mode 100644 index 00000000000..3486f17d367 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/mode-tag.ts @@ -0,0 +1,13 @@ +import { Mode } from "./shared/mode"; +import { assertNever } from "../common/helpers-pure"; + +export function modeTag(mode: Mode): string { + switch (mode) { + case Mode.Application: + return "application-mode"; + case Mode.Framework: + return "framework-mode"; + default: + assertNever(mode); + } +} diff --git a/extensions/ql-vscode/src/model-editor/model-alerts/alert-processor.ts b/extensions/ql-vscode/src/model-editor/model-alerts/alert-processor.ts new file mode 100644 index 00000000000..402cb26629c --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-alerts/alert-processor.ts @@ -0,0 +1,100 @@ +import type { AnalysisAlert } from "../../variant-analysis/shared/analysis-result"; +import type { ModeledMethod } from "../modeled-method"; +import { EndpointType } from "../method"; +import type { ModelAlerts } from "./model-alerts"; +import type { + VariantAnalysis, + VariantAnalysisScannedRepositoryResult, +} from "../../variant-analysis/shared/variant-analysis"; + +/** + * Calculate which model has contributed to each alert. + * @param alerts The alerts to process. + * @param repoResults The analysis results for each repo. + * @returns The alerts grouped by modeled method. + */ +export function calculateModelAlerts( + variantAnalysis: VariantAnalysis, + repoResults: VariantAnalysisScannedRepositoryResult[], +): ModelAlerts[] { + // For now we just return some mock data, but once we have provenance information + // we'll be able to calculate this properly based on the alerts that are passed in + // and potentially some other information. + + const modelAlerts: ModelAlerts[] = []; + + const repoMap = new Map(); + for (const scannedRepo of variantAnalysis.scannedRepos || []) { + repoMap.set(scannedRepo.repository.id, scannedRepo.repository.fullName); + } + + for (const [i, repoResult] of repoResults.entries()) { + const results = repoResult.interpretedResults || []; + const repository = { + id: repoResult.repositoryId, + fullName: repoMap.get(repoResult.repositoryId) || "", + }; + + const alerts = results.map(() => { + return { + alert: createMockAlert(), + repository, + }; + }); + + modelAlerts.push({ + model: createModeledMethod(i.toString()), + alerts, + }); + } + + return modelAlerts; +} + +function createModeledMethod(suffix: string): ModeledMethod { + return { + libraryVersion: "1.6.0", + signature: `org.sql2o.Connection#createQuery${suffix}(String)`, + endpointType: EndpointType.Method, + packageName: "org.sql2o", + typeName: "Connection", + methodName: `createQuery${suffix}`, + methodParameters: "(String)", + type: "sink", + input: "Argument[0]", + kind: "path-injection", + provenance: "manual", + }; +} + +function createMockAlert(): AnalysisAlert { + return { + message: { + tokens: [ + { + t: "text", + text: "This is an empty block.", + }, + ], + }, + shortDescription: "This is an empty block.", + fileLink: { + fileLinkPrefix: + "https://github.com/expressjs/express/blob/33e8dc303af9277f8a7e4f46abfdcb5e72f6797b", + filePath: "test/app.options.js", + }, + severity: "Warning", + codeSnippet: { + startLine: 10, + endLine: 14, + text: " app.del('/', function(){});\n app.get('/users', function(req, res){});\n app.put('/users', function(req, res){});\n\n request(app)\n", + }, + highlightedRegion: { + startLine: 12, + startColumn: 41, + endLine: 12, + endColumn: 43, + }, + codeFlows: [], + }; +} diff --git a/extensions/ql-vscode/src/model-editor/model-alerts/model-alerts-view.ts b/extensions/ql-vscode/src/model-editor/model-alerts/model-alerts-view.ts new file mode 100644 index 00000000000..beb08e1e83c --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-alerts/model-alerts-view.ts @@ -0,0 +1,205 @@ +import { Uri, ViewColumn } from "vscode"; +import type { WebviewPanelConfig } from "../../common/vscode/abstract-webview"; +import { AbstractWebview } from "../../common/vscode/abstract-webview"; +import { assertNever } from "../../common/helpers-pure"; +import { telemetryListener } from "../../common/vscode/telemetry"; +import type { + FromModelAlertsMessage, + ToModelAlertsMessage, +} from "../../common/interface-types"; +import type { App } from "../../common/app"; +import { redactableError } from "../../common/errors"; +import { extLogger } from "../../common/logging/vscode"; +import { showAndLogExceptionWithTelemetry } from "../../common/logging"; +import type { ModelingEvents } from "../modeling-events"; +import type { ModelingStore } from "../modeling-store"; +import type { DatabaseItem } from "../../databases/local-databases"; +import type { ExtensionPack } from "../shared/extension-pack"; +import type { + VariantAnalysis, + VariantAnalysisScannedRepositoryResult, +} from "../../variant-analysis/shared/variant-analysis"; +import type { AppEvent, AppEventEmitter } from "../../common/events"; +import type { ModeledMethod } from "../modeled-method"; +import type { MethodSignature } from "../method"; + +export class ModelAlertsView extends AbstractWebview< + ToModelAlertsMessage, + FromModelAlertsMessage +> { + public static readonly viewType = "codeQL.modelAlerts"; + + public readonly onEvaluationRunStopClicked: AppEvent; + private readonly onEvaluationRunStopClickedEventEmitter: AppEventEmitter; + + public constructor( + app: App, + private readonly modelingEvents: ModelingEvents, + private readonly modelingStore: ModelingStore, + private readonly dbItem: DatabaseItem, + private readonly extensionPack: ExtensionPack, + ) { + super(app); + + this.registerToModelingEvents(); + + this.onEvaluationRunStopClickedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onEvaluationRunStopClicked = + this.onEvaluationRunStopClickedEventEmitter.event; + } + + public async showView( + reposResults: VariantAnalysisScannedRepositoryResult[], + ) { + const panel = await this.getPanel(); + panel.reveal(undefined, true); + + await this.waitForPanelLoaded(); + await this.setViewState(); + await this.setReposResults(reposResults); + } + + protected async getPanelConfig(): Promise { + return { + viewId: ModelAlertsView.viewType, + title: "Model Alerts", + viewColumn: ViewColumn.Active, + preserveFocus: true, + view: "model-alerts", + }; + } + + protected onPanelDispose(): void { + this.modelingStore.updateIsModelAlertsViewOpen(this.dbItem, false); + } + + protected async onMessage(msg: FromModelAlertsMessage): Promise { + switch (msg.t) { + case "viewLoaded": + this.onWebViewLoaded(); + break; + case "telemetry": + telemetryListener?.sendUIInteraction(msg.action); + break; + case "unhandledError": + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + msg.error, + )`Unhandled error in model alerts view: ${msg.error.message}`, + ); + break; + case "openModelPack": + await this.app.commands.execute("revealInExplorer", Uri.file(msg.path)); + break; + case "openActionsLogs": + await this.app.commands.execute( + "codeQLModelAlerts.openVariantAnalysisLogs", + msg.variantAnalysisId, + ); + break; + case "stopEvaluationRun": + await this.stopEvaluationRun(); + break; + case "revealInModelEditor": + await this.revealInModelEditor(msg.method); + break; + default: + assertNever(msg); + } + } + + private async setViewState(): Promise { + await this.postMessage({ + t: "setModelAlertsViewState", + viewState: { + title: this.extensionPack.name, + }, + }); + } + + public async setVariantAnalysis( + variantAnalysis: VariantAnalysis, + ): Promise { + if (!this.isShowingPanel) { + return; + } + + await this.postMessage({ + t: "setVariantAnalysis", + variantAnalysis, + }); + } + + public async setReposResults( + repoResults: VariantAnalysisScannedRepositoryResult[], + ): Promise { + if (!this.isShowingPanel) { + return; + } + + await this.postMessage({ + t: "setRepoResults", + repoResults, + }); + } + + public async focusView(): Promise { + this.panel?.reveal(); + } + + private registerToModelingEvents() { + this.push( + this.modelingEvents.onFocusModelAlertsView(async (event) => { + if (event.dbUri === this.dbItem.databaseUri.toString()) { + await this.focusView(); + } + }), + ); + + this.push( + this.modelingEvents.onDbClosed(async (event) => { + if (event === this.dbItem.databaseUri.toString()) { + this.dispose(); + } + }), + ); + + this.push( + this.modelingEvents.onRevealInModelAlertsView(async (event) => { + if (event.dbUri === this.dbItem.databaseUri.toString()) { + await this.revealMethod(event.modeledMethod); + } + }), + ); + } + + private async stopEvaluationRun() { + this.onEvaluationRunStopClickedEventEmitter.fire(); + } + + private async revealInModelEditor(method: MethodSignature): Promise { + if (!this.dbItem) { + return; + } + + this.modelingEvents.fireRevealInModelEditorEvent( + this.dbItem.databaseUri.toString(), + method, + ); + } + + private async revealMethod(method: ModeledMethod): Promise { + const panel = await this.getPanel(); + + panel?.reveal(); + + await this.postMessage({ + t: "revealModel", + modeledMethod: method, + }); + } +} diff --git a/extensions/ql-vscode/src/model-editor/model-alerts/model-alerts.ts b/extensions/ql-vscode/src/model-editor/model-alerts/model-alerts.ts new file mode 100644 index 00000000000..11304428e77 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-alerts/model-alerts.ts @@ -0,0 +1,13 @@ +import type { AnalysisAlert } from "../../variant-analysis/shared/analysis-result"; +import type { ModeledMethod } from "../modeled-method"; + +export interface ModelAlerts { + model: ModeledMethod; + alerts: Array<{ + alert: AnalysisAlert; + repository: { + id: number; + fullName: string; + }; + }>; +} diff --git a/extensions/ql-vscode/src/model-editor/model-editor-module.ts b/extensions/ql-vscode/src/model-editor/model-editor-module.ts new file mode 100644 index 00000000000..ebd234b7825 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-editor-module.ts @@ -0,0 +1,276 @@ +import { ModelEditorView } from "./model-editor-view"; +import type { ModelEditorCommands } from "../common/commands"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { QueryRunner } from "../query-server"; +import type { + DatabaseItem, + DatabaseManager, +} from "../databases/local-databases"; +import { ensureDir } from "fs-extra"; +import { join } from "path"; +import type { App } from "../common/app"; +import { + UserCancellationException, + withProgress, +} from "../common/vscode/progress"; +import { pickExtensionPack } from "./extension-pack-picker"; +import { showAndLogErrorMessage } from "../common/logging"; +import { dir } from "tmp-promise"; + +import { isQueryLanguage } from "../common/query-language"; +import { DisposableObject } from "../common/disposable-object"; +import { MethodsUsagePanel } from "./methods-usage/methods-usage-panel"; +import type { Method, Usage } from "./method"; +import { setUpPack } from "./model-editor-queries-setup"; +import { MethodModelingPanel } from "./method-modeling/method-modeling-panel"; +import { ModelingStore } from "./modeling-store"; +import { showResolvableLocation } from "../databases/local-databases/locations"; +import { ModelConfigListener } from "../config"; +import { ModelingEvents } from "./modeling-events"; +import { getModelsAsDataLanguage } from "./languages"; +import { INITIAL_MODE } from "./shared/mode"; +import { isSupportedLanguage } from "./supported-languages"; +import { DefaultNotifier, checkConsistency } from "./consistency-check"; +import type { VariantAnalysisManager } from "../variant-analysis/variant-analysis-manager"; +import type { DatabaseFetcher } from "../databases/database-fetcher"; + +export class ModelEditorModule extends DisposableObject { + private readonly queryStorageDir: string; + private readonly modelingStore: ModelingStore; + private readonly modelingEvents: ModelingEvents; + private readonly modelConfig: ModelConfigListener; + + private constructor( + private readonly app: App, + private readonly databaseManager: DatabaseManager, + private readonly databaseFetcher: DatabaseFetcher, + private readonly variantAnalysisManager: VariantAnalysisManager, + private readonly cliServer: CodeQLCliServer, + private readonly queryRunner: QueryRunner, + baseQueryStorageDir: string, + ) { + super(); + this.queryStorageDir = join(baseQueryStorageDir, "model-editor-results"); + this.modelingEvents = new ModelingEvents(app); + this.modelingStore = new ModelingStore(this.modelingEvents); + this.push( + new MethodsUsagePanel(this.modelingStore, this.modelingEvents, cliServer), + ); + this.push( + new MethodModelingPanel(app, this.modelingStore, this.modelingEvents), + ); + this.modelConfig = this.push(new ModelConfigListener()); + + this.registerToModelingEvents(); + } + + public static async initialize( + app: App, + databaseManager: DatabaseManager, + databaseFetcher: DatabaseFetcher, + variantAnalysisManager: VariantAnalysisManager, + cliServer: CodeQLCliServer, + queryRunner: QueryRunner, + queryStorageDir: string, + ): Promise { + const modelEditorModule = new ModelEditorModule( + app, + databaseManager, + databaseFetcher, + variantAnalysisManager, + cliServer, + queryRunner, + queryStorageDir, + ); + + await modelEditorModule.initialize(); + return modelEditorModule; + } + + public getCommands(): ModelEditorCommands { + return { + "codeQL.openModelEditor": this.openModelEditor.bind(this), + "codeQL.openModelEditorFromModelingPanel": + this.openModelEditor.bind(this), + "codeQLModelEditor.jumpToMethod": async ( + method: Method, + usage: Usage, + databaseItem: DatabaseItem, + ) => { + this.modelingStore.setSelectedMethod(databaseItem, method, usage); + }, + }; + } + + private async initialize(): Promise { + await ensureDir(this.queryStorageDir); + } + + private registerToModelingEvents(): void { + this.push( + this.modelingEvents.onSelectedMethodChanged(async (event) => { + await showResolvableLocation( + event.usage.url, + event.databaseItem, + this.app.logger, + ); + }), + ); + + this.push( + this.modelingEvents.onMethodsChanged((event) => { + const modeledMethods = this.modelingStore.getModeledMethods( + event.databaseItem, + ); + + checkConsistency( + event.methods, + modeledMethods, + new DefaultNotifier(this.app.logger), + ); + }), + ); + } + + private async openModelEditor(): Promise { + { + const db = this.databaseManager.currentDatabaseItem; + if (!db) { + void showAndLogErrorMessage(this.app.logger, "No database selected"); + return; + } + + const language = db.language; + + if ( + !isQueryLanguage(language) || + !isSupportedLanguage(language, this.modelConfig) + ) { + void showAndLogErrorMessage( + this.app.logger, + `The CodeQL Model Editor is not supported for ${language} databases.`, + ); + return; + } + + const definition = getModelsAsDataLanguage(language); + + const initialMode = definition.availableModes?.[0] ?? INITIAL_MODE; + + if (this.modelingStore.isDbOpen(db.databaseUri.toString())) { + this.modelingEvents.fireFocusModelEditorEvent( + db.databaseUri.toString(), + ); + return; + } + + return withProgress( + async (progress, token) => { + const maxStep = 4; + + const modelFile = await pickExtensionPack( + this.cliServer, + db, + this.modelConfig, + this.app.logger, + progress, + token, + maxStep, + ); + if (!modelFile) { + return; + } + + progress({ + message: "Installing dependencies...", + step: 3, + maxStep, + }); + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Open Model editor action cancelled.", + true, + ); + } + + // Create new temporary directory for query files and pack dependencies + const { path: queryDir, cleanup: cleanupQueryDir } = await dir({ + unsafeCleanup: true, + }); + + const success = await setUpPack( + this.cliServer, + this.app.logger, + queryDir, + language, + initialMode, + ); + if (!success) { + await cleanupQueryDir(); + return; + } + + progress({ + message: "Opening editor...", + step: 4, + maxStep, + }); + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Open Model editor action cancelled.", + true, + ); + } + + // Check again just before opening the editor to ensure no model editor has been opened between + // our first check and now. + if (this.modelingStore.isDbOpen(db.databaseUri.toString())) { + this.modelingEvents.fireFocusModelEditorEvent( + db.databaseUri.toString(), + ); + return; + } + + const view = new ModelEditorView( + this.app, + this.modelingStore, + this.modelingEvents, + this.modelConfig, + this.databaseManager, + this.databaseFetcher, + this.variantAnalysisManager, + this.cliServer, + this.queryRunner, + this.queryStorageDir, + queryDir, + db, + modelFile, + language, + initialMode, + ); + + this.modelingEvents.onDbClosed(async (dbUri) => { + if (dbUri === db.databaseUri.toString()) { + await cleanupQueryDir(); + } + }); + + this.push(view); + this.push({ + dispose(): void { + void cleanupQueryDir(); + }, + }); + + await view.openView(); + }, + { + title: "Opening CodeQL Model Editor", + cancellable: true, + }, + ); + } + } +} diff --git a/extensions/ql-vscode/src/model-editor/model-editor-queries-setup.ts b/extensions/ql-vscode/src/model-editor/model-editor-queries-setup.ts new file mode 100644 index 00000000000..14b42572f71 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-editor-queries-setup.ts @@ -0,0 +1,92 @@ +import { join } from "path"; +import type { QueryLanguage } from "../common/query-language"; +import { writeFile } from "fs-extra"; +import { dump } from "js-yaml"; +import { + prepareModelEditorQueries, + resolveEndpointsQuery, + syntheticQueryPackName, +} from "./model-editor-queries"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { Mode } from "./shared/mode"; +import type { NotificationLogger } from "../common/logging"; + +/** + * setUpPack sets up a directory to use for the data extension editor queries if required. + * + * There are two cases (example language is Java): + * - In case the queries are present in the codeql/java-queries, we don't need to write our own queries + * to disk. We still need to create a synthetic query pack so we can pass the queryDir to the query + * resolver without caring about whether the queries are present in the pack or not. + * - In case the queries are not present in the codeql/java-queries, we need to write our own queries + * to disk. We will create a synthetic query pack and install its dependencies so it is fully independent + * and we can simply pass it through when resolving the queries. + * + * These steps together ensure that later steps of the process don't need to keep track of whether the queries + * are present in codeql/java-queries or in our own query pack. They just need to resolve the query. + * + * @param cliServer The CodeQL CLI server to use. + * @param logger The logger to use. + * @param queryDir The directory to set up. + * @param language The language to use for the queries. + * @param initialMode The initial mode to use to check the existence of the queries. + * @returns true if the setup was successful, false otherwise. + */ +export async function setUpPack( + cliServer: CodeQLCliServer, + logger: NotificationLogger, + queryDir: string, + language: QueryLanguage, + initialMode: Mode, +): Promise { + // Download the required query packs + await cliServer.packDownload([`codeql/${language}-queries`]); + + // We'll only check if the application mode query exists in the pack and assume that if it does, + // the framework mode query will also exist. + const applicationModeQuery = await resolveEndpointsQuery( + cliServer, + language, + initialMode, + [], + [], + ); + + if (applicationModeQuery) { + // Set up a synthetic pack so CodeQL doesn't crash later when we try + // to resolve a query within this directory + const syntheticQueryPack = { + name: syntheticQueryPackName, + version: "0.0.0", + dependencies: {}, + }; + + const qlpackFile = join(queryDir, "codeql-pack.yml"); + await writeFile(qlpackFile, dump(syntheticQueryPack), "utf8"); + } else { + // If we can't resolve the query, we need to write them to desk ourselves. + const externalApiQuerySuccess = await prepareModelEditorQueries( + logger, + queryDir, + language, + ); + if (!externalApiQuerySuccess) { + return false; + } + + // Set up a synthetic pack so that the query can be resolved later. + const syntheticQueryPack = { + name: syntheticQueryPackName, + version: "0.0.0", + dependencies: { + [`codeql/${language}-all`]: "*", + }, + }; + + const qlpackFile = join(queryDir, "codeql-pack.yml"); + await writeFile(qlpackFile, dump(syntheticQueryPack), "utf8"); + await cliServer.packInstall(queryDir); + } + + return true; +} diff --git a/extensions/ql-vscode/src/model-editor/model-editor-queries.ts b/extensions/ql-vscode/src/model-editor/model-editor-queries.ts new file mode 100644 index 00000000000..f1e7429afbd --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-editor-queries.ts @@ -0,0 +1,283 @@ +import type { QueryRunner } from "../query-server"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import type { NotificationLogger } from "../common/logging"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import type { CancellationToken } from "vscode"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { UserCancellationException } from "../common/vscode/progress"; +import { redactableError } from "../common/errors"; +import { telemetryListener } from "../common/vscode/telemetry"; +import { join } from "path"; +import { Mode } from "./shared/mode"; +import { outputFile, writeFile } from "fs-extra"; +import type { QueryLanguage } from "../common/query-language"; +import { fetchExternalApiQueries } from "./queries"; +import type { Method } from "./method"; +import { runQuery } from "../local-queries/run-query"; +import { decodeBqrsToMethods } from "./bqrs"; +import { resolveQueriesFromPacks } from "../local-queries"; +import { modeTag } from "./mode-tag"; + +export const syntheticQueryPackName = "codeql/model-editor-queries"; + +type RunQueryOptions = { + cliServer: CodeQLCliServer; + queryRunner: QueryRunner; + logger: NotificationLogger; + databaseItem: DatabaseItem; + language: QueryLanguage; + queryStorageDir: string; + queryDir: string; + + progress: ProgressCallback; + token: CancellationToken; +}; + +export async function prepareModelEditorQueries( + logger: NotificationLogger, + queryDir: string, + language: QueryLanguage, +): Promise { + // Resolve the query that we want to run. + const query = fetchExternalApiQueries[language]; + if (!query) { + void showAndLogExceptionWithTelemetry( + logger, + telemetryListener, + redactableError`No bundled model editor query found for language ${language}`, + ); + return false; + } + // Create the query file. + await Promise.all( + Object.values(Mode).map(async (mode) => { + const queryFile = join(queryDir, queryNameFromMode(mode)); + await writeFile(queryFile, query[`${mode}ModeQuery`], "utf8"); + }), + ); + + // Create any dependencies + if (query.dependencies) { + for (const [filename, contents] of Object.entries(query.dependencies)) { + const dependencyFile = join(queryDir, filename); + await outputFile(dependencyFile, contents, "utf8"); + } + } + return true; +} + +export const externalApiQueriesProgressMaxStep = 2000; + +export async function runModelEditorQueries( + mode: Mode, + { + cliServer, + queryRunner, + logger, + databaseItem, + language, + queryStorageDir, + queryDir, + progress, + token, + }: RunQueryOptions, +): Promise { + // The below code is temporary to allow for rapid prototyping of the queries. Once the queries are stabilized, we will + // move these queries into the `github/codeql` repository and use them like any other contextual (e.g. AST) queries. + // This is intentionally not pretty code, as it will be removed soon. + // For a reference of what this should do in the future, see the previous implementation in + // https://github.com/github/vscode-codeql/blob/089d3566ef0bc67d9b7cc66e8fd6740b31c1c0b0/extensions/ql-vscode/src/data-extensions-editor/external-api-usage-query.ts#L33-L72 + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Run model editor queries cancelled.", + true, + ); + } + + progress({ + message: "Resolving QL packs", + step: 1, + maxStep: externalApiQueriesProgressMaxStep, + }); + const additionalPacks = getOnDiskWorkspaceFolders(); + const extensionPacks = Object.keys( + await cliServer.resolveQlpacks(additionalPacks, true), + ); + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Run model editor queries cancelled.", + true, + ); + } + + progress({ + message: "Resolving query", + step: 2, + maxStep: externalApiQueriesProgressMaxStep, + }); + + // Resolve the queries from either codeql/java-queries or from the temporary queryDir + const queryPath = await resolveEndpointsQuery( + cliServer, + databaseItem.language, + mode, + [syntheticQueryPackName], + [queryDir], + ); + if (!queryPath) { + void showAndLogExceptionWithTelemetry( + logger, + telemetryListener, + redactableError`The ${mode} model editor query could not be found. Try re-opening the model editor. If that doesn't work, try upgrading the CodeQL libraries.`, + ); + return; + } + + // Run the actual query + const completedQuery = await runQuery({ + queryRunner, + databaseItem, + queryPath, + queryStorageDir, + additionalPacks, + extensionPacks, + progress: (update) => + progress({ + step: update.step + 500, + maxStep: externalApiQueriesProgressMaxStep, + message: update.message, + }), + token, + }); + + if (!completedQuery) { + return; + } + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Run model editor queries cancelled.", + true, + ); + } + + // Read the results and covert to internal representation + progress({ + message: "Decoding results", + step: 1600, + maxStep: externalApiQueriesProgressMaxStep, + }); + + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but got ${queryResults.length}`, + ); + } + + const bqrsChunk = await readQueryResults({ + cliServer, + logger, + bqrsPath: completedQuery.outputDir.getBqrsPath( + queryResults[0].outputBaseName, + ), + }); + if (!bqrsChunk) { + return; + } + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Run model editor queries cancelled.", + true, + ); + } + + progress({ + message: "Finalizing results", + step: 1950, + maxStep: externalApiQueriesProgressMaxStep, + }); + + return decodeBqrsToMethods(bqrsChunk, mode, language); +} + +type GetResultsOptions = { + cliServer: Pick; + logger: NotificationLogger; + bqrsPath: string; +}; + +export async function readQueryResults({ + cliServer, + logger, + bqrsPath, +}: GetResultsOptions) { + const bqrsInfo = await cliServer.bqrsInfo(bqrsPath); + if (bqrsInfo["result-sets"].length !== 1) { + void showAndLogExceptionWithTelemetry( + logger, + telemetryListener, + redactableError`Expected exactly one result set, got ${bqrsInfo["result-sets"].length}`, + ); + return undefined; + } + + const resultSet = bqrsInfo["result-sets"][0]; + + return cliServer.bqrsDecode(bqrsPath, resultSet.name); +} + +/** + * Resolve the query path to the model editor endpoints query. All queries are tagged like this: + * modeleditor endpoints + * Example: modeleditor endpoints framework-mode + * + * @param cliServer The CodeQL CLI server to use. + * @param language The language of the query pack to use. + * @param mode The mode to resolve the query for. + * @param additionalPackNames Additional pack names to search. + * @param additionalPackPaths Additional pack paths to search. + */ +export async function resolveEndpointsQuery( + cliServer: CodeQLCliServer, + language: string, + mode: Mode, + additionalPackNames: string[] = [], + additionalPackPaths: string[] = [], +): Promise { + const packsToSearch = [`codeql/${language}-queries`, ...additionalPackNames]; + + // First, resolve the query that we want to run. + // All queries are tagged like this: + // internal extract automodel + // Example: internal extract automodel framework-mode candidates + const queries = await resolveQueriesFromPacks( + cliServer, + packsToSearch, + { + kind: "table", + "tags contain all": ["modeleditor", "endpoints", modeTag(mode)], + }, + additionalPackPaths, + ); + if (queries.length > 1) { + throw new Error( + `Found multiple endpoints queries for ${mode}. Can't continue`, + ); + } + + if (queries.length === 0) { + return undefined; + } + + return queries[0]; +} + +function queryNameFromMode(mode: Mode): string { + return `${mode.charAt(0).toUpperCase() + mode.slice(1)}ModeEndpoints.ql`; +} diff --git a/extensions/ql-vscode/src/model-editor/model-editor-view.ts b/extensions/ql-vscode/src/model-editor/model-editor-view.ts new file mode 100644 index 00000000000..8f0ac3c75a0 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-editor-view.ts @@ -0,0 +1,987 @@ +import type { CancellationToken, Tab } from "vscode"; +import { + CancellationTokenSource, + ProgressLocation, + TabInputWebview, + Uri, + ViewColumn, + window, +} from "vscode"; +import type { WebviewPanelConfig } from "../common/vscode/abstract-webview"; +import { AbstractWebview } from "../common/vscode/abstract-webview"; +import type { + FromModelEditorMessage, + ToModelEditorMessage, +} from "../common/interface-types"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { + UserCancellationException, + withProgress, +} from "../common/vscode/progress"; +import type { QueryRunner } from "../query-server"; +import { + showAndLogErrorMessage, + showAndLogExceptionWithTelemetry, +} from "../common/logging"; +import type { + DatabaseItem, + DatabaseManager, +} from "../databases/local-databases"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { asError, assertNever, getErrorMessage } from "../common/helpers-pure"; +import type { DatabaseFetcher } from "../databases/database-fetcher"; +import type { App } from "../common/app"; +import { redactableError } from "../common/errors"; +import { + externalApiQueriesProgressMaxStep, + runModelEditorQueries, +} from "./model-editor-queries"; +import type { MethodSignature } from "./method"; +import type { ModeledMethod } from "./modeled-method"; +import type { ExtensionPack } from "./shared/extension-pack"; +import type { ModelConfigListener } from "../config"; +import { Mode } from "./shared/mode"; +import { + GENERATED_MODELS_SUFFIX, + loadModeledMethods, + saveModeledMethods, +} from "./modeled-method-fs"; +import { pickExtensionPack } from "./extension-pack-picker"; +import type { QueryLanguage } from "../common/query-language"; +import { getLanguageDisplayName } from "../common/query-language"; +import { telemetryListener } from "../common/vscode/telemetry"; +import type { ModelingStore } from "./modeling-store"; +import type { ModelingEvents } from "./modeling-events"; +import type { ModelsAsDataLanguage } from "./languages"; +import { + AutoModelGenerationType, + createModelConfig, + getModelsAsDataLanguage, +} from "./languages"; +import { runGenerateQueries } from "./generate"; +import { ResponseError } from "vscode-jsonrpc"; +import { LSPErrorCodes } from "vscode-languageclient"; +import type { AccessPathSuggestionOptions } from "./suggestions"; +import { runSuggestionsQuery } from "./suggestion-queries"; +import { parseAccessPathSuggestionRowsToOptions } from "./suggestions-bqrs"; +import { ModelEvaluator } from "./model-evaluator"; +import type { ModelEvaluationRunState } from "./shared/model-evaluation-run-state"; +import type { VariantAnalysisManager } from "../variant-analysis/variant-analysis-manager"; +import type { ModelExtensionFile } from "./model-extension-file"; +import { modelExtensionFileToYaml } from "./yaml"; +import { outputFile } from "fs-extra"; +import { join } from "path"; + +export class ModelEditorView extends AbstractWebview< + ToModelEditorMessage, + FromModelEditorMessage +> { + private readonly modelEvaluator: ModelEvaluator; + private readonly languageDefinition: ModelsAsDataLanguage; + // Cancellation token source that can be used for passing into long-running operations. Should only + // be cancelled when the view is closed + private readonly cancellationTokenSource = new CancellationTokenSource(); + + public constructor( + protected readonly app: App, + private readonly modelingStore: ModelingStore, + private readonly modelingEvents: ModelingEvents, + private readonly modelConfig: ModelConfigListener, + private readonly databaseManager: DatabaseManager, + private readonly databaseFetcher: DatabaseFetcher, + private readonly variantAnalysisManager: VariantAnalysisManager, + private readonly cliServer: CodeQLCliServer, + private readonly queryRunner: QueryRunner, + private readonly queryStorageDir: string, + private readonly queryDir: string, + private readonly databaseItem: DatabaseItem, + private readonly extensionPack: ExtensionPack, + // The language is equal to databaseItem.language but is properly typed as QueryLanguage + private readonly language: QueryLanguage, + initialMode: Mode, + ) { + super(app); + + this.push({ + dispose: () => { + this.cancellationTokenSource.cancel(); + }, + }); + + this.modelingStore.initializeStateForDb(databaseItem, initialMode); + this.registerToModelingEvents(); + this.registerToModelConfigEvents(); + + this.languageDefinition = getModelsAsDataLanguage(language); + + this.modelEvaluator = new ModelEvaluator( + this.app, + this.cliServer, + modelingStore, + modelingEvents, + this.variantAnalysisManager, + databaseItem, + language, + this.extensionPack, + this.updateModelEvaluationRun.bind(this), + ); + this.push(this.modelEvaluator); + } + + public async openView() { + const panel = await this.getPanel(); + panel.reveal(undefined, true); + + panel.onDidChangeViewState(async () => { + if (panel.active) { + this.modelingStore.setActiveDb(this.databaseItem); + } + }); + + panel.onDidDispose(() => { + this.modelingStore.removeDb(this.databaseItem); + // onDidDispose is called after the tab has been closed, + // so we want to check if there are any others still open. + void this.app.commands.execute( + "setContext", + "codeql.modelEditorOpen", + this.isAModelEditorOpen(), + ); + }); + + await this.waitForPanelLoaded(); + + void this.app.commands.execute( + "setContext", + "codeql.modelEditorOpen", + true, + ); + } + + private isAModelEditorOpen(): boolean { + return window.tabGroups.all.some((tabGroup) => + tabGroup.tabs.some((tab) => this.isTabModelEditorView(tab)), + ); + } + + private isTabModelEditorView(tab: Tab): boolean { + if (!(tab.input instanceof TabInputWebview)) { + return false; + } + + // The viewType has a prefix, such as "mainThreadWebview-", but if the + // suffix matches that should be enough to identify the view. + return tab.input.viewType.endsWith("model-editor"); + } + + protected async getPanelConfig(): Promise { + return { + viewId: "model-editor", + title: `Modeling ${getLanguageDisplayName( + this.extensionPack.language, + )} (${this.extensionPack.name})`, + viewColumn: ViewColumn.Active, + preserveFocus: true, + view: "model-editor", + iconPath: { + dark: Uri.joinPath( + Uri.file(this.app.extensionPath), + "media/dark/symbol-misc.svg", + ), + light: Uri.joinPath( + Uri.file(this.app.extensionPath), + "media/light/symbol-misc.svg", + ), + }, + }; + } + + protected onPanelDispose(): void { + // Nothing to do + } + + protected async onMessage(msg: FromModelEditorMessage): Promise { + switch (msg.t) { + case "viewLoaded": + await this.onWebViewLoaded(); + + break; + case "openDatabase": + await this.app.commands.execute( + "revealInExplorer", + this.databaseItem.getSourceArchiveExplorerUri(), + ); + + break; + case "openExtensionPack": + await this.app.commands.execute( + "revealInExplorer", + Uri.file(this.extensionPack.path), + ); + + break; + case "refreshMethods": + await withProgress((progress) => this.loadMethods(progress), { + cancellable: false, + }); + + void telemetryListener?.sendUIInteraction( + "model-editor-refresh-methods", + ); + + break; + case "jumpToMethod": + await this.handleJumpToMethod(msg.methodSignature); + void telemetryListener?.sendUIInteraction( + "model-editor-jump-to-method", + ); + + break; + case "saveModeledMethods": + { + const methods = this.modelingStore.getMethods( + this.databaseItem, + msg.methodSignatures, + ); + const modeledMethods = this.modelingStore.getModeledMethods( + this.databaseItem, + msg.methodSignatures, + ); + const mode = this.modelingStore.getMode(this.databaseItem); + + await withProgress( + async (progress) => { + progress({ + step: 1, + maxStep: 500 + externalApiQueriesProgressMaxStep, + message: "Writing model files", + }); + await saveModeledMethods( + this.extensionPack, + this.language, + methods, + modeledMethods, + mode, + this.cliServer, + this.app.logger, + ); + + await Promise.all([ + this.setViewState(), + this.loadMethods((update) => + progress({ + ...update, + step: update.step + 500, + maxStep: 500 + externalApiQueriesProgressMaxStep, + }), + ), + ]); + }, + { + cancellable: false, + }, + ); + + this.modelingStore.removeModifiedMethods( + this.databaseItem, + Object.keys(modeledMethods), + ); + + this.modelingStore.updateMethodSorting(this.databaseItem); + + void telemetryListener?.sendUIInteraction( + "model-editor-save-modeled-methods", + ); + } + + break; + case "generateMethod": + await this.generateModeledMethods(); + + void telemetryListener?.sendUIInteraction( + "model-editor-generate-modeled-methods", + ); + + break; + case "modelDependency": + await this.modelDependency(); + void telemetryListener?.sendUIInteraction( + "model-editor-model-dependency", + ); + break; + case "switchMode": + this.modelingStore.setMode(this.databaseItem, msg.mode); + this.modelingStore.setMethods(this.databaseItem, []); + await Promise.all([ + this.postMessage({ + t: "setMethods", + methods: [], + }), + this.setViewState(), + withProgress((progress) => this.loadMethods(progress), { + cancellable: false, + }), + this.loadAccessPathSuggestions(), + ]); + void telemetryListener?.sendUIInteraction("model-editor-switch-modes"); + + break; + case "hideModeledMethods": + this.modelingStore.setHideModeledMethods( + this.databaseItem, + msg.hideModeledMethods, + ); + void telemetryListener?.sendUIInteraction( + "model-editor-hide-modeled-methods", + ); + break; + case "setMultipleModeledMethods": { + this.setModeledMethods(msg.methodSignature, msg.modeledMethods); + break; + } + case "startModelEvaluation": + await this.modelEvaluator.startEvaluation(); + break; + case "stopModelEvaluation": + await this.modelEvaluator.stopEvaluation(); + break; + case "openModelAlertsView": + await this.modelEvaluator.openModelAlertsView(); + break; + case "revealInModelAlertsView": + await this.modelEvaluator.revealInModelAlertsView(msg.modeledMethod); + break; + case "telemetry": + telemetryListener?.sendUIInteraction(msg.action); + break; + case "unhandledError": + void showAndLogExceptionWithTelemetry( + this.app.logger, + telemetryListener, + redactableError( + msg.error, + )`Unhandled error in model editor view: ${msg.error.message}`, + ); + break; + default: + assertNever(msg); + } + } + + protected async onWebViewLoaded() { + super.onWebViewLoaded(); + + await Promise.all([ + this.setViewState(), + withProgress((progress, token) => this.loadMethods(progress, token), { + cancellable: true, + }).then(async () => { + await this.generateModeledMethodsOnStartup(); + }), + this.loadExistingModeledMethods(), + this.loadAccessPathSuggestions(), + ]); + } + + public get databaseUri(): string { + return this.databaseItem.databaseUri.toString(); + } + + public async focusView(): Promise { + this.panel?.reveal(); + } + + public async revealMethod(method: MethodSignature): Promise { + this.panel?.reveal(); + + await this.postMessage({ + t: "revealMethod", + methodSignature: method.signature, + }); + } + + private async setViewState(): Promise { + const modelsAsDataLanguage = getModelsAsDataLanguage(this.language); + + const showGenerateButton = + (this.databaseItem.language === "ruby" || + this.modelConfig.flowGeneration) && + !!modelsAsDataLanguage.modelGeneration; + + const showEvaluationUi = this.modelConfig.modelEvaluation; + + const sourceArchiveAvailable = + this.databaseItem.hasSourceArchiveInExplorer(); + + const showModeSwitchButton = + this.languageDefinition.availableModes === undefined || + this.languageDefinition.availableModes.length > 1; + + await this.postMessage({ + t: "setModelEditorViewState", + viewState: { + extensionPack: this.extensionPack, + language: this.language, + showGenerateButton, + showEvaluationUi, + mode: this.modelingStore.getMode(this.databaseItem), + showModeSwitchButton, + sourceArchiveAvailable, + modelConfig: createModelConfig(this.modelConfig), + }, + }); + } + + protected async handleJumpToMethod(methodSignature: string) { + const method = this.modelingStore.getMethod( + this.databaseItem, + methodSignature, + ); + if (method) { + this.modelingStore.setSelectedMethod( + this.databaseItem, + method, + method.usages[0], + ); + } + } + + protected async loadExistingModeledMethods(): Promise { + try { + const modeledMethods = await loadModeledMethods( + this.extensionPack, + this.language, + this.cliServer, + this.app.logger, + ); + this.modelingStore.setModeledMethods(this.databaseItem, modeledMethods); + } catch (e) { + void showAndLogErrorMessage( + this.app.logger, + `Unable to read data extension YAML: ${getErrorMessage(e)}`, + ); + } + } + + protected async loadMethods( + progress: ProgressCallback, + token?: CancellationToken, + ): Promise { + const mode = this.modelingStore.getMode(this.databaseItem); + + try { + if (!token) { + token = this.cancellationTokenSource.token; + } + const queryResult = await runModelEditorQueries(mode, { + cliServer: this.cliServer, + queryRunner: this.queryRunner, + logger: this.app.logger, + databaseItem: this.databaseItem, + language: this.language, + queryStorageDir: this.queryStorageDir, + queryDir: this.queryDir, + progress: (update) => + progress({ + ...update, + message: `Loading models: ${update.message}`, + }), + token, + }); + if (!queryResult) { + return; + } + + if (token.isCancellationRequested) { + throw new UserCancellationException( + "Model editor: Load methods cancelled.", + true, + ); + } + + this.modelingStore.setMethods(this.databaseItem, queryResult); + } catch (err) { + if ( + err instanceof ResponseError && + err.code === LSPErrorCodes.RequestCancelled + ) { + this.panel?.dispose(); + return; + } + + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError(asError(err))`Failed to load results: ${getErrorMessage( + err, + )}`, + ); + } + } + + protected async loadAccessPathSuggestions(): Promise { + const mode = this.modelingStore.getMode(this.databaseItem); + + const modelsAsDataLanguage = getModelsAsDataLanguage(this.language); + const accessPathSuggestions = modelsAsDataLanguage.accessPathSuggestions; + if (!accessPathSuggestions) { + return; + } + + await withProgress( + async (progress) => { + try { + const suggestions = await runSuggestionsQuery(mode, { + parseResults: (results) => + accessPathSuggestions.parseResults( + results, + modelsAsDataLanguage, + this.app.logger, + ), + queryConstraints: accessPathSuggestions.queryConstraints(mode), + cliServer: this.cliServer, + queryRunner: this.queryRunner, + queryStorageDir: this.queryStorageDir, + databaseItem: this.databaseItem, + progress, + token: this.cancellationTokenSource.token, + logger: this.app.logger, + }); + + if (!suggestions) { + return; + } + + const options: AccessPathSuggestionOptions = { + input: parseAccessPathSuggestionRowsToOptions(suggestions.input), + output: parseAccessPathSuggestionRowsToOptions(suggestions.output), + }; + + await this.postMessage({ + t: "setAccessPathSuggestions", + accessPathSuggestions: options, + }); + } catch (e) { + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError( + asError(e), + )`Failed to fetch access path suggestions: ${getErrorMessage(e)}`, + ); + } + }, + { + cancellable: false, + location: ProgressLocation.Window, + title: "Loading access path suggestions", + }, + ); + } + + protected async generateModeledMethods(): Promise { + await withProgress( + async (progress) => { + const mode = this.modelingStore.getMode(this.databaseItem); + + const modelsAsDataLanguage = getModelsAsDataLanguage(this.language); + const modelGeneration = modelsAsDataLanguage.modelGeneration; + if (!modelGeneration) { + void showAndLogErrorMessage( + this.app.logger, + `Model generation is not supported for ${this.language}.`, + ); + return; + } + + let addedDatabase: DatabaseItem | undefined; + + // In application mode, we need the database of a specific library to generate + // the modeled methods. In framework mode, we'll use the current database. + if (mode === Mode.Application) { + addedDatabase = + await this.promptChooseNewOrExistingDatabase(progress); + if (!addedDatabase) { + return; + } + + if ((addedDatabase.language as QueryLanguage) !== this.language) { + void showAndLogErrorMessage( + this.app.logger, + `The selected database is for ${addedDatabase.language}, but the current database is for ${this.language}.`, + ); + return; + } + } + + progress({ + step: 0, + maxStep: 4000, + message: "Generating modeled methods for library", + }); + + try { + await runGenerateQueries({ + queryConstraints: modelGeneration.queryConstraints(mode), + filterQueries: modelGeneration.filterQueries, + onResults: async (queryPath, results) => { + const modeledMethods = modelGeneration.parseResults( + queryPath, + results, + modelsAsDataLanguage, + this.app.logger, + { + mode, + config: this.modelConfig, + }, + ); + + this.addModeledMethodsFromArray(modeledMethods); + }, + cliServer: this.cliServer, + queryRunner: this.queryRunner, + queryStorageDir: this.queryStorageDir, + databaseItem: addedDatabase ?? this.databaseItem, + progress, + token: this.cancellationTokenSource.token, + }); + } catch (e) { + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError( + asError(e), + )`Failed to generate models: ${getErrorMessage(e)}`, + ); + } + }, + { cancellable: false }, + ); + } + + protected async generateModeledMethodsOnStartup(): Promise { + const mode = this.modelingStore.getMode(this.databaseItem); + const modelsAsDataLanguage = getModelsAsDataLanguage(this.language); + const autoModelGeneration = modelsAsDataLanguage.autoModelGeneration; + + if (autoModelGeneration === undefined) { + return; + } + + const autoModelType = autoModelGeneration.type({ + mode, + config: this.modelConfig, + }); + + if (autoModelType === AutoModelGenerationType.Disabled) { + return; + } + + await withProgress( + async (progress) => { + progress({ + step: 0, + maxStep: 4000, + message: "Generating models", + }); + + const extensionFile: ModelExtensionFile = { + extensions: [], + }; + + try { + await runGenerateQueries({ + queryConstraints: autoModelGeneration.queryConstraints(mode), + filterQueries: autoModelGeneration.filterQueries, + onResults: (queryPath, results) => { + switch (autoModelType) { + case AutoModelGenerationType.SeparateFile: { + const extensions = autoModelGeneration.parseResultsToYaml( + queryPath, + results, + modelsAsDataLanguage, + this.app.logger, + ); + + extensionFile.extensions.push(...extensions); + break; + } + case AutoModelGenerationType.Models: { + const modeledMethods = autoModelGeneration.parseResults( + queryPath, + results, + modelsAsDataLanguage, + this.app.logger, + { + mode, + config: this.modelConfig, + }, + ); + + this.addModeledMethodsFromArray(modeledMethods); + break; + } + default: { + assertNever(autoModelType); + } + } + }, + cliServer: this.cliServer, + queryRunner: this.queryRunner, + queryStorageDir: this.queryStorageDir, + databaseItem: this.databaseItem, + progress, + token: this.cancellationTokenSource.token, + }); + } catch (e) { + void showAndLogExceptionWithTelemetry( + this.app.logger, + this.app.telemetry, + redactableError( + asError(e), + )`Failed to auto-run generating models: ${getErrorMessage(e)}`, + ); + return; + } + + if (autoModelType === AutoModelGenerationType.SeparateFile) { + progress({ + step: 4000, + maxStep: 4000, + message: "Saving generated models", + }); + + const fileContents = `# This file was automatically generated from ${this.databaseItem.name}. Manual changes will not persist.\n\n${modelExtensionFileToYaml(extensionFile)}`; + const filePath = join( + this.extensionPack.path, + "models", + `${this.language}${GENERATED_MODELS_SUFFIX}`, + ); + + await outputFile(filePath, fileContents); + + void this.app.logger.log(`Saved generated model file to ${filePath}`); + } + }, + { + cancellable: false, + location: ProgressLocation.Window, + title: "Generating models", + }, + ); + } + + private async modelDependency(): Promise { + return withProgress( + async (progress, token) => { + const addedDatabase = + await this.promptChooseNewOrExistingDatabase(progress); + if (!addedDatabase || token.isCancellationRequested) { + return; + } + + const addedDbUri = addedDatabase.databaseUri.toString(); + if (this.modelingStore.isDbOpen(addedDbUri)) { + this.modelingEvents.fireFocusModelEditorEvent(addedDbUri); + return; + } + + const modelFile = await pickExtensionPack( + this.cliServer, + addedDatabase, + this.modelConfig, + this.app.logger, + progress, + token, + 3, + ); + if (!modelFile) { + return; + } + + // Check again just before opening the editor to ensure no model editor has been opened between + // our first check and now. + if (this.modelingStore.isDbOpen(addedDbUri)) { + this.modelingEvents.fireFocusModelEditorEvent(addedDbUri); + return; + } + + const view = new ModelEditorView( + this.app, + this.modelingStore, + this.modelingEvents, + this.modelConfig, + this.databaseManager, + this.databaseFetcher, + this.variantAnalysisManager, + this.cliServer, + this.queryRunner, + this.queryStorageDir, + this.queryDir, + addedDatabase, + modelFile, + this.language, + Mode.Framework, + ); + await view.openView(); + }, + { cancellable: true }, + ); + } + + private async promptChooseNewOrExistingDatabase( + progress: ProgressCallback, + ): Promise { + const language = this.databaseItem.language; + const databases = this.databaseManager.databaseItems.filter( + (db) => db.language === language, + ); + if (databases.length === 0) { + return await this.promptImportDatabase(progress); + } else { + const local = { + label: "$(database) Use existing database", + detail: "Use database from the workspace", + }; + const github = { + label: "$(repo) Import database", + detail: "Choose database from GitHub", + }; + const newOrExistingDatabase = await window.showQuickPick([local, github]); + + if (!newOrExistingDatabase) { + void this.app.logger.log("No database chosen"); + return; + } + + if (newOrExistingDatabase === local) { + const pickedDatabase = await window.showQuickPick( + databases.map((database) => ({ + label: database.name, + description: database.language, + database, + })), + { + placeHolder: "Pick a database", + }, + ); + if (!pickedDatabase) { + void this.app.logger.log("No database chosen"); + return; + } + return pickedDatabase.database; + } else { + return await this.promptImportDatabase(progress); + } + } + } + + private async promptImportDatabase( + progress: ProgressCallback, + ): Promise { + // The external API methods are in the library source code, so we need to ask + // the user to import the library database. We need to have the database + // imported to the query server, so we need to register it to our workspace. + const makeSelected = false; + const addedDatabase = await this.databaseFetcher.promptImportGithubDatabase( + progress, + this.databaseItem.language, + undefined, + makeSelected, + false, + ); + if (!addedDatabase) { + void this.app.logger.log("No database chosen"); + return; + } + + return addedDatabase; + } + + private registerToModelingEvents() { + this.push( + this.modelingEvents.onMethodsChanged(async (event) => { + if (event.dbUri === this.databaseItem.databaseUri.toString()) { + await this.postMessage({ + t: "setMethods", + methods: event.methods, + }); + } + }), + ); + + this.push( + this.modelingEvents.onModeledAndModifiedMethodsChanged(async (event) => { + if (event.dbUri === this.databaseItem.databaseUri.toString()) { + await this.postMessage({ + t: "setModeledAndModifiedMethods", + methods: event.modeledMethods, + modifiedMethodSignatures: [...event.modifiedMethodSignatures], + }); + } + }), + ); + + this.push( + this.modelingEvents.onRevealInModelEditor(async (event) => { + if (event.dbUri === this.databaseItem.databaseUri.toString()) { + await this.revealMethod(event.method); + } + }), + ); + + this.push( + this.modelingEvents.onFocusModelEditor(async (event) => { + if (event.dbUri === this.databaseItem.databaseUri.toString()) { + await this.focusView(); + } + }), + ); + } + + private registerToModelConfigEvents() { + this.push( + this.modelConfig.onDidChangeConfiguration(() => { + void this.setViewState(); + }), + ); + } + + private addModeledMethods(modeledMethods: Record) { + this.modelingStore.addModeledMethods( + this.databaseItem, + modeledMethods, + true, + ); + } + + private addModeledMethodsFromArray(modeledMethods: ModeledMethod[]) { + const modeledMethodsByName: Record = {}; + + for (const modeledMethod of modeledMethods) { + if (!(modeledMethod.signature in modeledMethodsByName)) { + modeledMethodsByName[modeledMethod.signature] = []; + } + + modeledMethodsByName[modeledMethod.signature].push(modeledMethod); + } + + this.addModeledMethods(modeledMethodsByName); + } + + private setModeledMethods(signature: string, methods: ModeledMethod[]) { + this.modelingStore.updateModeledMethods( + this.databaseItem, + signature, + methods, + true, + ); + } + + private async updateModelEvaluationRun(run: ModelEvaluationRunState) { + await this.postMessage({ + t: "setModelEvaluationRun", + run, + }); + } +} diff --git a/extensions/ql-vscode/src/model-editor/model-evaluation-run.ts b/extensions/ql-vscode/src/model-editor/model-evaluation-run.ts new file mode 100644 index 00000000000..b944e086153 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-evaluation-run.ts @@ -0,0 +1,4 @@ +export interface ModelEvaluationRun { + isPreparing: boolean; + variantAnalysisId: number | undefined; +} diff --git a/extensions/ql-vscode/src/model-editor/model-evaluator.ts b/extensions/ql-vscode/src/model-editor/model-evaluator.ts new file mode 100644 index 00000000000..2932003af73 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-evaluator.ts @@ -0,0 +1,338 @@ +import type { ModelingStore } from "./modeling-store"; +import type { ModelingEvents } from "./modeling-events"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { ModelEvaluationRun } from "./model-evaluation-run"; +import { DisposableObject } from "../common/disposable-object"; +import type { ModelEvaluationRunState } from "./shared/model-evaluation-run-state"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { VariantAnalysisManager } from "../variant-analysis/variant-analysis-manager"; +import type { QueryLanguage } from "../common/query-language"; +import { resolveCodeScanningQueryPack } from "../variant-analysis/code-scanning-pack"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { + UserCancellationException, + withProgress, +} from "../common/vscode/progress"; +import { VariantAnalysisScannedRepositoryDownloadStatus } from "../variant-analysis/shared/variant-analysis"; +import type { VariantAnalysis } from "../variant-analysis/shared/variant-analysis"; +import type { CancellationToken } from "vscode"; +import { CancellationTokenSource } from "vscode"; +import type { QlPackDetails } from "../variant-analysis/ql-pack-details"; +import type { App } from "../common/app"; +import { ModelAlertsView } from "./model-alerts/model-alerts-view"; +import type { ExtensionPack } from "./shared/extension-pack"; +import type { ModeledMethod } from "./modeled-method"; + +export class ModelEvaluator extends DisposableObject { + // Cancellation token source to allow cancelling of the current run + // before a variant analysis has been submitted. Once it has been + // submitted, we use the variant analysis manager's cancellation support. + private cancellationSource: CancellationTokenSource; + + private modelAlertsView: ModelAlertsView | undefined; + + public constructor( + private readonly app: App, + private readonly cliServer: CodeQLCliServer, + private readonly modelingStore: ModelingStore, + private readonly modelingEvents: ModelingEvents, + private readonly variantAnalysisManager: VariantAnalysisManager, + private readonly dbItem: DatabaseItem, + private readonly language: QueryLanguage, + private readonly extensionPack: ExtensionPack, + private readonly updateModelEditorView: ( + run: ModelEvaluationRunState, + ) => Promise, + ) { + super(); + + this.registerToModelingEvents(); + + this.cancellationSource = new CancellationTokenSource(); + } + + public async startEvaluation() { + // Update store with evaluation run status + const evaluationRun: ModelEvaluationRun = { + isPreparing: true, + variantAnalysisId: undefined, + }; + this.modelingStore.updateModelEvaluationRun(this.dbItem, evaluationRun); + + // Build pack + const qlPack = await resolveCodeScanningQueryPack( + this.app.logger, + this.cliServer, + this.language, + this.cancellationSource.token, + ); + + if (!qlPack) { + this.modelingStore.updateModelEvaluationRun(this.dbItem, undefined); + throw new Error("Unable to trigger evaluation run"); + } + + // Submit variant analysis and monitor progress + return withProgress( + (progress) => + this.runVariantAnalysis( + qlPack, + progress, + this.cancellationSource.token, + ), + { + title: "Run model evaluation", + cancellable: false, + }, + ); + } + + public async stopEvaluation() { + const evaluationRun = this.modelingStore.getModelEvaluationRun(this.dbItem); + if (!evaluationRun) { + void this.app.logger.log("No active evaluation run to stop"); + return; + } + + this.cancellationSource.cancel(); + + if (evaluationRun.variantAnalysisId === undefined) { + // If the variant analysis has not been submitted yet, we can just + // update the store. + this.modelingStore.updateModelEvaluationRun(this.dbItem, { + ...evaluationRun, + isPreparing: false, + }); + } else { + // If the variant analysis has been submitted, we need to cancel it. We + // don't need to update the store here, as the event handler for + // onVariantAnalysisStatusUpdated will do that for us. + await this.variantAnalysisManager.cancelVariantAnalysis( + evaluationRun.variantAnalysisId, + ); + } + } + + public async openModelAlertsView() { + if (this.modelingStore.isModelAlertsViewOpen(this.dbItem)) { + this.modelingEvents.fireFocusModelAlertsViewEvent( + this.dbItem.databaseUri.toString(), + ); + return; + } else { + this.modelingStore.updateIsModelAlertsViewOpen(this.dbItem, true); + this.modelAlertsView = new ModelAlertsView( + this.app, + this.modelingEvents, + this.modelingStore, + this.dbItem, + this.extensionPack, + ); + + this.modelAlertsView.onEvaluationRunStopClicked(async () => { + await this.stopEvaluation(); + }); + + // There should be a variant analysis available at this point, as the + // view can only opened when the variant analysis is submitted. + const evaluationRun = this.modelingStore.getModelEvaluationRun( + this.dbItem, + ); + if (!evaluationRun) { + throw new Error("No evaluation run available"); + } + + const variantAnalysis = + await this.getVariantAnalysisForRun(evaluationRun); + + if (!variantAnalysis) { + throw new Error("No variant analysis available"); + } + + const reposResults = + this.variantAnalysisManager.getLoadedResultsForVariantAnalysis( + variantAnalysis.id, + ); + await this.modelAlertsView.showView(reposResults); + + await this.modelAlertsView.setVariantAnalysis(variantAnalysis); + } + } + + public async revealInModelAlertsView(modeledMethod: ModeledMethod) { + if (!this.modelingStore.isModelAlertsViewOpen(this.dbItem)) { + await this.openModelAlertsView(); + } + this.modelingEvents.fireRevealInModelAlertsViewEvent( + this.dbItem.databaseUri.toString(), + modeledMethod, + ); + } + + private registerToModelingEvents() { + this.push( + this.modelingEvents.onModelEvaluationRunChanged(async (event) => { + if (event.dbUri === this.dbItem.databaseUri.toString()) { + if (!event.evaluationRun) { + await this.updateModelEditorView({ + isPreparing: false, + variantAnalysis: undefined, + }); + } else { + const variantAnalysis = await this.getVariantAnalysisForRun( + event.evaluationRun, + ); + const run: ModelEvaluationRunState = { + isPreparing: event.evaluationRun.isPreparing, + variantAnalysis, + }; + await this.updateModelEditorView(run); + } + } + }), + ); + } + + private async getVariantAnalysisForRun( + evaluationRun: ModelEvaluationRun, + ): Promise { + if (evaluationRun.variantAnalysisId) { + return this.variantAnalysisManager.tryGetVariantAnalysis( + evaluationRun.variantAnalysisId, + ); + } + return undefined; + } + + private async runVariantAnalysis( + qlPack: QlPackDetails, + progress: ProgressCallback, + token: CancellationToken, + ): Promise { + let result: number | void = undefined; + try { + // Use Promise.race to make sure to stop the variant analysis processing when the + // user has stopped the evaluation run. We can't simply rely on the cancellation token + // because we haven't fully implemented cancellation support for variant analysis. + // Using this approach we make sure that the process is stopped from a user's point + // of view (the notification goes away too). It won't necessarily stop any tasks + // that are not aware of the cancellation token. + result = await Promise.race([ + this.variantAnalysisManager.runVariantAnalysis( + qlPack, + progress, + token, + false, + ), + new Promise((_, reject) => { + token.onCancellationRequested(() => + reject(new UserCancellationException(undefined, true)), + ); + }), + ]); + } catch (e) { + this.modelingStore.updateModelEvaluationRun(this.dbItem, undefined); + if (!(e instanceof UserCancellationException)) { + throw e; + } else { + return; + } + } finally { + // Renew the cancellation token source for the new evaluation run. + // This is necessary because we don't want the next evaluation run + // to start as cancelled. + this.cancellationSource = new CancellationTokenSource(); + } + + // If the result is a number, it means the variant analysis was successfully submitted, + // so we need to update the store and start up the monitor. + if (typeof result === "number") { + this.modelingStore.updateModelEvaluationRun(this.dbItem, { + isPreparing: true, + variantAnalysisId: result, + }); + this.monitorVariantAnalysis(result); + } else { + this.modelingStore.updateModelEvaluationRun(this.dbItem, undefined); + throw new Error("Unable to trigger variant analysis for evaluation run"); + } + } + + private monitorVariantAnalysis(variantAnalysisId: number) { + this.push( + this.variantAnalysisManager.onVariantAnalysisStatusUpdated( + async (variantAnalysis) => { + // Make sure it's the variant analysis we're interested in + if (variantAnalysis.id === variantAnalysisId) { + // Update model editor view + await this.updateModelEditorView({ + isPreparing: false, + variantAnalysis, + }); + + // Update model alerts view + await this.modelAlertsView?.setVariantAnalysis(variantAnalysis); + } + }, + ), + ); + + this.push( + this.variantAnalysisManager.onRepoStatesUpdated(async (e) => { + if ( + e.variantAnalysisId === variantAnalysisId && + e.repoState.downloadStatus === + VariantAnalysisScannedRepositoryDownloadStatus.Succeeded + ) { + await this.readAnalysisResults( + variantAnalysisId, + e.repoState.repositoryId, + ); + } + }), + ); + + this.push( + this.variantAnalysisManager.onRepoResultsLoaded(async (e) => { + if (e.variantAnalysisId === variantAnalysisId) { + await this.modelAlertsView?.setReposResults([e]); + } + }), + ); + } + + private async readAnalysisResults( + variantAnalysisId: number, + repositoryId: number, + ) { + const variantAnalysis = + this.variantAnalysisManager.tryGetVariantAnalysis(variantAnalysisId); + if (!variantAnalysis) { + void this.app.logger.log( + `Could not find variant analysis with id ${variantAnalysisId}`, + ); + throw new Error( + "There was an error when trying to retrieve variant analysis information", + ); + } + + const repository = variantAnalysis.scannedRepos?.find( + (r) => r.repository.id === repositoryId, + ); + if (!repository) { + void this.app.logger.log( + `Could not find repository with id ${repositoryId} in scanned repos`, + ); + throw new Error( + "There was an error when trying to retrieve repository information", + ); + } + + // Trigger loading the results for the repository. This will trigger a + // onRepoResultsLoaded event that we'll process. + await this.variantAnalysisManager.loadResults( + variantAnalysisId, + repository.repository.fullName, + ); + } +} diff --git a/extensions/ql-vscode/src/model-editor/model-extension-file.schema.json b/extensions/ql-vscode/src/model-editor/model-extension-file.schema.json new file mode 100644 index 00000000000..a44b8d9de06 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-extension-file.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/ModelExtensionFile", + "definitions": { + "ModelExtensionFile": { + "type": "object", + "properties": { + "extensions": { + "type": "array", + "items": { + "$ref": "#/definitions/ModelExtension" + } + } + }, + "required": ["extensions"] + }, + "ModelExtension": { + "type": "object", + "properties": { + "addsTo": { + "type": "object", + "properties": { + "pack": { + "type": "string" + }, + "extensible": { + "type": "string" + } + }, + "required": ["pack", "extensible"] + }, + "data": { + "type": "array", + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/DataTuple" + } + } + } + }, + "required": ["addsTo", "data"] + }, + "DataTuple": { + "type": ["boolean", "number", "string"] + } + } +} diff --git a/extensions/ql-vscode/src/model-editor/model-extension-file.ts b/extensions/ql-vscode/src/model-editor/model-extension-file.ts new file mode 100644 index 00000000000..ec560034982 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/model-extension-file.ts @@ -0,0 +1,17 @@ +type ExtensibleReference = { + pack: string; + extensible: string; +}; + +export type DataTuple = boolean | number | string; + +type DataRow = DataTuple[]; + +export type ModelExtension = { + addsTo: ExtensibleReference; + data: DataRow[]; +}; + +export type ModelExtensionFile = { + extensions: ModelExtension[]; +}; diff --git a/extensions/ql-vscode/src/model-editor/modeled-method-empty.ts b/extensions/ql-vscode/src/model-editor/modeled-method-empty.ts new file mode 100644 index 00000000000..11398b51e00 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/modeled-method-empty.ts @@ -0,0 +1,102 @@ +import type { ModeledMethod, SinkModeledMethod } from "./modeled-method"; +import type { MethodSignature } from "./method"; +import { assertNever } from "../common/helpers-pure"; + +export function createEmptyModeledMethod( + type: ModeledMethod["type"], + methodSignature: MethodSignature, +) { + const canonicalMethodSignature: MethodSignature = { + endpointType: methodSignature.endpointType, + packageName: methodSignature.packageName, + typeName: methodSignature.typeName, + methodName: methodSignature.methodName, + methodParameters: methodSignature.methodParameters, + signature: methodSignature.signature, + }; + + switch (type) { + case "none": + return createEmptyNoneModeledMethod(canonicalMethodSignature); + case "source": + return createEmptySourceModeledMethod(canonicalMethodSignature); + case "sink": + return createEmptySinkModeledMethod(canonicalMethodSignature); + case "summary": + return createEmptySummaryModeledMethod(canonicalMethodSignature); + case "neutral": + return createEmptyNeutralModeledMethod(canonicalMethodSignature); + case "type": + return createEmptyTypeModeledMethod(canonicalMethodSignature); + default: + assertNever(type); + } +} + +function createEmptyNoneModeledMethod( + methodSignature: MethodSignature, +): ModeledMethod { + return { + ...methodSignature, + type: "none", + }; +} + +function createEmptySourceModeledMethod( + methodSignature: MethodSignature, +): ModeledMethod { + return { + ...methodSignature, + type: "source", + output: "", + kind: "", + provenance: "manual", + }; +} + +function createEmptySinkModeledMethod( + methodSignature: MethodSignature, +): SinkModeledMethod { + return { + ...methodSignature, + type: "sink", + input: "", + kind: "", + provenance: "manual", + }; +} + +function createEmptySummaryModeledMethod( + methodSignature: MethodSignature, +): ModeledMethod { + return { + ...methodSignature, + type: "summary", + input: "", + output: "", + kind: "", + provenance: "manual", + }; +} + +function createEmptyNeutralModeledMethod( + methodSignature: MethodSignature, +): ModeledMethod { + return { + ...methodSignature, + type: "neutral", + kind: "", + provenance: "manual", + }; +} + +function createEmptyTypeModeledMethod( + methodSignature: MethodSignature, +): ModeledMethod { + return { + ...methodSignature, + type: "type", + relatedTypeName: "", + path: "", + }; +} diff --git a/extensions/ql-vscode/src/model-editor/modeled-method-fs.ts b/extensions/ql-vscode/src/model-editor/modeled-method-fs.ts new file mode 100644 index 00000000000..6e31ea14548 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/modeled-method-fs.ts @@ -0,0 +1,133 @@ +import { outputFile, readFile } from "fs-extra"; +import type { Method } from "./method"; +import type { ModeledMethod } from "./modeled-method"; +import type { Mode } from "./shared/mode"; +import { createDataExtensionYamls, loadDataExtensionYaml } from "./yaml"; +import { join, relative } from "path"; +import type { ExtensionPack } from "./shared/extension-pack"; +import type { NotificationLogger } from "../common/logging"; +import { showAndLogErrorMessage } from "../common/logging"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { load as loadYaml } from "js-yaml"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { pathsEqual } from "../common/files"; +import type { QueryLanguage } from "../common/query-language"; + +export const GENERATED_MODELS_SUFFIX = ".model.generated.yml"; + +export async function saveModeledMethods( + extensionPack: ExtensionPack, + language: QueryLanguage, + methods: readonly Method[], + modeledMethods: Readonly>, + mode: Mode, + cliServer: CodeQLCliServer, + logger: NotificationLogger, +): Promise { + const existingModeledMethods = await loadModeledMethodFiles( + extensionPack, + language, + cliServer, + logger, + ); + + const yamls = createDataExtensionYamls( + language, + methods, + modeledMethods, + existingModeledMethods, + mode, + ); + + for (const [filename, yaml] of Object.entries(yamls)) { + await outputFile(join(extensionPack.path, filename), yaml); + } + + void logger.log(`Saved data extension YAML`); +} + +async function loadModeledMethodFiles( + extensionPack: ExtensionPack, + language: QueryLanguage, + cliServer: CodeQLCliServer, + logger: NotificationLogger, +): Promise>> { + const modelFiles = await listModelFiles(extensionPack.path, cliServer); + + const modeledMethodsByFile: Record< + string, + Record + > = {}; + + for (const modelFile of modelFiles) { + const yaml = await readFile(join(extensionPack.path, modelFile), "utf8"); + + const data = loadYaml(yaml, { + filename: modelFile, + }); + + const modeledMethods = loadDataExtensionYaml(data, language); + if (!modeledMethods) { + void showAndLogErrorMessage( + logger, + `Failed to parse data extension YAML ${modelFile}.`, + ); + continue; + } + modeledMethodsByFile[modelFile] = modeledMethods; + } + + return modeledMethodsByFile; +} + +export async function loadModeledMethods( + extensionPack: ExtensionPack, + language: QueryLanguage, + cliServer: CodeQLCliServer, + logger: NotificationLogger, +): Promise> { + const existingModeledMethods: Record = {}; + + const modeledMethodsByFile = await loadModeledMethodFiles( + extensionPack, + language, + cliServer, + logger, + ); + for (const modeledMethods of Object.values(modeledMethodsByFile)) { + for (const [key, value] of Object.entries(modeledMethods)) { + if (!(key in existingModeledMethods)) { + existingModeledMethods[key] = []; + } + + existingModeledMethods[key].push(...value); + } + } + + return existingModeledMethods; +} + +export async function listModelFiles( + extensionPackPath: string, + cliServer: CodeQLCliServer, +): Promise> { + const result = await cliServer.resolveExtensions( + extensionPackPath, + getOnDiskWorkspaceFolders(), + ); + + const modelFiles = new Set(); + for (const [path, extensions] of Object.entries(result.data)) { + if (pathsEqual(path, extensionPackPath)) { + for (const extension of extensions) { + // We never load generated models + if (extension.file.endsWith(GENERATED_MODELS_SUFFIX)) { + continue; + } + + modelFiles.add(relative(extensionPackPath, extension.file)); + } + } + } + return modelFiles; +} diff --git a/extensions/ql-vscode/src/model-editor/modeled-method.ts b/extensions/ql-vscode/src/model-editor/modeled-method.ts new file mode 100644 index 00000000000..7156ee93e54 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/modeled-method.ts @@ -0,0 +1,219 @@ +import { assertNever } from "../common/helpers-pure"; +import type { MethodSignature } from "./method"; + +export type ModeledMethodType = + | "none" + | "source" + | "sink" + | "summary" + | "type" + | "neutral"; + +export type Provenance = + // Generated by the dataflow model + | "df-generated" + // Generated by the dataflow model and manually edited + | "df-manual" + // Entered by the user in the editor manually + | "manual"; + +export interface NoneModeledMethod extends MethodSignature { + readonly type: "none"; +} + +export interface SourceModeledMethod extends MethodSignature { + readonly type: "source"; + readonly output: string; + readonly kind: ModeledMethodKind; + readonly provenance: Provenance; +} + +export interface SinkModeledMethod extends MethodSignature { + readonly type: "sink"; + readonly input: string; + readonly kind: ModeledMethodKind; + readonly provenance: Provenance; +} + +export interface SummaryModeledMethod extends MethodSignature { + readonly type: "summary"; + readonly input: string; + readonly output: string; + readonly kind: ModeledMethodKind; + readonly provenance: Provenance; +} + +export interface NeutralModeledMethod extends MethodSignature { + readonly type: "neutral"; + readonly kind: ModeledMethodKind; + readonly provenance: Provenance; +} + +export interface TypeModeledMethod extends MethodSignature { + readonly type: "type"; + readonly relatedTypeName: string; + readonly path: string; +} + +export type ModeledMethod = + | NoneModeledMethod + | SourceModeledMethod + | SinkModeledMethod + | SummaryModeledMethod + | NeutralModeledMethod + | TypeModeledMethod; + +export type ModeledMethodKind = string; + +export function modeledMethodSupportsKind( + modeledMethod: ModeledMethod, +): modeledMethod is + | SourceModeledMethod + | SinkModeledMethod + | SummaryModeledMethod + | NeutralModeledMethod { + return ( + modeledMethod.type === "source" || + modeledMethod.type === "sink" || + modeledMethod.type === "summary" || + modeledMethod.type === "neutral" + ); +} + +export function modeledMethodSupportsInput( + modeledMethod: ModeledMethod, +): modeledMethod is SinkModeledMethod | SummaryModeledMethod { + return modeledMethod.type === "sink" || modeledMethod.type === "summary"; +} + +export function modeledMethodSupportsOutput( + modeledMethod: ModeledMethod, +): modeledMethod is SourceModeledMethod | SummaryModeledMethod { + return modeledMethod.type === "source" || modeledMethod.type === "summary"; +} + +export function modeledMethodSupportsProvenance( + modeledMethod: ModeledMethod, +): modeledMethod is + | SourceModeledMethod + | SinkModeledMethod + | SummaryModeledMethod + | NeutralModeledMethod { + return ( + modeledMethod.type === "source" || + modeledMethod.type === "sink" || + modeledMethod.type === "summary" || + modeledMethod.type === "neutral" + ); +} + +/** + * Calculates the new provenance for a modeled method based on the current provenance. + * @param modeledMethod The modeled method if there is one. + * @returns The new provenance. + */ +export function calculateNewProvenance( + modeledMethod: ModeledMethod | undefined, +) { + if (!modeledMethod || !modeledMethodSupportsProvenance(modeledMethod)) { + // If nothing has been modeled or the modeled method does not support + // provenance, we assume that the user has entered it manually. + return "manual"; + } + + switch (modeledMethod.provenance) { + case "df-generated": + // If the method has been generated and there has been a change, we assume + // that the user has manually edited it. + return "df-manual"; + case "df-manual": + // If the method has had manual edits, we want the provenance to stay the same. + return "df-manual"; + default: + // The method has been modeled manually. + return "manual"; + } +} + +export function createModeledMethodKey(modeledMethod: ModeledMethod): string { + const canonicalModeledMethod = canonicalizeModeledMethod(modeledMethod); + return JSON.stringify( + canonicalModeledMethod, + // This ensures the keys are always in the same order + Object.keys(canonicalModeledMethod).sort(), + ); +} + +/** + * This method will reset any properties which are not used for the specific type of modeled method. + * + * It will also set the `provenance` to `manual` since multiple modelings of the same method with a + * different provenance are not actually different. + * + * The returned canonical modeled method should only be used for comparisons. It should not be used + * for display purposes, saving the model, or any other purpose which requires the original modeled + * method to be preserved. + * + * @param modeledMethod The modeled method to canonicalize + */ +function canonicalizeModeledMethod( + modeledMethod: ModeledMethod, +): ModeledMethod { + const methodSignature: MethodSignature = { + endpointType: modeledMethod.endpointType, + signature: modeledMethod.signature, + packageName: modeledMethod.packageName, + typeName: modeledMethod.typeName, + methodName: modeledMethod.methodName, + methodParameters: modeledMethod.methodParameters, + }; + + switch (modeledMethod.type) { + case "none": + return { + ...methodSignature, + type: "none", + }; + case "source": + return { + ...methodSignature, + type: "source", + output: modeledMethod.output, + kind: modeledMethod.kind, + provenance: "manual", + }; + case "sink": + return { + ...methodSignature, + type: "sink", + input: modeledMethod.input, + kind: modeledMethod.kind, + provenance: "manual", + }; + case "summary": + return { + ...methodSignature, + type: "summary", + input: modeledMethod.input, + output: modeledMethod.output, + kind: modeledMethod.kind, + provenance: "manual", + }; + case "neutral": + return { + ...methodSignature, + type: "neutral", + kind: modeledMethod.kind, + provenance: "manual", + }; + case "type": + return { + ...methodSignature, + type: "type", + relatedTypeName: modeledMethod.relatedTypeName, + path: modeledMethod.path, + }; + default: + assertNever(modeledMethod); + } +} diff --git a/extensions/ql-vscode/src/model-editor/modeling-events.ts b/extensions/ql-vscode/src/model-editor/modeling-events.ts new file mode 100644 index 00000000000..2b7322f0ed7 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/modeling-events.ts @@ -0,0 +1,272 @@ +import type { App } from "../common/app"; +import { DisposableObject } from "../common/disposable-object"; +import type { AppEvent, AppEventEmitter } from "../common/events"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { Method, MethodSignature, Usage } from "./method"; +import type { ModelEvaluationRun } from "./model-evaluation-run"; +import type { ModeledMethod } from "./modeled-method"; +import type { Mode } from "./shared/mode"; + +interface MethodsChangedEvent { + readonly methods: readonly Method[]; + readonly dbUri: string; + readonly databaseItem: DatabaseItem; + readonly isActiveDb: boolean; +} + +interface HideModeledMethodsChangedEvent { + readonly hideModeledMethods: boolean; + readonly isActiveDb: boolean; +} + +interface ModeChangedEvent { + readonly mode: Mode; + readonly isActiveDb: boolean; +} + +interface ModeledAndModifiedMethodsChangedEvent { + readonly modeledMethods: Readonly>; + readonly modifiedMethodSignatures: ReadonlySet; + readonly dbUri: string; + readonly isActiveDb: boolean; +} + +interface SelectedMethodChangedEvent { + readonly databaseItem: DatabaseItem; + readonly method: Method; + readonly usage: Usage; + readonly modeledMethods: readonly ModeledMethod[]; + readonly isModified: boolean; +} + +interface ModelEvaluationRunChangedEvent { + readonly dbUri: string; + readonly evaluationRun: ModelEvaluationRun | undefined; +} + +interface RevealInModelEditorEvent { + dbUri: string; + method: MethodSignature; +} + +interface FocusModelEditorEvent { + dbUri: string; +} + +interface FocusModelAlertsViewEvent { + dbUri: string; +} + +interface RevealInModelAlertsViewEvent { + dbUri: string; + modeledMethod: ModeledMethod; +} + +export class ModelingEvents extends DisposableObject { + public readonly onActiveDbChanged: AppEvent; + public readonly onDbOpened: AppEvent; + public readonly onDbClosed: AppEvent; + public readonly onMethodsChanged: AppEvent; + public readonly onHideModeledMethodsChanged: AppEvent; + public readonly onModeChanged: AppEvent; + public readonly onModeledAndModifiedMethodsChanged: AppEvent; + public readonly onSelectedMethodChanged: AppEvent; + public readonly onModelEvaluationRunChanged: AppEvent; + public readonly onRevealInModelEditor: AppEvent; + public readonly onFocusModelEditor: AppEvent; + public readonly onFocusModelAlertsView: AppEvent; + public readonly onRevealInModelAlertsView: AppEvent; + + private readonly onActiveDbChangedEventEmitter: AppEventEmitter; + private readonly onDbOpenedEventEmitter: AppEventEmitter; + private readonly onDbClosedEventEmitter: AppEventEmitter; + private readonly onMethodsChangedEventEmitter: AppEventEmitter; + private readonly onHideModeledMethodsChangedEventEmitter: AppEventEmitter; + private readonly onModeChangedEventEmitter: AppEventEmitter; + private readonly onModeledAndModifiedMethodsChangedEventEmitter: AppEventEmitter; + private readonly onSelectedMethodChangedEventEmitter: AppEventEmitter; + private readonly onModelEvaluationRunChangedEventEmitter: AppEventEmitter; + private readonly onRevealInModelEditorEventEmitter: AppEventEmitter; + private readonly onFocusModelEditorEventEmitter: AppEventEmitter; + private readonly onFocusModelAlertsViewEventEmitter: AppEventEmitter; + private readonly onRevealInModelAlertsViewEventEmitter: AppEventEmitter; + + constructor(app: App) { + super(); + + this.onActiveDbChangedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onActiveDbChanged = this.onActiveDbChangedEventEmitter.event; + + this.onDbOpenedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onDbOpened = this.onDbOpenedEventEmitter.event; + + this.onDbClosedEventEmitter = this.push(app.createEventEmitter()); + this.onDbClosed = this.onDbClosedEventEmitter.event; + + this.onMethodsChangedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onMethodsChanged = this.onMethodsChangedEventEmitter.event; + + this.onHideModeledMethodsChangedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onHideModeledMethodsChanged = + this.onHideModeledMethodsChangedEventEmitter.event; + + this.onModeChangedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onModeChanged = this.onModeChangedEventEmitter.event; + + this.onModeledAndModifiedMethodsChangedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onModeledAndModifiedMethodsChanged = + this.onModeledAndModifiedMethodsChangedEventEmitter.event; + + this.onSelectedMethodChangedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onSelectedMethodChanged = + this.onSelectedMethodChangedEventEmitter.event; + + this.onModelEvaluationRunChangedEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onModelEvaluationRunChanged = + this.onModelEvaluationRunChangedEventEmitter.event; + + this.onRevealInModelEditorEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onRevealInModelEditor = this.onRevealInModelEditorEventEmitter.event; + + this.onFocusModelEditorEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onFocusModelEditor = this.onFocusModelEditorEventEmitter.event; + + this.onFocusModelAlertsViewEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onFocusModelAlertsView = this.onFocusModelAlertsViewEventEmitter.event; + + this.onRevealInModelAlertsViewEventEmitter = this.push( + app.createEventEmitter(), + ); + this.onRevealInModelAlertsView = + this.onRevealInModelAlertsViewEventEmitter.event; + } + + public fireActiveDbChangedEvent() { + this.onActiveDbChangedEventEmitter.fire(); + } + + public fireDbOpenedEvent(databaseItem: DatabaseItem) { + this.onDbOpenedEventEmitter.fire(databaseItem); + } + + public fireDbClosedEvent(dbUri: string) { + this.onDbClosedEventEmitter.fire(dbUri); + } + + public fireMethodsChangedEvent( + methods: Method[], + dbUri: string, + databaseItem: DatabaseItem, + isActiveDb: boolean, + ) { + this.onMethodsChangedEventEmitter.fire({ + methods, + databaseItem, + dbUri, + isActiveDb, + }); + } + + public fireHideModeledMethodsChangedEvent( + hideModeledMethods: boolean, + isActiveDb: boolean, + ) { + this.onHideModeledMethodsChangedEventEmitter.fire({ + hideModeledMethods, + isActiveDb, + }); + } + + public fireModeChangedEvent(mode: Mode, isActiveDb: boolean) { + this.onModeChangedEventEmitter.fire({ + mode, + isActiveDb, + }); + } + + public fireModeledAndModifiedMethodsChangedEvent( + modeledMethods: Record, + modifiedMethodSignatures: ReadonlySet, + dbUri: string, + isActiveDb: boolean, + ) { + this.onModeledAndModifiedMethodsChangedEventEmitter.fire({ + modeledMethods, + modifiedMethodSignatures, + dbUri, + isActiveDb, + }); + } + + public fireSelectedMethodChangedEvent( + databaseItem: DatabaseItem, + method: Method, + usage: Usage, + modeledMethods: ModeledMethod[], + isModified: boolean, + ) { + this.onSelectedMethodChangedEventEmitter.fire({ + databaseItem, + method, + usage, + modeledMethods, + isModified, + }); + } + + public fireModelEvaluationRunChangedEvent( + dbUri: string, + evaluationRun: ModelEvaluationRun | undefined, + ) { + this.onModelEvaluationRunChangedEventEmitter.fire({ + dbUri, + evaluationRun, + }); + } + + public fireRevealInModelEditorEvent(dbUri: string, method: MethodSignature) { + this.onRevealInModelEditorEventEmitter.fire({ + dbUri, + method, + }); + } + + public fireFocusModelEditorEvent(dbUri: string) { + this.onFocusModelEditorEventEmitter.fire({ + dbUri, + }); + } + + public fireFocusModelAlertsViewEvent(dbUri: string) { + this.onFocusModelAlertsViewEventEmitter.fire({ dbUri }); + } + + public fireRevealInModelAlertsViewEvent( + dbUri: string, + modeledMethod: ModeledMethod, + ) { + this.onRevealInModelAlertsViewEventEmitter.fire({ dbUri, modeledMethod }); + } +} diff --git a/extensions/ql-vscode/src/model-editor/modeling-store.ts b/extensions/ql-vscode/src/model-editor/modeling-store.ts new file mode 100644 index 00000000000..d964ad9897a --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/modeling-store.ts @@ -0,0 +1,421 @@ +import { DisposableObject } from "../common/disposable-object"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { Method, Usage } from "./method"; +import type { ModelEvaluationRun } from "./model-evaluation-run"; +import type { ModeledMethod } from "./modeled-method"; +import type { ModelingEvents } from "./modeling-events"; +import { INITIAL_HIDE_MODELED_METHODS_VALUE } from "./shared/hide-modeled-methods"; +import type { Mode } from "./shared/mode"; +import { sortMethods } from "./shared/sorting"; + +interface InternalDbModelingState { + databaseItem: DatabaseItem; + methods: Method[]; + hideModeledMethods: boolean; + mode: Mode; + modeledMethods: Record; + modifiedMethodSignatures: Set; + selectedMethod: Method | undefined; + selectedUsage: Usage | undefined; + modelEvaluationRun: ModelEvaluationRun | undefined; + isModelAlertsViewOpen: boolean; +} + +export interface DbModelingState { + readonly databaseItem: DatabaseItem; + readonly methods: readonly Method[]; + readonly hideModeledMethods: boolean; + readonly mode: Mode; + readonly modeledMethods: Readonly>; + readonly modifiedMethodSignatures: ReadonlySet; + readonly selectedMethod: Method | undefined; + readonly selectedUsage: Usage | undefined; + readonly modelEvaluationRun: ModelEvaluationRun | undefined; + readonly isModelAlertsViewOpen: boolean; +} + +export interface SelectedMethodDetails { + readonly databaseItem: DatabaseItem; + readonly method: Method; + readonly usage: Usage | undefined; + readonly modeledMethods: readonly ModeledMethod[]; + readonly isModified: boolean; +} + +export class ModelingStore extends DisposableObject { + private readonly state: Map; + private activeDb: string | undefined; + + constructor(private readonly modelingEvents: ModelingEvents) { + super(); + + // State initialization + this.state = new Map(); + } + + public initializeStateForDb(databaseItem: DatabaseItem, mode: Mode) { + const dbUri = databaseItem.databaseUri.toString(); + this.state.set(dbUri, { + databaseItem, + methods: [], + hideModeledMethods: INITIAL_HIDE_MODELED_METHODS_VALUE, + mode, + modeledMethods: {}, + modifiedMethodSignatures: new Set(), + selectedMethod: undefined, + selectedUsage: undefined, + modelEvaluationRun: undefined, + isModelAlertsViewOpen: false, + }); + + this.modelingEvents.fireDbOpenedEvent(databaseItem); + } + + public setActiveDb(databaseItem: DatabaseItem) { + this.activeDb = databaseItem.databaseUri.toString(); + this.modelingEvents.fireActiveDbChangedEvent(); + } + + public removeDb(databaseItem: DatabaseItem) { + const dbUri = databaseItem.databaseUri.toString(); + + if (!this.state.has(dbUri)) { + throw Error("Cannot remove a database that has not been initialized"); + } + + if (this.activeDb === dbUri) { + this.activeDb = undefined; + this.modelingEvents.fireActiveDbChangedEvent(); + } + + this.state.delete(dbUri); + this.modelingEvents.fireDbClosedEvent(dbUri); + } + + public getStateForActiveDb(): DbModelingState | undefined { + if (!this.activeDb) { + return undefined; + } + + return this.state.get(this.activeDb); + } + + private getInternalStateForActiveDb(): InternalDbModelingState | undefined { + if (!this.activeDb) { + return undefined; + } + + return this.state.get(this.activeDb); + } + + public anyDbsBeingModeled(): boolean { + return this.state.size > 0; + } + + public isDbOpen(dbUri: string): boolean { + return this.state.has(dbUri); + } + + /** + * Returns the method for the given database item and method signature. + * Returns undefined if no method exists with that signature. + */ + public getMethod( + dbItem: DatabaseItem, + methodSignature: string, + ): Method | undefined { + return this.getState(dbItem).methods.find( + (m) => m.signature === methodSignature, + ); + } + + /** + * Returns the methods for the given database item and method signatures. + * If the `methodSignatures` argument is not provided or is undefined, returns all methods. + */ + public getMethods( + dbItem: DatabaseItem, + methodSignatures?: string[], + ): readonly Method[] { + const methods = this.getState(dbItem).methods; + if (!methodSignatures) { + return methods; + } + return methods.filter((method) => + methodSignatures.includes(method.signature), + ); + } + + public setMethods(dbItem: DatabaseItem, methods: Method[]) { + this.changeMethods(dbItem, (state) => { + state.methods = sortMethods( + methods, + state.modeledMethods, + state.modifiedMethodSignatures, + ); + }); + } + + public updateMethodSorting(dbItem: DatabaseItem) { + this.changeMethods(dbItem, (state) => { + state.methods = sortMethods( + state.methods, + state.modeledMethods, + state.modifiedMethodSignatures, + ); + }); + } + + public setHideModeledMethods( + dbItem: DatabaseItem, + hideModeledMethods: boolean, + ) { + const dbState = this.getState(dbItem); + const dbUri = dbItem.databaseUri.toString(); + + dbState.hideModeledMethods = hideModeledMethods; + + this.modelingEvents.fireHideModeledMethodsChangedEvent( + hideModeledMethods, + dbUri === this.activeDb, + ); + } + + public setMode(dbItem: DatabaseItem, mode: Mode) { + const dbState = this.getState(dbItem); + const dbUri = dbItem.databaseUri.toString(); + + dbState.mode = mode; + + this.modelingEvents.fireModeChangedEvent(mode, dbUri === this.activeDb); + } + + public getMode(dbItem: DatabaseItem) { + return this.getState(dbItem).mode; + } + + /** + * Returns the modeled methods for the given database item and method signatures. + * If the `methodSignatures` argument is not provided or is undefined, returns all modeled methods. + */ + public getModeledMethods( + dbItem: DatabaseItem, + methodSignatures?: string[], + ): Readonly> { + const modeledMethods = this.getState(dbItem).modeledMethods; + if (!methodSignatures) { + return modeledMethods; + } + return Object.fromEntries( + Object.entries(modeledMethods).filter(([key]) => + methodSignatures.includes(key), + ), + ); + } + + public addModeledMethods( + dbItem: DatabaseItem, + methods: Record, + setModified: boolean, + ) { + this.changeModeledAndModifiedMethods(dbItem, (state) => { + const newModeledMethods = { + ...methods, + // Keep all methods that are already modeled in some form in the state + ...Object.fromEntries( + Object.entries(state.modeledMethods).filter(([_, value]) => + value.some((m) => m.type !== "none"), + ), + ), + }; + state.modeledMethods = newModeledMethods; + + if (setModified) { + const newModifiedMethods = new Set([ + ...state.modifiedMethodSignatures, + ...new Set(Object.keys(methods)), + ]); + state.modifiedMethodSignatures = newModifiedMethods; + } + }); + } + + public setModeledMethods( + dbItem: DatabaseItem, + methods: Record, + ) { + this.changeModeledAndModifiedMethods(dbItem, (state) => { + state.modeledMethods = { ...methods }; + }); + } + + public updateModeledMethods( + dbItem: DatabaseItem, + signature: string, + modeledMethods: ModeledMethod[], + setModified: boolean, + ) { + this.changeModeledAndModifiedMethods(dbItem, (state) => { + const newModeledMethods = { ...state.modeledMethods }; + newModeledMethods[signature] = modeledMethods; + state.modeledMethods = newModeledMethods; + + if (setModified) { + const newModifiedMethods = new Set([ + ...state.modifiedMethodSignatures, + signature, + ]); + state.modifiedMethodSignatures = newModifiedMethods; + } + }); + } + + public removeModifiedMethods( + dbItem: DatabaseItem, + methodSignatures: string[], + ) { + this.changeModeledAndModifiedMethods(dbItem, (state) => { + const newModifiedMethods = Array.from( + state.modifiedMethodSignatures, + ).filter((s) => !methodSignatures.includes(s)); + + state.modifiedMethodSignatures = new Set(newModifiedMethods); + }); + } + + /** + * Sets which method is considered to be selected. This method will be shown in the method modeling panel. + * + * The `Method` and `Usage` objects must have been retrieved from the modeling store, and not from + * a webview. This is because we rely on object referential identity so it must be the same object + * that is held internally by the modeling store. + */ + public setSelectedMethod(dbItem: DatabaseItem, method: Method, usage: Usage) { + const dbState = this.getState(dbItem); + + dbState.selectedMethod = method; + dbState.selectedUsage = usage; + + const modeledMethods = dbState.modeledMethods[method.signature] ?? []; + const isModified = dbState.modifiedMethodSignatures.has(method.signature); + this.modelingEvents.fireSelectedMethodChangedEvent( + dbItem, + method, + usage, + modeledMethods, + isModified, + ); + } + + public updateModelEvaluationRun( + dbItem: DatabaseItem, + evaluationRun: ModelEvaluationRun | undefined, + ) { + this.changeModelEvaluationRun(dbItem, (state) => { + state.modelEvaluationRun = evaluationRun; + }); + } + + public getSelectedMethodDetails(): SelectedMethodDetails | undefined { + const dbState = this.getInternalStateForActiveDb(); + if (!dbState) { + throw new Error("No active state found in modeling store"); + } + + const selectedMethod = dbState.selectedMethod; + if (!selectedMethod) { + return undefined; + } + + return { + databaseItem: dbState.databaseItem, + method: selectedMethod, + usage: dbState.selectedUsage, + modeledMethods: dbState.modeledMethods[selectedMethod.signature] ?? [], + isModified: dbState.modifiedMethodSignatures.has( + selectedMethod.signature, + ), + }; + } + + private getState(databaseItem: DatabaseItem): InternalDbModelingState { + if (!this.state.has(databaseItem.databaseUri.toString())) { + throw Error( + "Cannot get state for a database that has not been initialized", + ); + } + + return this.state.get(databaseItem.databaseUri.toString())!; + } + + public getModelEvaluationRun( + dbItem: DatabaseItem, + ): ModelEvaluationRun | undefined { + return this.getState(dbItem).modelEvaluationRun; + } + + private changeMethods( + dbItem: DatabaseItem, + updateState: (state: InternalDbModelingState) => void, + ) { + const state = this.getState(dbItem); + + updateState(state); + + this.modelingEvents.fireMethodsChangedEvent( + state.methods, + dbItem.databaseUri.toString(), + dbItem, + dbItem.databaseUri.toString() === this.activeDb, + ); + } + + private changeModeledAndModifiedMethods( + dbItem: DatabaseItem, + updateState: (state: InternalDbModelingState) => void, + ) { + const state = this.getState(dbItem); + + updateState(state); + + this.modelingEvents.fireModeledAndModifiedMethodsChangedEvent( + state.modeledMethods, + state.modifiedMethodSignatures, + dbItem.databaseUri.toString(), + dbItem.databaseUri.toString() === this.activeDb, + ); + } + + private changeModelEvaluationRun( + dbItem: DatabaseItem, + updateState: (state: InternalDbModelingState) => void, + ) { + const state = this.getState(dbItem); + + updateState(state); + + this.modelingEvents.fireModelEvaluationRunChangedEvent( + dbItem.databaseUri.toString(), + state.modelEvaluationRun, + ); + } + + public isModelAlertsViewOpen(dbItem: DatabaseItem): boolean { + return this.getState(dbItem).isModelAlertsViewOpen ?? false; + } + + private changeIsModelAlertsViewOpen( + dbItem: DatabaseItem, + updateState: (state: InternalDbModelingState) => void, + ) { + const state = this.getState(dbItem); + + updateState(state); + } + + public updateIsModelAlertsViewOpen(dbItem: DatabaseItem, isOpen: boolean) { + this.changeIsModelAlertsViewOpen(dbItem, (state) => { + state.isModelAlertsViewOpen = isOpen; + }); + } +} diff --git a/extensions/ql-vscode/src/model-editor/queries/index.ts b/extensions/ql-vscode/src/model-editor/queries/index.ts new file mode 100644 index 00000000000..0a6e71d3406 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/queries/index.ts @@ -0,0 +1,7 @@ +import type { Query } from "./query"; +import type { QueryLanguage } from "../../common/query-language"; + +export const fetchExternalApiQueries: Partial> = { + // Right now, there are no bundled queries. However, if we're adding a new + // language for the model editor, we can add the query here. +}; diff --git a/extensions/ql-vscode/src/model-editor/queries/query.ts b/extensions/ql-vscode/src/model-editor/queries/query.ts new file mode 100644 index 00000000000..3fe4926bf61 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/queries/query.ts @@ -0,0 +1,68 @@ +import type { CallClassification } from "../method"; +import type { ModeledMethodType } from "../modeled-method"; +import type { BqrsEntityValue } from "../../common/bqrs-cli-types"; + +export type Query = { + /** + * The application query. + * + * It should select all usages of external APIs, and return the following result pattern: + * - usage: the usage of the external API. This is an entity. + * - packageName: the package name of the external API. This is a string. + * - typeName: the type name of the external API. This is a string. + * - methodName: the method name of the external API. This is a string. + * - methodParameters: the parameters of the external API. This is a string. + * - supported: whether the external API is modeled. This is a boolean. + * - libraryName: the name of the library that contains the external API. This is a string and usually the basename of a file. + * - libraryVersion: the version of the library that contains the external API. This is a string and can be empty if the version cannot be determined. + * - type: the modeled kind of the method, either "sink", "source", "summary", or "neutral" + * - classification: the classification of the use of the method, either "source", "test", "generated", or "unknown" + * - kind: the kind of the endpoint, language-specific, e.g. "method" or "function" + */ + applicationModeQuery: string; + /** + * The framework query. + * + * It should select all methods that are callable by applications, which is usually all public methods (and constructors). + * The result pattern should be as follows: + * - method: the method that is callable by applications. This is an entity. + * - packageName: the package name of the method. This is a string. + * - typeName: the type name of the method. This is a string. + * - methodName: the method name of the method. This is a string. + * - methodParameters: the parameters of the method. This is a string. + * - supported: whether this method is modeled. This should be a string representation of a boolean to satify the result pattern for a problem query. + * - libraryName: the name of the file or library that contains the method. This is a string and usually the basename of a file. + * - type: the modeled kind of the method, either "sink", "source", "summary", or "neutral" + * - kind: the kind of the endpoint, language-specific, e.g. "method" or "function" + */ + frameworkModeQuery: string; + dependencies?: { + [filename: string]: string; + }; +}; + +export type ApplicationModeTuple = [ + BqrsEntityValue, + string, + string, + string, + string, + boolean, + string, + string, + ModeledMethodType, + CallClassification, + string | BqrsEntityValue | undefined, +]; + +export type FrameworkModeTuple = [ + BqrsEntityValue, + string, + string, + string, + string, + boolean, + string, + ModeledMethodType, + string | BqrsEntityValue | undefined, +]; diff --git a/extensions/ql-vscode/src/model-editor/shared/access-paths.ts b/extensions/ql-vscode/src/model-editor/shared/access-paths.ts new file mode 100644 index 00000000000..8588a0eb4c8 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/access-paths.ts @@ -0,0 +1,128 @@ +/** + * This file contains functions for parsing and validating access paths. + * + * This intentionally does not simply split by '.' since tokens may contain dots, + * e.g. `Field[foo.Bar.x]`. Instead, it uses some simple parsing to match valid tokens. + * + * Valid syntax was determined based on this file: + * https://github.com/github/codeql/blob/a04830b8b2d3e5f7df8e1f80f06c020b987a89a3/ruby/ql/lib/codeql/ruby/dataflow/internal/AccessPathSyntax.qll + * + * In contrast to that file, we do not use a regex for parsing to allow us to be more lenient. + * For example, we can parse partial access paths such as `Field[foo.Bar.x` without error. + */ + +/** + * A range of characters in an access path. The start position is inclusive, the end position is exclusive. + */ +type AccessPathRange = { + /** + * Zero-based index of the first character of the token. + */ + start: number; + /** + * Zero-based index of the character after the last character of the token. + */ + end: number; +}; + +/** + * A token in an access path. For example, `Argument[foo]` is a token. + */ +type AccessPartToken = { + text: string; + range: AccessPathRange; +}; + +/** + * Parses an access path into tokens. + * + * @param path The access path to parse. + * @returns An array of tokens. + */ +export function parseAccessPathTokens(path: string): AccessPartToken[] { + const parts: AccessPartToken[] = []; + + let currentPart = ""; + let currentPathStart = 0; + // Keep track of the number of brackets we can parse the path correctly when it contains + // nested brackets such as `Argument[foo[bar].test].Element`. + let bracketCounter = 0; + for (let i = 0; i < path.length; i++) { + const c = path[i]; + + if (c === "[") { + bracketCounter++; + } else if (c === "]") { + bracketCounter--; + } else if (c === "." && bracketCounter === 0) { + // A part ends when we encounter a dot that is not inside brackets. + parts.push({ + text: currentPart, + range: { + start: currentPathStart, + end: i, + }, + }); + currentPart = ""; + currentPathStart = i + 1; + continue; + } + + currentPart += c; + } + + // The last part should not be followed by a dot, so we need to add it manually. + // If the path is empty, such as for `Argument[foo].`, then this is still correct + // since the `validateAccessPath` function will check that none of the tokens are + // empty. + parts.push({ + text: currentPart, + range: { + start: currentPathStart, + end: path.length, + }, + }); + + return parts; +} + +// Regex for a single part of the access path +const tokenRegex = /^(\w+)(?:\[([^\]]*)])?$/; + +export type AccessPathDiagnostic = { + range: AccessPathRange; + message: string; +}; + +/** + * Validates an access path and returns any errors. This requires that the path is a valid path + * and does not allow partial access paths. + * + * @param path The access path to validate. + * @returns An array of diagnostics for any errors in the access path. + */ +export function validateAccessPath(path: string): AccessPathDiagnostic[] { + if (path === "") { + return []; + } + + const tokens = parseAccessPathTokens(path); + + return tokens + .map((token): AccessPathDiagnostic | null => { + if (tokenRegex.test(token.text)) { + return null; + } + + let message = "Invalid access path"; + if (token.range.start === token.range.end) { + message = "Unexpected empty token"; + } + + return { + range: token.range, + message, + }; + }) + .filter((token): token is AccessPathDiagnostic => token !== null); +} diff --git a/extensions/ql-vscode/src/model-editor/shared/extension-pack.ts b/extensions/ql-vscode/src/model-editor/shared/extension-pack.ts new file mode 100644 index 00000000000..644be0b340b --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/extension-pack.ts @@ -0,0 +1,11 @@ +export interface ExtensionPack { + path: string; + yamlPath: string; + + name: string; + version: string; + language: string; + + extensionTargets: Record; + dataExtensions: string[]; +} diff --git a/extensions/ql-vscode/src/model-editor/shared/hide-modeled-methods.ts b/extensions/ql-vscode/src/model-editor/shared/hide-modeled-methods.ts new file mode 100644 index 00000000000..62b25950ac2 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/hide-modeled-methods.ts @@ -0,0 +1 @@ +export const INITIAL_HIDE_MODELED_METHODS_VALUE = true; diff --git a/extensions/ql-vscode/src/model-editor/shared/mode.ts b/extensions/ql-vscode/src/model-editor/shared/mode.ts new file mode 100644 index 00000000000..2fe00a25a5f --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/mode.ts @@ -0,0 +1,6 @@ +export enum Mode { + Application = "application", + Framework = "framework", +} + +export const INITIAL_MODE = Mode.Application; diff --git a/extensions/ql-vscode/src/model-editor/shared/model-alerts-filter-sort.ts b/extensions/ql-vscode/src/model-editor/shared/model-alerts-filter-sort.ts new file mode 100644 index 00000000000..d00d67f3287 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/model-alerts-filter-sort.ts @@ -0,0 +1,75 @@ +import type { ModelAlerts } from "../model-alerts/model-alerts"; + +export enum SortKey { + Alphabetically = "alphabetically", + NumberOfResults = "numberOfResults", +} + +export type ModelAlertsFilterSortState = { + modelSearchValue: string; + repositorySearchValue: string; + sortKey: SortKey; +}; + +export const defaultFilterSortState: ModelAlertsFilterSortState = { + modelSearchValue: "", + repositorySearchValue: "", + sortKey: SortKey.NumberOfResults, +}; + +export function filterAndSort( + modelAlerts: ModelAlerts[], + filterSortState: ModelAlertsFilterSortState, +): ModelAlerts[] { + if (!modelAlerts || modelAlerts.length === 0) { + return []; + } + + return modelAlerts + .filter((item) => matchesFilter(item, filterSortState)) + .sort((a, b) => { + switch (filterSortState.sortKey) { + case SortKey.Alphabetically: + return a.model.signature.localeCompare(b.model.signature); + case SortKey.NumberOfResults: + return (b.alerts.length || 0) - (a.alerts.length || 0); + default: + return 0; + } + }); +} + +function matchesFilter( + item: ModelAlerts, + filterSortState: ModelAlertsFilterSortState | undefined, +): boolean { + if (!filterSortState) { + return true; + } + + return ( + matchesRepository(item, filterSortState.repositorySearchValue) && + matchesModel(item, filterSortState.modelSearchValue) + ); +} + +function matchesRepository( + item: ModelAlerts, + repositorySearchValue: string, +): boolean { + // We may want to only return alerts that have a repository match + // but for now just return true if the model has any alerts + // with a matching repo. + + return item.alerts.some((alert) => + alert.repository.fullName + .toLowerCase() + .includes(repositorySearchValue.toLowerCase()), + ); +} + +function matchesModel(item: ModelAlerts, modelSearchValue: string): boolean { + return item.model.signature + .toLowerCase() + .includes(modelSearchValue.toLowerCase()); +} diff --git a/extensions/ql-vscode/src/model-editor/shared/model-evaluation-run-state.ts b/extensions/ql-vscode/src/model-editor/shared/model-evaluation-run-state.ts new file mode 100644 index 00000000000..52087c1a6df --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/model-evaluation-run-state.ts @@ -0,0 +1,19 @@ +import { VariantAnalysisStatus } from "../../variant-analysis/shared/variant-analysis"; +import type { VariantAnalysis } from "../../variant-analysis/shared/variant-analysis"; + +export interface ModelEvaluationRunState { + isPreparing: boolean; + variantAnalysis: VariantAnalysis | undefined; +} + +export function modelEvaluationRunIsRunning( + run: ModelEvaluationRunState, +): boolean { + return ( + run.isPreparing || + !!( + run.variantAnalysis && + run.variantAnalysis.status === VariantAnalysisStatus.InProgress + ) + ); +} diff --git a/extensions/ql-vscode/src/model-editor/shared/modeled-percentage.ts b/extensions/ql-vscode/src/model-editor/shared/modeled-percentage.ts new file mode 100644 index 00000000000..ac209ba23ac --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/modeled-percentage.ts @@ -0,0 +1,11 @@ +import type { Method } from "../method"; + +export function calculateModeledPercentage(methods: readonly Method[]): number { + if (methods.length === 0) { + return 0; + } + const modeledMethods = methods.filter((m) => m.supported); + + const modeledRatio = modeledMethods.length / methods.length; + return modeledRatio * 100; +} diff --git a/extensions/ql-vscode/src/model-editor/shared/modeling-status.ts b/extensions/ql-vscode/src/model-editor/shared/modeling-status.ts new file mode 100644 index 00000000000..109d4837740 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/modeling-status.ts @@ -0,0 +1,17 @@ +import type { ModeledMethod } from "../modeled-method"; + +export type ModelingStatus = "unmodeled" | "unsaved" | "saved"; + +export function getModelingStatus( + modeledMethods: readonly ModeledMethod[], + methodIsUnsaved: boolean, +): ModelingStatus { + if (modeledMethods.length > 0) { + if (methodIsUnsaved) { + return "unsaved"; + } else if (modeledMethods.some((m) => m.type !== "none")) { + return "saved"; + } + } + return "unmodeled"; +} diff --git a/extensions/ql-vscode/src/model-editor/shared/multiple-modeled-methods.ts b/extensions/ql-vscode/src/model-editor/shared/multiple-modeled-methods.ts new file mode 100644 index 00000000000..2f344129067 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/multiple-modeled-methods.ts @@ -0,0 +1,20 @@ +import type { ModeledMethod } from "../modeled-method"; + +export function canAddNewModeledMethod( + modeledMethods: ModeledMethod[], +): boolean { + // Disallow adding methods when there are no modeled methods or where there is a single unmodeled method. + // In both of these cases the UI will already be showing the user inputs they can use for modeling. + return ( + modeledMethods.length > 1 || + (modeledMethods.length === 1 && modeledMethods[0].type !== "none") + ); +} + +export function canRemoveModeledMethod( + modeledMethods: ModeledMethod[], +): boolean { + // Don't allow removing the last modeled method. In this case the user is intended to + // set the type to "none" instead. + return modeledMethods.length > 1; +} diff --git a/extensions/ql-vscode/src/model-editor/shared/sorting.ts b/extensions/ql-vscode/src/model-editor/shared/sorting.ts new file mode 100644 index 00000000000..fb6614ba199 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/sorting.ts @@ -0,0 +1,139 @@ +import { canMethodBeModeled } from "../method"; +import type { Method } from "../method"; +import type { ModeledMethod } from "../modeled-method"; +import { Mode } from "./mode"; +import { calculateModeledPercentage } from "./modeled-percentage"; + +/** + * Groups methods by library or package name. + * Does not change the order of methods within a group. + */ +export function groupMethods( + methods: readonly Method[], + mode: Mode, +): Record { + const groupedByLibrary: Record = {}; + + for (const method of methods) { + // Group by package if using framework mode + const key = mode === Mode.Framework ? method.packageName : method.library; + + groupedByLibrary[key] ??= []; + groupedByLibrary[key].push(method); + } + + return groupedByLibrary; +} + +export function sortGroupNames( + methods: Record, +): string[] { + return Object.keys(methods).sort((a, b) => + compareGroups(methods[a], a, methods[b], b), + ); +} + +/** + * Primarily sorts methods into the following order: + * - Unsaved positive AutoModel predictions + * - Negative AutoModel predictions + * - Unsaved manual models + unmodeled methods + * - Saved models from this model pack (AutoModel and manual) + * - Methods not modelable in this model pack + * + * Secondary sort order is by number of usages descending, then by method signature ascending. + */ +export function sortMethods( + methods: readonly Method[], + modeledMethodsMap: Record, + modifiedSignatures: ReadonlySet, +): Method[] { + const sortedMethods = [...methods]; + sortedMethods.sort((a, b) => { + // First sort by the type of method + const methodAPrimarySortOrdinal = getMethodPrimarySortOrdinal( + a, + modeledMethodsMap[a.signature] ?? [], + modifiedSignatures.has(a.signature), + ); + const methodBPrimarySortOrdinal = getMethodPrimarySortOrdinal( + b, + modeledMethodsMap[b.signature] ?? [], + modifiedSignatures.has(b.signature), + ); + if (methodAPrimarySortOrdinal !== methodBPrimarySortOrdinal) { + return methodAPrimarySortOrdinal - methodBPrimarySortOrdinal; + } + + // Then sort by number of usages descending + const usageDifference = b.usages.length - a.usages.length; + if (usageDifference !== 0) { + return usageDifference; + } + + // Then sort by method signature ascending + return a.signature.localeCompare(b.signature); + }); + return sortedMethods; +} + +/** + * Assigns numbers to the following classes of methods: + * - Unsaved manual models + unmodeled methods => 0 + * - Saved models from this model pack (AutoModel and manual) => 1 + * - Methods not modelable in this model pack => 2 + */ +function getMethodPrimarySortOrdinal( + method: Method, + modeledMethods: readonly ModeledMethod[], + isUnsaved: boolean, +): number { + const canBeModeled = canMethodBeModeled(method, modeledMethods, isUnsaved); + const isModeled = modeledMethods.length > 0; + if (canBeModeled) { + if ((isModeled && isUnsaved) || !isModeled) { + return 0; + } else { + return 1; + } + } else { + return 2; + } +} + +function compareGroups( + a: readonly Method[], + aName: string, + b: readonly Method[], + bName: string, +): number { + const supportedPercentageA = calculateModeledPercentage(a); + const supportedPercentageB = calculateModeledPercentage(b); + + // Sort first by supported percentage ascending + if (supportedPercentageA > supportedPercentageB) { + return 1; + } + if (supportedPercentageA < supportedPercentageB) { + return -1; + } + + const numberOfUsagesA = a.reduce((acc, curr) => acc + curr.usages.length, 0); + const numberOfUsagesB = b.reduce((acc, curr) => acc + curr.usages.length, 0); + + // If the number of usages is equal, sort by number of methods descending + if (numberOfUsagesA === numberOfUsagesB) { + const numberOfMethodsA = a.length; + const numberOfMethodsB = b.length; + + // If the number of methods is equal, sort by library name ascending + if (numberOfMethodsA === numberOfMethodsB) { + return aName.localeCompare(bName); + } + + return numberOfMethodsB - numberOfMethodsA; + } + + // Then sort by number of usages descending + return numberOfUsagesB - numberOfUsagesA; +} diff --git a/extensions/ql-vscode/src/model-editor/shared/validation.ts b/extensions/ql-vscode/src/model-editor/shared/validation.ts new file mode 100644 index 00000000000..eb00f4135f2 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/validation.ts @@ -0,0 +1,82 @@ +import { createModeledMethodKey } from "../modeled-method"; +import type { ModeledMethod, NeutralModeledMethod } from "../modeled-method"; + +export type ModeledMethodValidationError = { + title: string; + message: string; + actionText: string; + index: number; +}; + +export function validateModeledMethods( + modeledMethods: ModeledMethod[], +): ModeledMethodValidationError[] { + // Anything that is not modeled will not be saved, so we don't need to validate it + const consideredModeledMethods = modeledMethods.filter( + (modeledMethod) => modeledMethod.type !== "none", + ); + + const result: ModeledMethodValidationError[] = []; + + // If the same model is present multiple times, only the first one makes sense, so we should give + // an error for any duplicates. + const seenModeledMethods = new Set(); + for (const modeledMethod of consideredModeledMethods) { + const key = createModeledMethodKey(modeledMethod); + + if (seenModeledMethods.has(key)) { + result.push({ + title: "Duplicated classification", + message: + "This method has two identical or conflicting classifications.", + actionText: "Modify or remove the duplicated classification.", + index: modeledMethods.indexOf(modeledMethod), + }); + } else { + seenModeledMethods.add(key); + } + } + + const neutralModeledMethods = consideredModeledMethods.filter( + (modeledMethod): modeledMethod is NeutralModeledMethod => + modeledMethod.type === "neutral", + ); + + const neutralModeledMethodsByKind = new Map(); + for (const neutralModeledMethod of neutralModeledMethods) { + if (!neutralModeledMethodsByKind.has(neutralModeledMethod.kind)) { + neutralModeledMethodsByKind.set(neutralModeledMethod.kind, []); + } + + neutralModeledMethodsByKind + .get(neutralModeledMethod.kind) + ?.push(neutralModeledMethod); + } + + for (const [ + neutralModeledMethodKind, + neutralModeledMethods, + ] of neutralModeledMethodsByKind) { + const conflictingMethods = consideredModeledMethods.filter( + (method) => neutralModeledMethodKind === method.type, + ); + + if (conflictingMethods.length < 1) { + continue; + } + + result.push({ + title: "Conflicting classification", + message: `This method has a neutral ${neutralModeledMethodKind} classification, which conflicts with other ${neutralModeledMethodKind} classifications.`, + actionText: "Modify or remove the neutral classification.", + // Another validation will validate that only one neutral method is present, so we only need + // to return an error for the first one + index: modeledMethods.indexOf(neutralModeledMethods[0]), + }); + } + + // Sort by index so that the errors are always in the same order + result.sort((a, b) => a.index - b.index); + + return result; +} diff --git a/extensions/ql-vscode/src/model-editor/shared/view-state.ts b/extensions/ql-vscode/src/model-editor/shared/view-state.ts new file mode 100644 index 00000000000..658909dbc04 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/shared/view-state.ts @@ -0,0 +1,24 @@ +import type { ExtensionPack } from "./extension-pack"; +import type { Mode } from "./mode"; +import type { QueryLanguage } from "../../common/query-language"; +import type { ModelConfig } from "../languages"; + +export interface ModelEditorViewState { + extensionPack: ExtensionPack; + language: QueryLanguage; + showGenerateButton: boolean; + showEvaluationUi: boolean; + mode: Mode; + showModeSwitchButton: boolean; + sourceArchiveAvailable: boolean; + modelConfig: ModelConfig; +} + +export interface MethodModelingPanelViewState { + language: QueryLanguage | undefined; + modelConfig: ModelConfig; +} + +export interface ModelAlertsViewState { + title: string; +} diff --git a/extensions/ql-vscode/src/model-editor/suggestion-queries.ts b/extensions/ql-vscode/src/model-editor/suggestion-queries.ts new file mode 100644 index 00000000000..f325fc2a4d5 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/suggestion-queries.ts @@ -0,0 +1,186 @@ +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { Mode } from "./shared/mode"; +import type { QueryConstraints } from "../local-queries"; +import { resolveQueriesFromPacks } from "../local-queries"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import type { NotificationLogger } from "../common/logging"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import { telemetryListener } from "../common/vscode/telemetry"; +import { redactableError } from "../common/errors"; +import { runQuery } from "../local-queries/run-query"; +import type { QueryRunner } from "../query-server"; +import type { DatabaseItem } from "../databases/local-databases"; +import type { ProgressCallback } from "../common/vscode/progress"; +import type { CancellationToken } from "vscode"; +import type { DecodedBqrsChunk } from "../common/bqrs-cli-types"; +import type { + AccessPathSuggestionRow, + AccessPathSuggestionRows, +} from "./suggestions"; + +type RunQueryOptions = { + parseResults: ( + results: DecodedBqrsChunk, + ) => AccessPathSuggestionRow[] | Promise; + queryConstraints: QueryConstraints; + + cliServer: CodeQLCliServer; + queryRunner: QueryRunner; + logger: NotificationLogger; + databaseItem: DatabaseItem; + queryStorageDir: string; + + progress: ProgressCallback; + token: CancellationToken; +}; + +const maxStep = 2000; + +export async function runSuggestionsQuery( + mode: Mode, + { + parseResults, + queryConstraints, + cliServer, + queryRunner, + logger, + databaseItem, + queryStorageDir, + progress, + token, + }: RunQueryOptions, +): Promise { + progress({ + message: "Resolving QL packs", + step: 1, + maxStep, + }); + const additionalPacks = getOnDiskWorkspaceFolders(); + const extensionPacks = Object.keys( + await cliServer.resolveQlpacks(additionalPacks, true), + ); + + progress({ + message: "Resolving query", + step: 2, + maxStep, + }); + + const queryPath = await resolveSuggestionsQuery( + cliServer, + databaseItem.language, + mode, + queryConstraints, + ); + if (!queryPath) { + void showAndLogExceptionWithTelemetry( + logger, + telemetryListener, + redactableError`The ${mode} access path suggestions query could not be found. Try re-opening the model editor. If that doesn't work, try upgrading the CodeQL libraries.`, + ); + return undefined; + } + + // Run the actual query + const completedQuery = await runQuery({ + queryRunner, + databaseItem, + queryPath, + queryStorageDir, + additionalPacks, + extensionPacks, + progress: (update) => + progress({ + step: update.step + 500, + maxStep, + message: update.message, + }), + token, + }); + + if (!completedQuery) { + return undefined; + } + + // Read the results and convert to internal representation + progress({ + message: "Decoding results", + step: 1600, + maxStep, + }); + + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but got ${queryResults.length}`, + ); + } + const bqrs = await cliServer.bqrsDecodeAll( + completedQuery.outputDir.getBqrsPath(queryResults[0].outputBaseName), + ); + + progress({ + message: "Finalizing results", + step: 1950, + maxStep, + }); + + const inputChunk = bqrs["input"]; + const outputChunk = bqrs["output"]; + + if (!inputChunk && !outputChunk) { + void logger.log( + `No results found for ${mode} access path suggestions query`, + ); + return undefined; + } + + const inputSuggestions = inputChunk ? await parseResults(inputChunk) : []; + const outputSuggestions = outputChunk ? await parseResults(outputChunk) : []; + + return { + input: inputSuggestions, + output: outputSuggestions, + }; +} + +/** + * Resolve the query path to the model editor access path suggestions query. All queries are tagged like this: + * modeleditor access-path-suggestions + * Example: modeleditor access-path-suggestions framework-mode + * + * @param cliServer The CodeQL CLI server to use. + * @param language The language of the query pack to use. + * @param mode The mode to resolve the query for. + * @param queryConstraints Constraints to apply to the query. + * @param additionalPackNames Additional pack names to search. + * @param additionalPackPaths Additional pack paths to search. + */ +async function resolveSuggestionsQuery( + cliServer: CodeQLCliServer, + language: string, + mode: Mode, + queryConstraints: QueryConstraints, + additionalPackNames: string[] = [], + additionalPackPaths: string[] = [], +): Promise { + const packsToSearch = [`codeql/${language}-queries`, ...additionalPackNames]; + + const queries = await resolveQueriesFromPacks( + cliServer, + packsToSearch, + queryConstraints, + additionalPackPaths, + ); + if (queries.length > 1) { + throw new Error( + `Found multiple suggestions queries for ${mode}. Can't continue`, + ); + } + + if (queries.length === 0) { + return undefined; + } + + return queries[0]; +} diff --git a/extensions/ql-vscode/src/model-editor/suggestions-bqrs.ts b/extensions/ql-vscode/src/model-editor/suggestions-bqrs.ts new file mode 100644 index 00000000000..56ab0d973a5 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/suggestions-bqrs.ts @@ -0,0 +1,198 @@ +import { parseAccessPathTokens } from "./shared/access-paths"; +import type { AccessPathOption, AccessPathSuggestionRow } from "./suggestions"; +import { AccessPathSuggestionDefinitionType } from "./suggestions"; + +const CodiconSymbols: Record = { + [AccessPathSuggestionDefinitionType.Array]: "symbol-array", + [AccessPathSuggestionDefinitionType.Class]: "symbol-class", + [AccessPathSuggestionDefinitionType.Enum]: "symbol-enum", + [AccessPathSuggestionDefinitionType.EnumMember]: "symbol-enum-member", + [AccessPathSuggestionDefinitionType.Field]: "symbol-field", + [AccessPathSuggestionDefinitionType.Interface]: "symbol-interface", + [AccessPathSuggestionDefinitionType.Key]: "symbol-key", + [AccessPathSuggestionDefinitionType.Method]: "symbol-method", + [AccessPathSuggestionDefinitionType.Misc]: "symbol-misc", + [AccessPathSuggestionDefinitionType.Namespace]: "symbol-namespace", + [AccessPathSuggestionDefinitionType.Parameter]: "symbol-parameter", + [AccessPathSuggestionDefinitionType.Property]: "symbol-property", + [AccessPathSuggestionDefinitionType.Structure]: "symbol-structure", + [AccessPathSuggestionDefinitionType.Return]: "symbol-method", + [AccessPathSuggestionDefinitionType.Variable]: "symbol-variable", +}; + +/** + * Parses the query results from a parsed array of rows to a list of options per method signature. + * + * @param rows The parsed rows from the BQRS chunk + * @return A map from method signature -> options + */ +export function parseAccessPathSuggestionRowsToOptions( + rows: AccessPathSuggestionRow[], +): Record { + const rowsByMethodSignature = new Map(); + + for (const row of rows) { + if (!rowsByMethodSignature.has(row.method.signature)) { + rowsByMethodSignature.set(row.method.signature, []); + } + + const tuplesForMethodSignature = rowsByMethodSignature.get( + row.method.signature, + ); + if (!tuplesForMethodSignature) { + throw new Error("Expected the map to have a value for method signature"); + } + + tuplesForMethodSignature.push(row); + } + + const result: Record = {}; + + for (const [methodSignature, tuples] of rowsByMethodSignature) { + result[methodSignature] = parseQueryResultsForPath(tuples); + } + + return result; +} + +function parseQueryResultsForPath( + rows: AccessPathSuggestionRow[], +): AccessPathOption[] { + const optionsByParentPath = new Map(); + + for (const { value, details, definitionType } of rows) { + const tokens = parseAccessPathTokens(value); + const lastToken = tokens[tokens.length - 1]; + + const parentPath = tokens + .slice(0, tokens.length - 1) + .map((token) => token.text) + .join("."); + + const option: AccessPathOption = { + label: lastToken.text, + value, + details, + icon: CodiconSymbols[definitionType], + followup: [], + }; + + if (!optionsByParentPath.has(parentPath)) { + optionsByParentPath.set(parentPath, []); + } + + const options = optionsByParentPath.get(parentPath); + if (!options) { + throw new Error( + "Expected optionsByParentPath to have a value for parentPath", + ); + } + + options.push(option); + } + + for (const options of optionsByParentPath.values()) { + options.sort(compareOptions); + } + + for (const options of optionsByParentPath.values()) { + for (const option of options) { + const followup = optionsByParentPath.get(option.value); + if (followup) { + option.followup = followup; + } + } + } + + const rootOptions = optionsByParentPath.get(""); + if (!rootOptions) { + throw new Error("Expected optionsByParentPath to have a value for ''"); + } + + return rootOptions; +} + +/** + * Compares two options based on a set of predefined rules. + * + * The rules are as follows: + * - Argument[self] is always first + * - Positional arguments (Argument[0], Argument[1], etc.) are sorted in order and are after Argument[self] + * - Keyword arguments (Argument[key:], etc.) are sorted by name and are after the positional arguments + * - Block arguments (Argument[block]) are sorted after keyword arguments + * - Hash splat arguments (Argument[hash-splat]) are sorted after block arguments + * - Parameters (Parameter[0], Parameter[1], etc.) are sorted after and in-order + * - All other values are sorted alphabetically after parameters + * + * @param {Option} a - The first option to compare. + * @param {Option} b - The second option to compare. + * @returns {number} - Returns -1 if a < b, 1 if a > b, 0 if a = b. + */ +function compareOptions(a: AccessPathOption, b: AccessPathOption): number { + const positionalArgRegex = /^Argument\[\d+]$/; + const keywordArgRegex = /^Argument\[[^\d:]+:]$/; + const parameterRegex = /^Parameter\[\d+]$/; + + // Check for Argument[self] + if (a.label === "Argument[self]" && b.label !== "Argument[self]") { + return -1; + } else if (b.label === "Argument[self]" && a.label !== "Argument[self]") { + return 1; + } + + // Check for positional arguments + const aIsPositional = positionalArgRegex.test(a.label); + const bIsPositional = positionalArgRegex.test(b.label); + if (aIsPositional && bIsPositional) { + return a.label.localeCompare(b.label, "en-US", { numeric: true }); + } else if (aIsPositional) { + return -1; + } else if (bIsPositional) { + return 1; + } + + // Check for keyword arguments + const aIsKeyword = keywordArgRegex.test(a.label); + const bIsKeyword = keywordArgRegex.test(b.label); + if (aIsKeyword && bIsKeyword) { + return a.label.localeCompare(b.label, "en-US"); + } else if (aIsKeyword) { + return -1; + } else if (bIsKeyword) { + return 1; + } + + // Check for Argument[block] + if (a.label === "Argument[block]" && b.label !== "Argument[block]") { + return -1; + } else if (b.label === "Argument[block]" && a.label !== "Argument[block]") { + return 1; + } + + // Check for Argument[hash-splat] + if ( + a.label === "Argument[hash-splat]" && + b.label !== "Argument[hash-splat]" + ) { + return -1; + } else if ( + b.label === "Argument[hash-splat]" && + a.label !== "Argument[hash-splat]" + ) { + return 1; + } + + // Check for parameters + const aIsParameter = parameterRegex.test(a.label); + const bIsParameter = parameterRegex.test(b.label); + if (aIsParameter && bIsParameter) { + return a.label.localeCompare(b.label, "en-US", { numeric: true }); + } else if (aIsParameter) { + return -1; + } else if (bIsParameter) { + return 1; + } + + // If none of the above rules apply, compare alphabetically + return a.label.localeCompare(b.label, "en-US"); +} diff --git a/extensions/ql-vscode/src/model-editor/suggestions.ts b/extensions/ql-vscode/src/model-editor/suggestions.ts new file mode 100644 index 00000000000..9b1e334e941 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/suggestions.ts @@ -0,0 +1,52 @@ +import type { MethodSignature } from "./method"; + +export enum AccessPathSuggestionDefinitionType { + Array = "array", + Class = "class", + Enum = "enum", + EnumMember = "enum-member", + Field = "field", + Interface = "interface", + Key = "key", + Method = "method", + Misc = "misc", + Namespace = "namespace", + Parameter = "parameter", + Property = "property", + Structure = "structure", + Return = "return", + Variable = "variable", +} + +export type AccessPathSuggestionRow = { + method: MethodSignature; + definitionType: AccessPathSuggestionDefinitionType; + value: string; + details: string; +}; + +export type AccessPathSuggestionRows = { + input: AccessPathSuggestionRow[]; + output: AccessPathSuggestionRow[]; +}; + +export type AccessPathOption = { + label: string; + value: string; + icon: string; + details?: string; + followup?: AccessPathOption[]; +}; + +export type AccessPathSuggestionOptions = { + input: Record; + output: Record; +}; + +export function isDefinitionType( + value: string, +): value is AccessPathSuggestionDefinitionType { + return Object.values(AccessPathSuggestionDefinitionType).includes( + value as AccessPathSuggestionDefinitionType, + ); +} diff --git a/extensions/ql-vscode/src/model-editor/supported-languages.ts b/extensions/ql-vscode/src/model-editor/supported-languages.ts new file mode 100644 index 00000000000..744c311a994 --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/supported-languages.ts @@ -0,0 +1,24 @@ +import { QueryLanguage } from "../common/query-language"; +import type { ModelConfig } from "../config"; + +/** + * Languages that are always supported by the model editor. These languages + * do not require a separate config setting to enable them. + */ +export const SUPPORTED_LANGUAGES: QueryLanguage[] = [ + QueryLanguage.Java, + QueryLanguage.CSharp, + QueryLanguage.Ruby, + QueryLanguage.Python, +]; + +export function isSupportedLanguage( + language: QueryLanguage, + _modelConfig: ModelConfig, +) { + if (SUPPORTED_LANGUAGES.includes(language)) { + return true; + } + + return false; +} diff --git a/extensions/ql-vscode/src/model-editor/yaml.ts b/extensions/ql-vscode/src/model-editor/yaml.ts new file mode 100644 index 00000000000..89b275b555b --- /dev/null +++ b/extensions/ql-vscode/src/model-editor/yaml.ts @@ -0,0 +1,385 @@ +import Ajv from "ajv"; + +import type { Method } from "./method"; +import type { + ModeledMethod, + NeutralModeledMethod, + SinkModeledMethod, + SourceModeledMethod, + SummaryModeledMethod, + TypeModeledMethod, +} from "./modeled-method"; +import type { + ModelsAsDataLanguagePredicate, + ModelsAsDataLanguagePredicates, +} from "./languages"; +import { getModelsAsDataLanguage } from "./languages"; +import { Mode } from "./shared/mode"; +import { assertNever } from "../common/helpers-pure"; +import type { + ModelExtension, + ModelExtensionFile, +} from "./model-extension-file"; +import { createFilenameFromString } from "../common/filenames"; +import type { QueryLanguage } from "../common/query-language"; + +import modelExtensionFileSchema from "./model-extension-file.schema.json"; + +const ajv = new Ajv({ allErrors: true, allowUnionTypes: true }); +const modelExtensionFileSchemaValidate = ajv.compile(modelExtensionFileSchema); + +function createExtensions( + language: QueryLanguage, + methods: readonly T[], + definition: ModelsAsDataLanguagePredicate | undefined, +): ModelExtension | undefined { + if (!definition) { + return undefined; + } + + return { + addsTo: { + pack: `codeql/${language}-all`, + extensible: definition.extensiblePredicate, + }, + data: methods.map((method) => definition.generateMethodDefinition(method)), + }; +} + +export function createDataExtensionYaml( + language: QueryLanguage, + modeledMethods: readonly ModeledMethod[], +) { + const modelsAsDataLanguage = getModelsAsDataLanguage(language); + + const methodsByType = { + source: [] as SourceModeledMethod[], + sink: [] as SinkModeledMethod[], + summary: [] as SummaryModeledMethod[], + neutral: [] as NeutralModeledMethod[], + type: [] as TypeModeledMethod[], + } satisfies Record; + + for (const modeledMethod of modeledMethods) { + if (!modeledMethod?.type || modeledMethod.type === "none") { + continue; + } + + switch (modeledMethod.type) { + case "source": + methodsByType.source.push(modeledMethod); + break; + case "sink": + methodsByType.sink.push(modeledMethod); + break; + case "summary": + methodsByType.summary.push(modeledMethod); + break; + case "neutral": + methodsByType.neutral.push(modeledMethod); + break; + case "type": + methodsByType.type.push(modeledMethod); + break; + default: + assertNever(modeledMethod); + } + } + + const extensions = Object.keys(methodsByType) + .map((typeKey): ModelExtension | undefined => { + const type = typeKey as keyof ModelsAsDataLanguagePredicates; + + switch (type) { + case "source": + return createExtensions( + language, + methodsByType.source, + modelsAsDataLanguage.predicates.source, + ); + case "sink": + return createExtensions( + language, + methodsByType.sink, + modelsAsDataLanguage.predicates.sink, + ); + case "summary": + return createExtensions( + language, + methodsByType.summary, + modelsAsDataLanguage.predicates.summary, + ); + case "neutral": + return createExtensions( + language, + methodsByType.neutral, + modelsAsDataLanguage.predicates.neutral, + ); + case "type": + return createExtensions( + language, + methodsByType.type, + modelsAsDataLanguage.predicates.type, + ); + default: + assertNever(type); + } + }) + .filter( + (extension): extension is ModelExtension => extension !== undefined, + ); + + return modelExtensionFileToYaml({ extensions }); +} + +export function createDataExtensionYamls( + language: QueryLanguage, + methods: readonly Method[], + newModeledMethods: Readonly>, + existingModeledMethods: Readonly< + Record> + >, + mode: Mode, +) { + switch (mode) { + case Mode.Application: + return createDataExtensionYamlsForApplicationMode( + language, + methods, + newModeledMethods, + existingModeledMethods, + ); + case Mode.Framework: + return createDataExtensionYamlsForFrameworkMode( + language, + methods, + newModeledMethods, + existingModeledMethods, + ); + default: + assertNever(mode); + } +} + +function createDataExtensionYamlsByGrouping( + language: QueryLanguage, + methods: readonly Method[], + newModeledMethods: Readonly>, + existingModeledMethods: Readonly< + Record> + >, + createFilename: (method: Method) => string, +): Record { + const actualFilenameByCanonicalFilename: Record = {}; + + const methodsByCanonicalFilename: Record< + string, + Record + > = {}; + + // We only want to generate a yaml file when it's a known external API usage + // and there are new modeled methods for it. This avoids us overwriting other + // files that may contain data we don't know about. + for (const method of methods) { + if (method.signature in newModeledMethods) { + const filename = createFilename(method); + const canonicalFilename = canonicalizeFilename(filename); + + methodsByCanonicalFilename[canonicalFilename] = {}; + actualFilenameByCanonicalFilename[canonicalFilename] = filename; + } + } + + // First populate methodsByFilename with any existing modeled methods. + for (const [filename, methodsBySignature] of Object.entries( + existingModeledMethods, + )) { + const canonicalFilename = canonicalizeFilename(filename); + + if (canonicalFilename in methodsByCanonicalFilename) { + for (const [signature, methods] of Object.entries(methodsBySignature)) { + methodsByCanonicalFilename[canonicalFilename][signature] = [...methods]; + } + + // Ensure that if a file exists on disk, we use the same capitalization + // as the original file. + actualFilenameByCanonicalFilename[canonicalFilename] = filename; + } + } + + // Add the new modeled methods, potentially overwriting existing modeled methods + // but not removing existing modeled methods that are not in the new set. + for (const method of methods) { + const newMethods = newModeledMethods[method.signature]; + if (newMethods) { + const filename = createFilename(method); + const canonicalFilename = canonicalizeFilename(filename); + + // Override any existing modeled methods with the new ones. + methodsByCanonicalFilename[canonicalFilename][method.signature] = [ + ...newMethods, + ]; + } + } + + const result: Record = {}; + + for (const [canonicalFilename, methods] of Object.entries( + methodsByCanonicalFilename, + )) { + result[actualFilenameByCanonicalFilename[canonicalFilename]] = + createDataExtensionYaml( + language, + Object.values(methods).flatMap((methods) => methods), + ); + } + + return result; +} + +export function createDataExtensionYamlsForApplicationMode( + language: QueryLanguage, + methods: readonly Method[], + newModeledMethods: Readonly>, + existingModeledMethods: Readonly< + Record> + >, +): Record { + return createDataExtensionYamlsByGrouping( + language, + methods, + newModeledMethods, + existingModeledMethods, + (method) => createFilenameForLibrary(method.library), + ); +} + +export function createDataExtensionYamlsForFrameworkMode( + language: QueryLanguage, + methods: readonly Method[], + newModeledMethods: Readonly>, + existingModeledMethods: Readonly< + Record> + >, +): Record { + return createDataExtensionYamlsByGrouping( + language, + methods, + newModeledMethods, + existingModeledMethods, + (method) => createFilenameForPackage(method.packageName), + ); +} + +export function createFilenameForLibrary( + library: string, + prefix = "models/", + suffix = ".model", +) { + return `${prefix}${createFilenameFromString(library)}${suffix}.yml`; +} + +export function createFilenameForPackage( + packageName: string, + prefix = "models/", + suffix = ".model", +) { + // A package name is e.g. `com.google.common.io` or `System.Net.Http.Headers` + // We want to place these into `models/com.google.common.io.model.yml` and + // `models/System.Net.Http.Headers.model.yml` respectively. + return `${prefix}${packageName}${suffix}.yml`; +} + +function canonicalizeFilename(filename: string) { + // We want to canonicalize filenames so that they are always in the same format + // for comparison purposes. This is important because we want to avoid overwriting + // data extension YAML files on case-insensitive file systems. + return filename.toLowerCase(); +} + +function validateModelExtensionFile(data: unknown): data is ModelExtensionFile { + modelExtensionFileSchemaValidate(data); + + if (modelExtensionFileSchemaValidate.errors) { + throw new Error( + `Invalid data extension YAML: ${modelExtensionFileSchemaValidate.errors + .map((error) => `${error.instancePath} ${error.message}`) + .join(", ")}`, + ); + } + + return true; +} + +/** + * Creates a string for the data extension YAML file from the + * structure of the data extension file. This should be used + * instead of creating a JSON string directly or dumping the + * YAML directly to ensure that the file is formatted correctly. + * + * @param data The data extension file + */ +export function modelExtensionFileToYaml(data: ModelExtensionFile) { + const extensions = data.extensions + .map((extension) => { + const data = + extension.data.length === 0 + ? " []" + : `\n${extension.data + .map((row) => ` - ${JSON.stringify(row)}`) + .join("\n")}`; + + return ` - addsTo: + pack: ${extension.addsTo.pack} + extensible: ${extension.addsTo.extensible} + data:${data} +`; + }) + .filter((extensions) => extensions !== ""); + + return `extensions: +${extensions.join("\n")}`; +} + +export function loadDataExtensionYaml( + data: unknown, + language: QueryLanguage, +): Record | undefined { + if (!validateModelExtensionFile(data)) { + return undefined; + } + + const modelsAsDataLanguage = getModelsAsDataLanguage(language); + + const extensions = data.extensions; + + const modeledMethods: Record = {}; + + for (const extension of extensions) { + const addsTo = extension.addsTo; + const extensible = addsTo.extensible; + const data = extension.data; + + const definition = Object.values(modelsAsDataLanguage.predicates).find( + (definition) => definition.extensiblePredicate === extensible, + ); + if (!definition) { + continue; + } + + for (const row of data) { + const modeledMethod: ModeledMethod = definition.readModeledMethod(row); + if (!modeledMethod) { + continue; + } + + if (!(modeledMethod.signature in modeledMethods)) { + modeledMethods[modeledMethod.signature] = []; + } + + modeledMethods[modeledMethod.signature].push(modeledMethod); + } + } + + return modeledMethods; +} diff --git a/extensions/ql-vscode/src/packages/commands/CommandManager.ts b/extensions/ql-vscode/src/packages/commands/CommandManager.ts new file mode 100644 index 00000000000..70afdceae0e --- /dev/null +++ b/extensions/ql-vscode/src/packages/commands/CommandManager.ts @@ -0,0 +1,69 @@ +/** + * Contains a generic implementation of typed commands. + * + * This allows different parts of the extension to register commands with a certain type, + * and then allow other parts to call those commands in a well-typed manner. + */ + +import type { Disposable } from "./Disposable"; + +/** + * A command function is a completely untyped command. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type CommandFunction = (...args: any[]) => Promise; + +/** + * The command manager basically takes a single input, the type + * of all the known commands. The second parameter is provided by + * default (and should not be needed by the caller) it is a + * technicality to allow the type system to look up commands. + */ +export class CommandManager< + Commands extends Record, + CommandName extends keyof Commands & string = keyof Commands & string, +> implements Disposable +{ + private commands: Disposable[] = []; + + constructor( + private readonly commandRegister: ( + commandName: T, + fn: NonNullable, + ) => Disposable, + private readonly commandExecute: ( + commandName: T, + ...args: Parameters + ) => Promise>>, + ) {} + + /** + * Register a command with the specified name and implementation. + */ + register( + commandName: T, + definition: NonNullable, + ): void { + this.commands.push(this.commandRegister(commandName, definition)); + } + + /** + * Execute a command with the specified name and the provided arguments. + */ + execute( + commandName: T, + ...args: Parameters + ): Promise>> { + return this.commandExecute(commandName, ...args); + } + + /** + * Dispose the manager, disposing all the registered commands. + */ + dispose(): void { + this.commands.forEach((cmd) => { + cmd.dispose(); + }); + this.commands = []; + } +} diff --git a/extensions/ql-vscode/src/packages/commands/Disposable.ts b/extensions/ql-vscode/src/packages/commands/Disposable.ts new file mode 100644 index 00000000000..3a6dd5c1774 --- /dev/null +++ b/extensions/ql-vscode/src/packages/commands/Disposable.ts @@ -0,0 +1,7 @@ +/** + * This interface mirrors the vscode.Disaposable class, so that + * the command manager does not depend on vscode directly. + */ +export interface Disposable { + dispose(): void; +} diff --git a/extensions/ql-vscode/src/packages/commands/index.ts b/extensions/ql-vscode/src/packages/commands/index.ts new file mode 100644 index 00000000000..9aefe1cfdef --- /dev/null +++ b/extensions/ql-vscode/src/packages/commands/index.ts @@ -0,0 +1 @@ +export * from "./CommandManager"; diff --git a/extensions/ql-vscode/src/packaging.ts b/extensions/ql-vscode/src/packaging.ts deleted file mode 100644 index 201f0a86015..00000000000 --- a/extensions/ql-vscode/src/packaging.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { CliVersionConstraint, CodeQLCliServer } from './cli'; -import { - getOnDiskWorkspaceFolders, - showAndLogErrorMessage, - showAndLogInformationMessage, -} from './helpers'; -import { QuickPickItem, window } from 'vscode'; -import { ProgressCallback, UserCancellationException } from './commandRunner'; -import { logger } from './logging'; - -const QUERY_PACKS = [ - 'codeql/cpp-queries', - 'codeql/csharp-queries', - 'codeql/go-queries', - 'codeql/java-queries', - 'codeql/javascript-queries', - 'codeql/python-queries', - 'codeql/ruby-queries', - 'codeql/csharp-solorigate-queries', - 'codeql/javascript-experimental-atm-queries', -]; - -/** - * Prompts user to choose packs to download, and downloads them. - * - * @param cliServer The CLI server. - * @param progress A progress callback. - */ -export async function handleDownloadPacks( - cliServer: CodeQLCliServer, - progress: ProgressCallback, -): Promise { - if (!(await cliServer.cliConstraints.supportsPackaging())) { - throw new Error(`Packaging commands are not supported by this version of CodeQL. Please upgrade to v${CliVersionConstraint.CLI_VERSION_WITH_PACKAGING - } or later.`); - } - progress({ - message: 'Choose packs to download', - step: 1, - maxStep: 2, - }); - let packsToDownload: string[] = []; - const queryPackOption = 'Download all core query packs'; - const customPackOption = 'Download custom specified pack'; - const quickpick = await window.showQuickPick( - [queryPackOption, customPackOption], - { ignoreFocusOut: true } - ); - if (quickpick === queryPackOption) { - packsToDownload = QUERY_PACKS; - } else if (quickpick === customPackOption) { - const customPack = await window.showInputBox({ - prompt: - 'Enter the of the pack to download', - ignoreFocusOut: true, - }); - if (customPack) { - packsToDownload.push(customPack); - } else { - throw new UserCancellationException('No pack specified.'); - } - } - if (packsToDownload?.length > 0) { - progress({ - message: 'Downloading packs. This may take a few minutes.', - step: 2, - maxStep: 2, - }); - try { - await cliServer.packDownload(packsToDownload); - void showAndLogInformationMessage('Finished downloading packs.'); - } catch (error) { - void showAndLogErrorMessage( - 'Unable to download all packs. See log for more details.' - ); - } - } -} - -interface QLPackQuickPickItem extends QuickPickItem { - packRootDir: string[]; -} - -/** - * Prompts user to choose packs to install, and installs them. - * - * @param cliServer The CLI server. - * @param progress A progress callback. - */ -export async function handleInstallPackDependencies( - cliServer: CodeQLCliServer, - progress: ProgressCallback, -): Promise { - if (!(await cliServer.cliConstraints.supportsPackaging())) { - throw new Error(`Packaging commands are not supported by this version of CodeQL. Please upgrade to v${CliVersionConstraint.CLI_VERSION_WITH_PACKAGING - } or later.`); - } - progress({ - message: 'Choose packs to install dependencies for', - step: 1, - maxStep: 2, - }); - const workspacePacks = await cliServer.resolveQlpacks(getOnDiskWorkspaceFolders()); - const quickPickItems = Object.entries(workspacePacks).map(([key, value]) => ({ - label: key, - packRootDir: value, - })); - const packsToInstall = await window.showQuickPick(quickPickItems, { - placeHolder: 'Select packs to install dependencies for', - canPickMany: true, - ignoreFocusOut: true, - }); - const numberOfPacks = packsToInstall?.length || 0; - if (packsToInstall && numberOfPacks > 0) { - const failedPacks = []; - const errors = []; - // Start at 1 because we already have the first step - let count = 1; - for (const pack of packsToInstall) { - count++; - progress({ - message: `Installing dependencies for ${pack.label}`, - step: count, - maxStep: numberOfPacks + 1, - }); - try { - for (const dir of pack.packRootDir) { - await cliServer.packInstall(dir); - } - } catch (error) { - failedPacks.push(pack.label); - errors.push(error); - } - } - if (failedPacks.length > 0) { - void logger.log(`Errors:\n${errors.join('\n')}`); - throw new Error( - `Unable to install pack dependencies for: ${failedPacks.join(', ')}. See log for more details.` - ); - } else { - void showAndLogInformationMessage('Finished installing pack dependencies.'); - } - } else { - throw new UserCancellationException('No packs selected.'); - } -} diff --git a/extensions/ql-vscode/src/packaging/index.ts b/extensions/ql-vscode/src/packaging/index.ts new file mode 100644 index 00000000000..24cb162e6af --- /dev/null +++ b/extensions/ql-vscode/src/packaging/index.ts @@ -0,0 +1 @@ +export * from "./packaging"; diff --git a/extensions/ql-vscode/src/packaging/packaging.ts b/extensions/ql-vscode/src/packaging/packaging.ts new file mode 100644 index 00000000000..40cbbd07788 --- /dev/null +++ b/extensions/ql-vscode/src/packaging/packaging.ts @@ -0,0 +1,208 @@ +import type { CodeQLCliServer, QlpacksInfo } from "../codeql-cli/cli"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import type { QuickPickItem } from "vscode"; +import { window } from "vscode"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { + UserCancellationException, + withProgress, +} from "../common/vscode/progress"; +import { extLogger } from "../common/logging/vscode"; +import { + showAndLogExceptionWithTelemetry, + showAndLogInformationMessage, +} from "../common/logging"; +import { asError, getErrorStack } from "../common/helpers-pure"; +import { redactableError } from "../common/errors"; +import { PACKS_BY_QUERY_LANGUAGE } from "../common/query-language"; +import type { PackagingCommands } from "../common/commands"; +import { telemetryListener } from "../common/vscode/telemetry"; +import { containsPath } from "../common/files"; + +type PackagingOptions = { + cliServer: CodeQLCliServer; +}; + +export function getPackagingCommands({ + cliServer, +}: PackagingOptions): PackagingCommands { + return { + "codeQL.installPackDependencies": async () => + withProgress( + async (progress: ProgressCallback) => + await handleInstallPackDependencies(cliServer, progress), + { + title: "Installing pack dependencies", + }, + ), + "codeQL.downloadPacks": async () => + withProgress( + async (progress: ProgressCallback) => + await handleDownloadPacks(cliServer, progress), + { + title: "Downloading packs", + }, + ), + }; +} + +/** + * Prompts user to choose packs to download, and downloads them. + * + * @param cliServer The CLI server. + * @param progress A progress callback. + */ +export async function handleDownloadPacks( + cliServer: CodeQLCliServer, + progress: ProgressCallback, +): Promise { + progress({ + message: "Choose packs to download", + step: 1, + maxStep: 2, + }); + let packsToDownload: string[] = []; + const queryPackOption = "Download all core query packs"; + const customPackOption = "Download custom specified pack"; + const quickpick = await window.showQuickPick( + [queryPackOption, customPackOption], + { ignoreFocusOut: true }, + ); + if (quickpick === queryPackOption) { + packsToDownload = Object.values(PACKS_BY_QUERY_LANGUAGE).flat(); + } else if (quickpick === customPackOption) { + const customPack = await window.showInputBox({ + prompt: + "Enter the of the pack to download", + ignoreFocusOut: true, + }); + if (customPack) { + packsToDownload.push(customPack); + } else { + throw new UserCancellationException("No pack specified."); + } + } + if (packsToDownload?.length > 0) { + progress({ + message: "Downloading packs. This may take a few minutes.", + step: 2, + maxStep: 2, + }); + try { + await cliServer.packDownload(packsToDownload); + void showAndLogInformationMessage( + extLogger, + "Finished downloading packs.", + ); + } catch (error) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(error), + )`Unable to download all packs. See log for more details.`, + { + fullMessage: getErrorStack(error), + }, + ); + } + } +} + +interface QLPackQuickPickItem extends QuickPickItem { + packRootDir: string[]; +} + +/** + * Prompts user to choose packs to install, and installs them. + * + * @param cliServer The CLI server. + * @param progress A progress callback. + */ +export async function handleInstallPackDependencies( + cliServer: CodeQLCliServer, + progress: ProgressCallback, +): Promise { + progress({ + message: "Choose packs to install dependencies for", + step: 1, + maxStep: 2, + }); + const workspaceFolders = getOnDiskWorkspaceFolders(); + const resolvedPacks = await cliServer.resolveQlpacks(workspaceFolders); + const workspacePacks = filterWorkspacePacks(resolvedPacks, workspaceFolders); + + const quickPickItems = Object.entries( + workspacePacks, + ).map(([key, value]) => ({ + label: key, + packRootDir: value, + })); + const packsToInstall = await window.showQuickPick(quickPickItems, { + placeHolder: "Select packs to install dependencies for", + canPickMany: true, + ignoreFocusOut: true, + }); + const numberOfPacks = packsToInstall?.length || 0; + if (packsToInstall && numberOfPacks > 0) { + const failedPacks = []; + const errors = []; + // Start at 1 because we already have the first step + let count = 1; + for (const pack of packsToInstall) { + count++; + progress({ + message: `Installing dependencies for ${pack.label}`, + step: count, + maxStep: numberOfPacks + 1, + }); + try { + for (const dir of pack.packRootDir) { + await cliServer.packInstall(dir); + } + } catch (error) { + failedPacks.push(pack.label); + errors.push(error); + } + } + if (failedPacks.length > 0) { + void extLogger.log(`Errors:\n${errors.join("\n")}`); + throw new Error( + `Unable to install pack dependencies for: ${failedPacks.join( + ", ", + )}. See log for more details.`, + ); + } else { + void showAndLogInformationMessage( + extLogger, + "Finished installing pack dependencies.", + ); + } + } else { + throw new UserCancellationException("No packs selected."); + } +} + +/** + * This filter will remove any packs from the qlpacks that are not in the workspace. It will + * filter out any packs that are in e.g. the package cache or in the distribution, which the + * user does not need to install dependencies for. + * + * @param qlpacks The qlpacks to filter. + * @param workspaceFolders The workspace folders to filter by. + */ +export function filterWorkspacePacks( + qlpacks: QlpacksInfo, + workspaceFolders: string[], +): QlpacksInfo { + return Object.fromEntries( + Object.entries(qlpacks).filter(([, packDirs]) => + // If any of the pack dirs are in the workspace, keep the pack + packDirs.some((packDir) => + workspaceFolders.some((workspaceFolder) => + containsPath(workspaceFolder, packDir), + ), + ), + ), + ); +} diff --git a/extensions/ql-vscode/src/packaging/qlpack-file-loader.ts b/extensions/ql-vscode/src/packaging/qlpack-file-loader.ts new file mode 100644 index 00000000000..ec3dc6494ca --- /dev/null +++ b/extensions/ql-vscode/src/packaging/qlpack-file-loader.ts @@ -0,0 +1,33 @@ +import Ajv from "ajv"; +import type { QlPackFile } from "./qlpack-file"; +import { load } from "js-yaml"; +import { readFile } from "fs-extra"; + +import qlpackFileSchemaJson from "./qlpack-file.schema.json"; + +const ajv = new Ajv({ allErrors: true }); +const qlpackFileValidate = ajv.compile(qlpackFileSchemaJson); + +export async function loadQlpackFile(path: string): Promise { + const qlpackFileText = await readFile(path, "utf8"); + + let qlPack = load(qlpackFileText) as QlPackFile | undefined; + + if (qlPack === undefined || qlPack === null) { + // An empty file is not valid according to the schema since it's not an object, + // but it is equivalent to an empty object. + qlPack = {}; + } + + qlpackFileValidate(qlPack); + + if (qlpackFileValidate.errors) { + throw new Error( + `Invalid extension pack YAML: ${qlpackFileValidate.errors + .map((error) => `${error.instancePath} ${error.message}`) + .join(", ")}`, + ); + } + + return qlPack; +} diff --git a/extensions/ql-vscode/src/packaging/qlpack-file.schema.json b/extensions/ql-vscode/src/packaging/qlpack-file.schema.json new file mode 100644 index 00000000000..4c429afd40d --- /dev/null +++ b/extensions/ql-vscode/src/packaging/qlpack-file.schema.json @@ -0,0 +1,141 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/QlPackFile", + "definitions": { + "QlPackFile": { + "type": "object", + "properties": { + "name": { + "type": ["string", "null"] + }, + "version": { + "type": ["string", "null"] + }, + "dependencies": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "extensionTargets": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "dbscheme": { + "type": ["string", "null"] + }, + "library": { + "type": ["boolean", "null"] + }, + "defaultSuite": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/SuiteInstruction" + } + }, + { + "$ref": "#/definitions/SuiteInstruction" + }, + { + "type": "null" + } + ] + }, + "defaultSuiteFile": { + "type": ["string", "null"] + }, + "dataExtensions": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "description": "The qlpack pack file, either in qlpack.yml or in codeql-pack.yml." + }, + "SuiteInstruction": { + "type": "object", + "properties": { + "qlpack": { + "type": "string" + }, + "query": { + "type": "string" + }, + "queries": { + "type": "string" + }, + "include": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + }, + "exclude": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + }, + "description": { + "type": "string" + }, + "import": { + "type": "string" + }, + "from": { + "type": "string" + } + }, + "description": "A single entry in a .qls file." + } + } +} diff --git a/extensions/ql-vscode/src/packaging/qlpack-file.ts b/extensions/ql-vscode/src/packaging/qlpack-file.ts new file mode 100644 index 00000000000..a17b6764218 --- /dev/null +++ b/extensions/ql-vscode/src/packaging/qlpack-file.ts @@ -0,0 +1,16 @@ +import type { SuiteInstruction } from "./suite-instruction"; + +/** + * The qlpack pack file, either in qlpack.yml or in codeql-pack.yml. + */ +export interface QlPackFile { + name?: string | null; + version?: string | null; + dependencies?: Record | null; + extensionTargets?: Record | null; + dbscheme?: string | null; + library?: boolean | null; + defaultSuite?: SuiteInstruction[] | SuiteInstruction | null; + defaultSuiteFile?: string | null; + dataExtensions?: string[] | string | null; +} diff --git a/extensions/ql-vscode/src/packaging/qlpack-lock-file.ts b/extensions/ql-vscode/src/packaging/qlpack-lock-file.ts new file mode 100644 index 00000000000..54d0d5e1440 --- /dev/null +++ b/extensions/ql-vscode/src/packaging/qlpack-lock-file.ts @@ -0,0 +1,8 @@ +/** + * The qlpack lock file, either in qlpack.lock.yml or in codeql-pack.lock.yml. + */ +export interface QlPackLockFile { + lockVersion: string; + dependencies?: Record; + compiled?: boolean; +} diff --git a/extensions/ql-vscode/src/packaging/suite-instruction.ts b/extensions/ql-vscode/src/packaging/suite-instruction.ts new file mode 100644 index 00000000000..48b061c1372 --- /dev/null +++ b/extensions/ql-vscode/src/packaging/suite-instruction.ts @@ -0,0 +1,13 @@ +/** + * A single entry in a .qls file. + */ +export interface SuiteInstruction { + qlpack?: string; + query?: string; + queries?: string; + include?: Record; + exclude?: Record; + description?: string; + import?: string; + from?: string; +} diff --git a/extensions/ql-vscode/src/pure/bqrs-cli-types.ts b/extensions/ql-vscode/src/pure/bqrs-cli-types.ts deleted file mode 100644 index 4d3cc8a2893..00000000000 --- a/extensions/ql-vscode/src/pure/bqrs-cli-types.ts +++ /dev/null @@ -1,116 +0,0 @@ - -export const PAGE_SIZE = 1000; - -/** - * The single-character codes used in the bqrs format for the the kind - * of a result column. This namespace is intentionally not an enum, see - * the "for the sake of extensibility" comment in messages.ts. - */ -// eslint-disable-next-line @typescript-eslint/no-namespace -export namespace ColumnKindCode { - export const FLOAT = 'f'; - export const INTEGER = 'i'; - export const STRING = 's'; - export const BOOLEAN = 'b'; - export const DATE = 'd'; - export const ENTITY = 'e'; -} - -export type ColumnKind = - | typeof ColumnKindCode.FLOAT - | typeof ColumnKindCode.INTEGER - | typeof ColumnKindCode.STRING - | typeof ColumnKindCode.BOOLEAN - | typeof ColumnKindCode.DATE - | typeof ColumnKindCode.ENTITY; - -export interface Column { - name?: string; - kind: ColumnKind; -} - -export interface ResultSetSchema { - name: string; - rows: number; - columns: Column[]; - pagination?: PaginationInfo; -} - -export function getResultSetSchema(resultSetName: string, resultSets: BQRSInfo): ResultSetSchema | undefined { - for (const schema of resultSets['result-sets']) { - if (schema.name === resultSetName) { - return schema; - } - } - return undefined; -} -export interface PaginationInfo { - 'step-size': number; - offsets: number[]; -} - -export interface BQRSInfo { - 'result-sets': ResultSetSchema[]; -} - -export type BqrsId = number; - -export interface EntityValue { - url?: UrlValue; - label?: string; - id?: BqrsId; -} - -export interface LineColumnLocation { - uri: string; - startLine: number; - startColumn: number; - endLine: number; - endColumn: number; -} - -export interface WholeFileLocation { - uri: string; - startLine: never; - startColumn: never; - endLine: never; - endColumn: never; -} - -export type ResolvableLocationValue = WholeFileLocation | LineColumnLocation; - -export type UrlValue = ResolvableLocationValue | string; - -export type CellValue = EntityValue | number | string | boolean; - -export type ResultRow = CellValue[]; - -export interface RawResultSet { - readonly schema: ResultSetSchema; - readonly rows: readonly ResultRow[]; -} - -// TODO: This function is not necessary. It generates a tuple that is slightly easier -// to handle than the ResultSetSchema and DecodedBqrsChunk. But perhaps it is unnecessary -// boilerplate. -export function transformBqrsResultSet( - schema: ResultSetSchema, - page: DecodedBqrsChunk -): RawResultSet { - return { - schema, - rows: Array.from(page.tuples), - }; -} - -type BqrsKind = 'String' | 'Float' | 'Integer' | 'String' | 'Boolean' | 'Date' | 'Entity'; - -interface BqrsColumn { - name: string; - kind: BqrsKind; -} -export interface DecodedBqrsChunk { - tuples: CellValue[][]; - next?: number; - columns: BqrsColumn[]; -} diff --git a/extensions/ql-vscode/src/pure/bqrs-utils.ts b/extensions/ql-vscode/src/pure/bqrs-utils.ts deleted file mode 100644 index 1c61fb1d678..00000000000 --- a/extensions/ql-vscode/src/pure/bqrs-utils.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { - UrlValue, - ResolvableLocationValue, - LineColumnLocation, - WholeFileLocation -} from './bqrs-cli-types'; -import { createRemoteFileRef } from './location-link-utils'; - -/** - * The CodeQL filesystem libraries use this pattern in `getURL()` predicates - * to describe the location of an entire filesystem resource. - * Such locations appear as `StringLocation`s instead of `FivePartLocation`s. - * - * Folder resources also get similar URLs, but with the `folder` scheme. - * They are deliberately ignored here, since there is no suitable location to show the user. - */ -const FILE_LOCATION_REGEX = /file:\/\/(.+):([0-9]+):([0-9]+):([0-9]+):([0-9]+)/; -/** - * Gets a resolvable source file location for the specified `LocationValue`, if possible. - * @param loc The location to test. - */ -export function tryGetResolvableLocation( - loc: UrlValue | undefined -): ResolvableLocationValue | undefined { - let resolvedLoc; - if (loc === undefined) { - resolvedLoc = undefined; - } else if (isWholeFileLoc(loc) || isLineColumnLoc(loc)) { - resolvedLoc = loc as ResolvableLocationValue; - } else if (isStringLoc(loc)) { - resolvedLoc = tryGetLocationFromString(loc); - } else { - resolvedLoc = undefined; - } - - return resolvedLoc; -} - -export function tryGetLocationFromString( - loc: string -): ResolvableLocationValue | undefined { - const matches = FILE_LOCATION_REGEX.exec(loc); - if (matches && matches.length > 1 && matches[1]) { - if (isWholeFileMatch(matches)) { - return { - uri: matches[1], - } as WholeFileLocation; - } else { - return { - uri: matches[1], - startLine: Number(matches[2]), - startColumn: Number(matches[3]), - endLine: Number(matches[4]), - endColumn: Number(matches[5]), - }; - } - } else { - return undefined; - } -} - -function isWholeFileMatch(matches: RegExpExecArray): boolean { - return ( - matches[2] === '0' && - matches[3] === '0' && - matches[4] === '0' && - matches[5] === '0' - ); -} - -/** - * Checks whether the file path is empty. If so, we do not want to render this location - * as a link. - * - * @param uri A file uri - */ -export function isEmptyPath(uriStr: string) { - return !uriStr || uriStr === 'file:/'; -} - -export function isLineColumnLoc(loc: UrlValue): loc is LineColumnLocation { - return typeof loc !== 'string' - && !isEmptyPath(loc.uri) - && 'startLine' in loc - && 'startColumn' in loc - && 'endLine' in loc - && 'endColumn' in loc; -} - -export function isWholeFileLoc(loc: UrlValue): loc is WholeFileLocation { - return typeof loc !== 'string' && !isEmptyPath(loc.uri) && !isLineColumnLoc(loc); -} - -export function isStringLoc(loc: UrlValue): loc is string { - return typeof loc === 'string'; -} - -export function tryGetRemoteLocation( - loc: UrlValue | undefined, - fileLinkPrefix: string, - sourceLocationPrefix: string | undefined, -): string | undefined { - const resolvableLocation = tryGetResolvableLocation(loc); - if (!resolvableLocation) { - return undefined; - } - - let trimmedLocation: string; - - // Remote locations have the following format: - // "file:${sourceLocationPrefix}/relative/path/to/file" - // So we need to strip off the first part to get the relative path. - if (sourceLocationPrefix) { - if (!resolvableLocation.uri.startsWith(`file:${sourceLocationPrefix}/`)) { - return undefined; - } - trimmedLocation = resolvableLocation.uri.replace(`file:${sourceLocationPrefix}/`, ''); - } else { - // If the source location prefix is empty (e.g. for older remote queries), we assume that the database - // was created on a Linux actions runner and has the format: - // "file:/home/runner/work///relative/path/to/file" - // So we need to drop the first 6 parts of the path. - if (!resolvableLocation.uri.startsWith('file:/home/runner/work/')) { - return undefined; - } - const locationParts = resolvableLocation.uri.split('/'); - trimmedLocation = locationParts.slice(6, locationParts.length).join('/'); - } - - const fileLink = { - fileLinkPrefix, - filePath: trimmedLocation, - }; - return createRemoteFileRef( - fileLink, - resolvableLocation.startLine, - resolvableLocation.endLine); -} diff --git a/extensions/ql-vscode/src/pure/files.ts b/extensions/ql-vscode/src/pure/files.ts deleted file mode 100644 index 6b0189a2b0f..00000000000 --- a/extensions/ql-vscode/src/pure/files.ts +++ /dev/null @@ -1,30 +0,0 @@ -import * as fs from 'fs-extra'; -import * as path from 'path'; - - -/** - * Recursively finds all .ql files in this set of Uris. - * - * @param paths The list of Uris to search through - * - * @returns list of ql files and a boolean describing whether or not a directory was found/ - */ -export async function gatherQlFiles(paths: string[]): Promise<[string[], boolean]> { - const gatheredUris: Set = new Set(); - let dirFound = false; - for (const nextPath of paths) { - if ( - (await fs.pathExists(nextPath)) && - (await fs.stat(nextPath)).isDirectory() - ) { - dirFound = true; - const subPaths = await fs.readdir(nextPath); - const fullPaths = subPaths.map(p => path.join(nextPath, p)); - const nestedFiles = (await gatherQlFiles(fullPaths))[0]; - nestedFiles.forEach(nested => gatheredUris.add(nested)); - } else if (nextPath.endsWith('.ql')) { - gatheredUris.add(nextPath); - } - } - return [Array.from(gatheredUris), dirFound]; -} diff --git a/extensions/ql-vscode/src/pure/helpers-pure.ts b/extensions/ql-vscode/src/pure/helpers-pure.ts deleted file mode 100644 index 8554befaecc..00000000000 --- a/extensions/ql-vscode/src/pure/helpers-pure.ts +++ /dev/null @@ -1,57 +0,0 @@ - -/** - * helpers-pure.ts - * ------------ - * - * Helper functions that don't depend on vscode or the CLI and therefore can be used by the front-end and pure unit tests. - */ - -/** - * This error is used to indicate a runtime failure of an exhaustivity check enforced at compile time. - */ -class ExhaustivityCheckingError extends Error { - constructor(public expectedExhaustiveValue: never) { - super('Internal error: exhaustivity checking failure'); - } -} - -/** - * Used to perform compile-time exhaustivity checking on a value. This function will not be executed at runtime unless - * the type system has been subverted. - */ -export function assertNever(value: never): never { - throw new ExhaustivityCheckingError(value); -} - -/** - * Use to perform array filters where the predicate is asynchronous. - */ -export const asyncFilter = async function (arr: T[], predicate: (arg0: T) => Promise) { - const results = await Promise.all(arr.map(predicate)); - return arr.filter((_, index) => results[index]); -}; - -/** - * This regex matches strings of the form `owner/repo` where: - * - `owner` is made up of alphanumeric characters, hyphens, underscores, or periods - * - `repo` is made up of alphanumeric characters, hyphens, underscores, or periods - */ -export const REPO_REGEX = /^[a-zA-Z0-9-_\.]+\/[a-zA-Z0-9-_\.]+$/; - -/** - * This regex matches GiHub organization and user strings. These are made up for alphanumeric - * characters, hyphens, underscores or periods. - */ -export const OWNER_REGEX = /^[a-zA-Z0-9-_\.]+$/; - -export function getErrorMessage(e: any) { - return e instanceof Error ? e.message : String(e); -} - -export function getErrorStack(e: any) { - return e instanceof Error ? e.stack ?? '' : ''; -} - -export function asError(e: any): Error { - return e instanceof Error ? e : new Error(String(e)); -} diff --git a/extensions/ql-vscode/src/pure/interface-types.ts b/extensions/ql-vscode/src/pure/interface-types.ts deleted file mode 100644 index a6b4e0fb05c..00000000000 --- a/extensions/ql-vscode/src/pure/interface-types.ts +++ /dev/null @@ -1,441 +0,0 @@ -import * as sarif from 'sarif'; -import { AnalysisResults } from '../remote-queries/shared/analysis-result'; -import { AnalysisSummary, RemoteQueryResult } from '../remote-queries/shared/remote-query-result'; -import { RawResultSet, ResultRow, ResultSetSchema, Column, ResolvableLocationValue } from './bqrs-cli-types'; - -/** - * This module contains types and code that are shared between - * the webview and the extension. - */ - -export const SELECT_TABLE_NAME = '#select'; -export const ALERTS_TABLE_NAME = 'alerts'; -export const GRAPH_TABLE_NAME = 'graph'; - -export type RawTableResultSet = { t: 'RawResultSet' } & RawResultSet; -export type InterpretedResultSet = { - t: 'InterpretedResultSet'; - readonly schema: ResultSetSchema; - name: string; - interpretation: InterpretationT; -}; - -export type ResultSet = RawTableResultSet | InterpretedResultSet; - -/** - * Only ever show this many rows in a raw result table. - */ -export const RAW_RESULTS_LIMIT = 10000; - -export interface DatabaseInfo { - name: string; - databaseUri: string; -} - -/** Arbitrary query metadata */ -export interface QueryMetadata { - name?: string; - description?: string; - id?: string; - kind?: string; - scored?: string; -} - -export interface PreviousExecution { - queryName: string; - time: string; - databaseName: string; - durationSeconds: number; -} - -export type SarifInterpretationData = { - t: 'SarifInterpretationData'; - /** - * sortState being undefined means don't sort, just present results in the order - * they appear in the sarif file. - */ - sortState?: InterpretedResultsSortState; -} & sarif.Log; - -export type GraphInterpretationData = { - t: 'GraphInterpretationData'; - dot: string[]; -}; - -export type InterpretationData = SarifInterpretationData | GraphInterpretationData; - -export interface InterpretationT { - sourceLocationPrefix: string; - numTruncatedResults: number; - numTotalResults: number; - data: T; -} - -export type Interpretation = InterpretationT; - -export interface ResultsPaths { - resultsPath: string; - interpretedResultsPath: string; -} - -export interface SortedResultSetInfo { - resultsPath: string; - sortState: RawResultsSortState; -} - -export type SortedResultsMap = { [resultSet: string]: SortedResultSetInfo }; - -/** - * A message to indicate that the results are being updated. - * - * As a result of receiving this message, listeners might want to display a loading indicator. - */ -export interface ResultsUpdatingMsg { - t: 'resultsUpdating'; -} - -/** - * Message to set the initial state of the results view with a new - * query. - */ -export interface SetStateMsg { - t: 'setState'; - resultsPath: string; - origResultsPaths: ResultsPaths; - sortedResultsMap: SortedResultsMap; - interpretation: undefined | Interpretation; - database: DatabaseInfo; - metadata?: QueryMetadata; - queryName: string; - queryPath: string; - /** - * Whether to keep displaying the old results while rendering the new results. - * - * This is useful to prevent properties like scroll state being lost when rendering the sorted results after sorting a column. - */ - shouldKeepOldResultsWhileRendering: boolean; - - /** - * An experimental way of providing results from the extension. - * Should be in the WebviewParsedResultSets branch of the type - * unless config.EXPERIMENTAL_BQRS_SETTING is set to true. - */ - parsedResultSets: ParsedResultSets; -} - -/** - * Message indicating that the results view should display interpreted - * results. - */ -export interface ShowInterpretedPageMsg { - t: 'showInterpretedPage'; - interpretation: Interpretation; - database: DatabaseInfo; - metadata?: QueryMetadata; - pageNumber: number; - numPages: number; - pageSize: number; - resultSetNames: string[]; - queryName: string; - queryPath: string; -} - -/** Advance to the next or previous path no in the path viewer */ -export interface NavigatePathMsg { - t: 'navigatePath'; - - /** 1 for next, -1 for previous */ - direction: number; -} - -/** - * A message indicating that the results view should untoggle the - * "Show results in Problems view" checkbox. - */ -export interface UntoggleShowProblemsMsg { - t: 'untoggleShowProblems'; -} - -/** - * A message sent into the results view. - */ -export type IntoResultsViewMsg = - | ResultsUpdatingMsg - | SetStateMsg - | ShowInterpretedPageMsg - | NavigatePathMsg - | UntoggleShowProblemsMsg; - -/** - * A message sent from the results view. - */ -export type FromResultsViewMsg = - | ViewSourceFileMsg - | ToggleDiagnostics - | ChangeRawResultsSortMsg - | ChangeInterpretedResultsSortMsg - | ResultViewLoaded - | ChangePage - | OpenFileMsg; - -/** - * Message from the results view to open a database source - * file at the provided location. - */ -export interface ViewSourceFileMsg { - t: 'viewSourceFile'; - loc: ResolvableLocationValue; - databaseUri: string; -} - -/** - * Message from the results view to open a file in an editor. - */ -export interface OpenFileMsg { - t: 'openFile'; - /* Full path to the file to open. */ - filePath: string; -} - -export interface OpenVirtualFileMsg { - t: 'openVirtualFile'; - queryText: string; -} - -/** - * Message from the results view to toggle the display of - * query diagnostics. - */ -interface ToggleDiagnostics { - t: 'toggleDiagnostics'; - databaseUri: string; - metadata?: QueryMetadata; - origResultsPaths: ResultsPaths; - visible: boolean; - kind?: string; -} - -/** - * Message from the results view to signal that loading the results - * is complete. - */ -interface ResultViewLoaded { - t: 'resultViewLoaded'; -} - -/** - * Message from the results view to signal a request to change the - * page. - */ -interface ChangePage { - t: 'changePage'; - pageNumber: number; // 0-indexed, displayed to the user as 1-indexed - selectedTable: string; -} - -export enum SortDirection { - asc, - desc, -} - -export interface RawResultsSortState { - columnIndex: number; - sortDirection: SortDirection; -} - -export type InterpretedResultsSortColumn = 'alert-message'; - -export interface InterpretedResultsSortState { - sortBy: InterpretedResultsSortColumn; - sortDirection: SortDirection; -} - -/** - * Message from the results view to request a sorting change. - */ -interface ChangeRawResultsSortMsg { - t: 'changeSort'; - resultSetName: string; - /** - * sortState being undefined means don't sort, just present results in the order - * they appear in the sarif file. - */ - sortState?: RawResultsSortState; -} - -/** - * Message from the results view to request a sorting change in interpreted results. - */ -interface ChangeInterpretedResultsSortMsg { - t: 'changeInterpretedSort'; - /** - * sortState being undefined means don't sort, just present results in the order - * they appear in the sarif file. - */ - sortState?: InterpretedResultsSortState; -} - -/** - * Message from the compare view to the extension. - */ -export type FromCompareViewMessage = - | CompareViewLoadedMessage - | ChangeCompareMessage - | ViewSourceFileMsg - | OpenQueryMessage; - -/** - * Message from the compare view to signal the completion of loading results. - */ -interface CompareViewLoadedMessage { - t: 'compareViewLoaded'; -} - -/** - * Message from the compare view to request opening a query. - */ -export interface OpenQueryMessage { - readonly t: 'openQuery'; - readonly kind: 'from' | 'to'; -} - -/** - * Message from the compare view to request changing the result set to compare. - */ -interface ChangeCompareMessage { - t: 'changeCompare'; - newResultSetName: string; -} - -export type ToCompareViewMessage = SetComparisonsMessage; - -/** - * Message to the compare view that specifies the query results to compare. - */ -export interface SetComparisonsMessage { - readonly t: 'setComparisons'; - readonly stats: { - fromQuery?: { - name: string; - status: string; - time: string; - }; - toQuery?: { - name: string; - status: string; - time: string; - }; - }; - readonly columns: readonly Column[]; - readonly commonResultSetNames: string[]; - readonly currentResultSetName: string; - readonly rows: QueryCompareResult | undefined; - readonly message: string | undefined; - readonly databaseUri: string; -} - -export enum DiffKind { - Add = 'Add', - Remove = 'Remove', - Change = 'Change', -} - -/** - * from is the set of rows that have changes in the "from" query. - * to is the set of rows that have changes in the "to" query. - * They are in the same order, so element 1 in "from" corresponds to - * element 1 in "to". - * - * If an array element is null, that means that the element was removed - * (or added) in the comparison. - */ -export type QueryCompareResult = { - from: ResultRow[]; - to: ResultRow[]; -}; - -/** - * Extract the name of the default result. Prefer returning - * 'alerts', or '#select'. Otherwise return the first in the list. - * - * Note that this is the only function in this module. It must be - * placed here since it is shared across the webview boundary. - * - * We should consider moving to a separate module to ensure this - * one is types only. - * - * @param resultSetNames - */ -export function getDefaultResultSetName( - resultSetNames: readonly string[] -): string { - // Choose first available result set from the array - return [ - ALERTS_TABLE_NAME, - GRAPH_TABLE_NAME, - SELECT_TABLE_NAME, - resultSetNames[0] - ].filter((resultSetName) => resultSetNames.includes(resultSetName))[0]; -} - -export interface ParsedResultSets { - pageNumber: number; - pageSize: number; - numPages: number; - numInterpretedPages: number; - selectedTable?: string; // when undefined, means 'show default table' - resultSetNames: string[]; - resultSet: ResultSet; -} - -export type FromRemoteQueriesMessage = - | RemoteQueryLoadedMessage - | RemoteQueryErrorMessage - | OpenFileMsg - | OpenVirtualFileMsg - | RemoteQueryDownloadAnalysisResultsMessage - | RemoteQueryDownloadAllAnalysesResultsMessage - | RemoteQueryExportResultsMessage - | CopyRepoListMessage; - -export type ToRemoteQueriesMessage = - | SetRemoteQueryResultMessage - | SetAnalysesResultsMessage; - -export interface RemoteQueryLoadedMessage { - t: 'remoteQueryLoaded'; -} - -export interface SetRemoteQueryResultMessage { - t: 'setRemoteQueryResult'; - queryResult: RemoteQueryResult -} - -export interface SetAnalysesResultsMessage { - t: 'setAnalysesResults'; - analysesResults: AnalysisResults[]; -} - -export interface RemoteQueryErrorMessage { - t: 'remoteQueryError'; - error: string; -} - -export interface RemoteQueryDownloadAnalysisResultsMessage { - t: 'remoteQueryDownloadAnalysisResults'; - analysisSummary: AnalysisSummary -} - -export interface RemoteQueryDownloadAllAnalysesResultsMessage { - t: 'remoteQueryDownloadAllAnalysesResults'; - analysisSummaries: AnalysisSummary[]; -} - -export interface RemoteQueryExportResultsMessage { - t: 'remoteQueryExportResults'; -} - -export interface CopyRepoListMessage { - t: 'copyRepoList'; - queryId: string; -} diff --git a/extensions/ql-vscode/src/pure/location-link-utils.ts b/extensions/ql-vscode/src/pure/location-link-utils.ts deleted file mode 100644 index d8769240dd3..00000000000 --- a/extensions/ql-vscode/src/pure/location-link-utils.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { FileLink } from '../remote-queries/shared/analysis-result'; - -export function createRemoteFileRef( - fileLink: FileLink, - startLine?: number, - endLine?: number -): string { - if (startLine && endLine) { - return `${fileLink.fileLinkPrefix}/${fileLink.filePath}#L${startLine}-L${endLine}`; - } else if (startLine) { - return `${fileLink.fileLinkPrefix}/${fileLink.filePath}#L${startLine}`; - } else { - return `${fileLink.fileLinkPrefix}/${fileLink.filePath}`; - } -} diff --git a/extensions/ql-vscode/src/pure/log-summary-parser.ts b/extensions/ql-vscode/src/pure/log-summary-parser.ts deleted file mode 100644 index c5914b4770f..00000000000 --- a/extensions/ql-vscode/src/pure/log-summary-parser.ts +++ /dev/null @@ -1,36 +0,0 @@ -// TODO(angelapwen): Only load in necessary information and -// location in bytes for this log to save memory. -export interface EvalLogData { - predicateName: string; - millis: number; - resultSize: number; - // Key: pipeline identifier; Value: array of pipeline steps - ra: Record; -} - -/** - * A pure method that parses a string of evaluator log summaries into - * an array of EvalLogData objects. - * - */ -export function parseViewerData(logSummary: string): EvalLogData[] { - // Remove newline delimiters because summary is in .jsonl format. - const jsonSummaryObjects: string[] = logSummary.split(/\r?\n\r?\n/g); - const viewerData: EvalLogData[] = []; - - for (const obj of jsonSummaryObjects) { - const jsonObj = JSON.parse(obj); - - // Only convert log items that have an RA and millis field - if (jsonObj.ra !== undefined && jsonObj.millis !== undefined) { - const newLogData: EvalLogData = { - predicateName: jsonObj.predicateName, - millis: jsonObj.millis, - resultSize: jsonObj.resultSize, - ra: jsonObj.ra - }; - viewerData.push(newLogData); - } - } - return viewerData; -} diff --git a/extensions/ql-vscode/src/pure/messages.ts b/extensions/ql-vscode/src/pure/messages.ts deleted file mode 100644 index cec4391a54d..00000000000 --- a/extensions/ql-vscode/src/pure/messages.ts +++ /dev/null @@ -1,1126 +0,0 @@ -/** - * Types for messages exchanged during jsonrpc communication with the - * the CodeQL query server. - * - * This file exists in the queryserver and in the vscode extension, and - * should be kept in sync between them. - * - * A note about the namespaces below, which look like they are - * essentially enums, namely Severity, ResultColumnKind, and - * QueryResultType. By design, for the sake of extensibility, clients - * receiving messages of this protocol are supposed to accept any - * number for any of these types. We commit to the given meaning of - * the numbers listed in constants in the namespaces, and we commit to - * the fact that any unknown QueryResultType value counts as an error. - */ - -import * as rpc from 'vscode-jsonrpc'; - -/** - * A position within a QL file. - */ -export interface Position { - /** - * The one-based index of the start line - */ - line: number; - /** - * The one-based offset of the start column within - * the start line in UTF-16 code-units - */ - column: number; - /** - * The one-based index of the end line line - */ - endLine: number; - - /** - * The one-based offset of the end column within - * the end line in UTF-16 code-units - */ - endColumn: number; - /** - * The path of the file. - * If the file name is "Compiler Generated" the - * the position is not a real position but - * arises from compiler generated code. - */ - fileName: string; -} - -/** - * A query that should be checked for any errors or warnings - */ -export interface CheckQueryParams { - /** - * The options for compilation, if missing then the default options. - */ - compilationOptions?: CompilationOptions; - /** - * The ql program to check. - */ - queryToCheck: QlProgram; - /** - * The way of compiling a query - */ - target: CompilationTarget; -} - -/** - * A query that should compiled into a qlo - */ -export interface CompileQueryParams { - /** - * The options for compilation, if missing then the default options. - */ - compilationOptions?: CompilationOptions; - /** - * The options for compilation that do not affect the result. - */ - extraOptions?: ExtraOptions; - /** - * The ql program to check. - */ - queryToCheck: QlProgram; - /** - * The way of compiling a query - */ - target: CompilationTarget; - /** - * The path to write the qlo at. - */ - resultPath?: string; -} - -/** - * A dil (datalog intermediate language) query that should compiled into a qlo - */ -export interface CompileDilParams { - /** - * The options for compilation, if missing then the default options. - */ - compilationOptions?: DilCompilationOptions; - /** - * The options for compilation that do not affect the result. - */ - extraOptions?: ExtraOptions; - /** - * The dil query to compile - */ - dilQuery?: DILQuery; - /** - * The path to write the qlo at. - */ - resultPath?: string; -} - - -/** - * The options for QL compilation. - */ -export interface CompilationOptions { - /** - * Whether to ensure that elements that do not have a location or URL - * get a default location. - */ - computeNoLocationUrls: boolean; - /** - * Whether to fail if any warnings occur in the ql code. - */ - failOnWarnings: boolean; - /** - * Whether to compile as fast as possible, at the expense - * of optimization. - */ - fastCompilation: boolean; - /** - * Whether to include dil within qlos. - */ - includeDilInQlo: boolean; - /** - * Whether to only do the initial program checks on the subset of the program that - * is used. - */ - localChecking: boolean; - /** - * Whether to disable urls in the results. - */ - noComputeGetUrl: boolean; - /** - * Whether to disable toString values in the results. - */ - noComputeToString: boolean; - /** - * Whether to ensure that elements that do not have a displayString - * get reported anyway. Useful for universal compilation options. - */ - computeDefaultStrings: boolean; - /** - * Emit debug information in compiled query. - */ - emitDebugInfo: boolean; -} - -/** - * Compilation options that do not affect the result of - * query compilation - */ -export interface ExtraOptions { - /** - * The uris of any additional compilation caches - * TODO: Document cache uri format - */ - extraCompilationCache?: string; - /** - * The compilation timeout in seconds. If it is - * zero then there is no timeout. - */ - timeoutSecs: number; -} - - -/** - * The DIL compilation options - */ -export interface DilCompilationOptions { - /** - * Whether to compile as fast as possible, at the expense - * of optimization. - */ - fastCompilation: boolean; - /** - * Whether to include dil within qlos. - */ - includeDilInQlo: boolean; -} - -/** - * A full ql program - */ -export interface QlProgram { - /** - * The path to the dbscheme - */ - dbschemePath: string; - /** - *The ql library search path - */ - libraryPath: string[]; - /** - * The path to the query - */ - queryPath: string; - /** - * If set then the contents of the source files. - * Otherwise they will be searched for on disk. - */ - sourceContents?: QlFileSet; -} - -/** - * A representation of files in query with all imports - * pre-resolved. - */ -export interface QlFileSet { - /** - * The files imported by the given file - */ - imports: { [key: string]: string[] }; - /** - * An id of each file - */ - nodeNumbering: { [key: string]: number }; - /** - * The code for each file - */ - qlCode: { [key: string]: string }; - /** - * The resolution of an import in each directory. - */ - resolvedDirImports: { [key: string]: { [key: string]: string } }; -} - -/** - * An uncompiled dil query - */ -export interface DILQuery { - /** - * The path to the dbscheme - */ - dbschemePath: string; - /** - * The path to the dil file - */ - dilPath: string; - /** - * The dil source - */ - dilSource: string; -} - -/** - * The way of compiling the query, as a normal query - * or a subset of it. Note that precisely one of the two options should be set. - */ -export interface CompilationTarget { - /** - * Compile as a normal query - */ - query?: Record; - /** - * Compile as a quick evaluation - */ - quickEval?: QuickEvalOptions; -} - -/** - * Options for quick evaluation - */ -export interface QuickEvalOptions { - quickEvalPos?: Position; -} - -/** - * The result of checking a query. - */ -export interface CheckQueryResult { - /** - * Whether the query came from a compilation cache - */ - fromCache: boolean; - /** - * The errors or warnings that occurred during compilation - */ - messages: CompilationMessage[]; - /** - * The types of the query predicates of the query - */ - resultPatterns: ResultPattern[]; -} - - -/** - * A compilation message (either an error or a warning) - */ -export interface CompilationMessage { - /** - * The text of the message - */ - message: string; - /** - * The source position associated with the message - */ - position: Position; - /** - * The severity of the message - */ - severity: Severity; -} - -export type Severity = number; -/** - * Severity of different messages. This namespace is intentionally not - * an enum, see "for the sake of extensibility" comment above. - */ -// eslint-disable-next-line @typescript-eslint/no-namespace -export namespace Severity { - /** - * The message is a compilation error. - */ - export const ERROR = 0; - /** - * The message is a compilation warning. - */ - export const WARNING = 1; -} - -/** - * The type of a query predicate - */ -export interface ResultPattern { - /** - * The types of the columns of the query predicate - */ - columns: ResultColumn[]; - /** - * The name of the query predicate. - * #select" is used as the name of a select clause. - */ - name: string; -} - -/** - * The name and type of a single column - */ -export interface ResultColumn { - /** - * The kind of the column. See `ResultColumnKind` - * for the current possible meanings - */ - kind: ResultColumnKind; - /** - * The name of the column. - * This may be compiler generated for complex select expressions. - */ - name: string; -} - -export type ResultColumnKind = number; -/** - * The kind of a result column. This namespace is intentionally not an enum, see "for the sake of - * extensibility" comment above. - */ -// eslint-disable-next-line @typescript-eslint/no-namespace -export namespace ResultColumnKind { - /** - * A column of type `float` - */ - export const FLOAT = 0; - /** - * A column of type `int` - */ - export const INTEGER = 1; - /** - * A column of type `string` - */ - export const STRING = 2; - /** - * A column of type `boolean` - */ - export const BOOLEAN = 3; - /** - * A column of type `date` - */ - export const DATE = 4; - /** - * A column of a non-primitive type - */ - export const ENTITY = 5; -} - -/** - * Parameters for compiling an upgrade. - */ -export interface CompileUpgradeParams { - /** - * The parameters for how to compile the upgrades - */ - upgrade: UpgradeParams; - /** - * A directory to store parts of the compiled upgrade - */ - upgradeTempDir: string; - /** - * Enable single file upgrades, set to true to allow - * using single file upgrades. - */ - singleFileUpgrades: true; -} - -/** - * Parameters for compiling an upgrade. - */ -export interface CompileUpgradeSequenceParams { - /** - * The sequence of upgrades to compile - */ - upgradePaths: string[]; - /** - * A directory to store parts of the compiled upgrade - */ - upgradeTempDir: string; -} - -/** - * Parameters describing an upgrade - */ -export interface UpgradeParams { - /** - * The location of non built-in upgrades - */ - additionalUpgrades: string[]; - /** - * The path to the current dbscheme to start the upgrade - */ - fromDbscheme: string; - /** - * The path to the target dbscheme to try an upgrade to - */ - toDbscheme: string; -} - -/** - * The result of checking an upgrade - */ -export interface CheckUpgradeResult { - /** - * A description of the steps to take to upgrade this dataset. - * Note that the list may be partial. - */ - checkedUpgrades?: UpgradesDescription; - /** - * Any errors that occurred when checking the scripts. - */ - upgradeError?: string; -} - - -/** - * The result of compiling an upgrade - */ -export interface CompileUpgradeResult { - /** - * The compiled upgrade. - */ - compiledUpgrades?: CompiledUpgrades; - /** - * Any errors that occurred when checking the scripts. - */ - error?: string; -} - -export interface CompileUpgradeSequenceResult { - /** - * The compiled upgrades as a single file. - */ - compiledUpgrade?: string; - /** - * Any errors that occurred when checking the scripts. - */ - error?: string; -} - - -/** - * A description of a upgrade process - */ -export interface UpgradesDescription { - /** - * The initial sha of the dbscheme to upgrade from - */ - initialSha: string; - /** - * A list of description of the steps in the upgrade process. - * Note that this may only upgrade partially - */ - scripts: UpgradeDescription[]; - /** - * The sha of the target dataset. - */ - targetSha: string; -} - -/** - * The description of a single step - */ -export interface UpgradeDescription { - /** - * The compatibility of the upgrade - */ - compatibility: string; - /** - * A description of the upgrade - */ - description: string; - /** - * The dbscheme sha after this upgrade has run. - */ - newSha: string; -} - - -export type CompiledUpgrades = MultiFileCompiledUpgrades | SingleFileCompiledUpgrades - -/** - * The parts shared by all compiled upgrades - */ -interface CompiledUpgradesBase { - /** - * The initial sha of the dbscheme to upgrade from - */ - initialSha: string; - /** - * The path to the new dataset statistics - */ - newStatsPath: string; - /** - * The sha of the target dataset. - */ - targetSha: string; -} - - -/** - * A compiled upgrade. - * The upgrade is spread among multiple files. - */ -interface MultiFileCompiledUpgrades extends CompiledUpgradesBase { - /** - * The path to the new dataset dbscheme - */ - newDbscheme: string; - /** - * The steps in the upgrade path - */ - scripts: CompiledUpgradeScript[]; - /** - * Will never exist in an old result - */ - compiledUpgradeFile?: never; -} - - -/** - * A compiled upgrade. - * The upgrade is in a single file. - */ -export interface SingleFileCompiledUpgrades extends CompiledUpgradesBase { - /** - * The steps in the upgrade path - */ - descriptions: UpgradeDescription[]; - /** - * A path to a file containing the upgrade - */ - compiledUpgradeFile: string; -} - -/** - * A compiled step to upgrade the dataset. - */ -export interface CompiledUpgradeScript { - /** - * A description of the spec - */ - description: UpgradeDescription; - /** - * The path to the dbscheme that this upgrade step - * upgrades to. - */ - newDbschemePath: string; - /** - * The actions required to run this step. - */ - specs: UpgradeAction[]; -} - -/** - * An action used to upgrade a query. - * Only one of the options should be set - */ -export interface UpgradeAction { - deleted?: DeleteSpec; - runQuery?: QloSpec; -} - -/** - * Delete a relation - */ -export interface DeleteSpec { - /** - * The name of the relation to delete - */ - relationToDelete: string; -} - -/** - * Run a qlo to provide a relation - */ -export interface QloSpec { - /** - * The name of the relation to create/replace - */ - newRelation: string; - /** - * The Uri of the qlo to run - */ - qloUri: string; -} - -/** - * Parameters to clear the cache - */ -export interface ClearCacheParams { - /** - * The dataset for which we want to clear the cache - */ - db: Dataset; - /** - * Whether the cache should actually be cleared. - */ - dryRun: boolean; -} - -/** - * Parameters to start a new structured log - */ - export interface StartLogParams { - /** - * The dataset for which we want to start a new structured log - */ - db: Dataset; - /** - * The path where we want to place the new structured log - */ - logPath: string; -} - -/** - * Parameters to terminate a structured log - */ - export interface EndLogParams { - /** - * The dataset for which we want to terminated the log - */ - db: Dataset; - /** - * The path of the log to terminate, will be a no-op if we aren't logging here - */ - logPath: string; -} - -/** - * Parameters for trimming the cache of a dataset - */ -export interface TrimCacheParams { - /** - * The dataset that we want to trim the cache of. - */ - db: Dataset; -} - - -/** - * A ql dataset - */ -export interface Dataset { - /** - * The path to the dataset - */ - dbDir: string; - /** - * The name of the working set (normally "default") - */ - workingSet: string; -} - -/** - * The result of trimming or clearing the cache. - */ -export interface ClearCacheResult { - /** - * A user friendly message saying what was or would be - * deleted. - */ - deletionMessage: string; -} - -/** - * The result of starting a new structured log. - */ -export interface StartLogResult { - /** - * A user friendly message saying what happened. - */ - outcomeMessage: string; -} - -/** - * The result of terminating a structured log. - */ -export interface EndLogResult { - /** - * A user friendly message saying what happened. - */ - outcomeMessage: string; -} - -/** - * Parameters for running a set of queries - */ -export interface EvaluateQueriesParams { - /** - * The dataset to run on - */ - db: Dataset; - /** - * An identifier used in callbacks to identify this run. - */ - evaluateId: number; - /** - * The queries to run - */ - queries: QueryToRun[]; - /** - * Whether the evaluator should stop on a non fatal-error - */ - stopOnError: boolean; - /** - * Whether the evaluator should assume this is the final - * run on this dataset before it's cache would be deleted. - */ - useSequenceHint: boolean; -} - -export type TemplateDefinitions = { [key: string]: TemplateSource } - -export interface MlModel { - /** A URI pointing to the root directory of the model. */ - uri: string; -} - -/** - * A single query that should be run - */ -export interface QueryToRun { - /** - * The id of this query within the run - */ - id: number; - /** - * A uri pointing to the qlo to run. - */ - qlo: string; - /** - * A uri pointing to the compiled upgrade file. - */ - compiledUpgrade?: string; - /** - * The path where we should save this queries results - */ - resultsPath: string; - /** - * The per stage timeout (0 for no timeout) - */ - timeoutSecs: number; - /** - * Values to set for each template - */ - templateValues?: TemplateDefinitions; - /** - * Whether templates without values in the templateValues - * map should be set to the empty set or give an error. - */ - allowUnknownTemplates: boolean; - /** - * The list of ML models that should be made available - * when evaluating the query. - */ - availableMlModels?: MlModel[]; -} - -/** - * The source of templates. Only one - */ -export interface TemplateSource { - /** - * Do basic interpretation of query results and - * use the interpreted results in the query. - * This should only be used to support legacy filter - * queries. - */ - interpretedInput?: ProblemResults; - /** - * Use the explicitly listed values - */ - values?: RelationValues; -} - -/** - * A relation as a list of tuples - */ -export interface RelationValues { - tuples: Value[][]; -} - -/** - * A single primitive value for templates. - * Only one case should be set. - */ -export interface Value { - booleanValue?: boolean; - dateValue?: string; - doubleValue?: number; - intValue?: number; - stringValue?: string; -} - -/** - * A relation made by interpreting the results of a problem or metric query - * to be used as the input to a filter query. - */ -export interface ProblemResults { - /** - * The path to the original query. - */ - queryPath: string; - /** - * The way of obtaining the queries - */ - results: ResultSet; - /** - * Whether the results are for a defect filter or a metric filter. - */ - type: ResultType; -} - -/** - * The type of results that are going to be sent into the filter query. - */ -export enum ResultType { - METRIC = 0, - DEFECT = 1, -} - -/** - * The way of obtaining the results - */ -export interface ResultSet { - /** - * Via an earlier query in the evaluation run - */ - precedingQuery?: number; - /** - * Directly from an existing results set. - */ - resultsFile?: string; -} - -/** - * The type returned when the evaluation is complete - */ -export type EvaluationComplete = Record; - -/** - * The result of a single query - */ -export interface EvaluationResult { - /** - * The id of the run that this query was in - */ - runId: number; - /** - * The id of the query within the run - */ - queryId: number; - /** - * The type of the result. See QueryResultType for - * possible meanings. Any other result should be interpreted as an error. - */ - resultType: QueryResultType; - /** - * The wall clock time it took to evaluate the query. - * The time is from when we initially tried to evaluate the query - * to when we get the results. Hence with parallel evaluation the times may - * look odd. - */ - evaluationTime: number; - /** - * An error message if an error happened - */ - message?: string; - - /** - * Full path to file with all log messages emitted while this query was active, if one exists - */ - logFileLocation?: string; -} - -export type QueryResultType = number; -/** - * The result of running a query. This namespace is intentionally not - * an enum, see "for the sake of extensibility" comment above. - */ -// eslint-disable-next-line @typescript-eslint/no-namespace -export namespace QueryResultType { - /** - * The query ran successfully - */ - export const SUCCESS = 0; - /** - * The query failed due to an reason - * that isn't listed - */ - export const OTHER_ERROR = 1; - /** - * The query failed due to running out of - * memory - */ - export const OOM = 2; - /** - * The query failed due to exceeding the timeout - */ - export const TIMEOUT = 3; - /** - * The query failed because it was cancelled. - */ - export const CANCELLATION = 4; -} - -/** - * Parameters for running an upgrade - */ -export interface RunUpgradeParams { - /** - * The dataset to upgrade - */ - db: Dataset; - /** - * The per stage timeout in seconds. Use 0 - * for no timeout. - */ - timeoutSecs: number; - /** - * The upgrade to run - */ - toRun: CompiledUpgrades; -} - -/** - * The result of running an upgrade - */ -export interface RunUpgradeResult { - /** - * The type of the result. See QueryResultType for - * possible meanings. Any other result should be interpreted as an error. - */ - resultType: QueryResultType; - /** - * The error message if an error occurred - */ - error?: string; - /** - * The new dbscheme sha. - */ - finalSha: string; -} - -export interface RegisterDatabasesParams { - databases: Dataset[]; -} - -export interface DeregisterDatabasesParams { - databases: Dataset[]; -} - -export type RegisterDatabasesResult = { - registeredDatabases: Dataset[]; -}; - -export type DeregisterDatabasesResult = { - registeredDatabases: Dataset[]; -}; - -/** - * Type for any action that could have progress messages. - */ -export interface WithProgressId { - /** - * The main body - */ - body: T; - /** - * The id used to report progress updates - */ - progressId: number; -} - -export interface ProgressMessage { - /** - * The id of the operation that is running - */ - id: number; - /** - * The current step - */ - step: number; - /** - * The maximum step. This *should* be constant for a single job. - */ - maxStep: number; - /** - * The current progress message - */ - message: string; -} - -/** - * Check a Ql query for errors without compiling it - */ -export const checkQuery = new rpc.RequestType, CheckQueryResult, void, void>('compilation/checkQuery'); -/** - * Compile a Ql query into a qlo - */ -export const compileQuery = new rpc.RequestType, CheckQueryResult, void, void>('compilation/compileQuery'); -/** - * Compile a dil query into a qlo - */ -export const compileDilQuery = new rpc.RequestType, CheckQueryResult, void, void>('compilation/compileDilQuery'); - - -/** - * Check if there is a valid upgrade path between two dbschemes. - */ -export const checkUpgrade = new rpc.RequestType, CheckUpgradeResult, void, void>('compilation/checkUpgrade'); -/** - * Compile an upgrade script to upgrade a dataset. - */ -export const compileUpgrade = new rpc.RequestType, CompileUpgradeResult, void, void>('compilation/compileUpgrade'); -/** - * Compile an upgrade script to upgrade a dataset. - */ -export const compileUpgradeSequence = new rpc.RequestType, CompileUpgradeSequenceResult, void, void>('compilation/compileUpgradeSequence'); - -/** - * Start a new structured log in the evaluator, terminating the previous one if it exists - */ - export const startLog = new rpc.RequestType, StartLogResult, void, void>('evaluation/startLog'); - -/** - * Terminate a structured log in the evaluator. Is a no-op if we aren't logging to the given location - */ - export const endLog = new rpc.RequestType, EndLogResult, void, void>('evaluation/endLog'); - -/** - * Clear the cache of a dataset - */ -export const clearCache = new rpc.RequestType, ClearCacheResult, void, void>('evaluation/clearCache'); -/** - * Trim the cache of a dataset - */ -export const trimCache = new rpc.RequestType, ClearCacheResult, void, void>('evaluation/trimCache'); - -/** - * Run some queries on a dataset - */ -export const runQueries = new rpc.RequestType, EvaluationComplete, void, void>('evaluation/runQueries'); - -/** - * Run upgrades on a dataset - */ -export const runUpgrade = new rpc.RequestType, RunUpgradeResult, void, void>('evaluation/runUpgrade'); - -export const registerDatabases = new rpc.RequestType< - WithProgressId, - RegisterDatabasesResult, - void, - void ->('evaluation/registerDatabases'); - -export const deregisterDatabases = new rpc.RequestType< - WithProgressId, - DeregisterDatabasesResult, - void, - void ->('evaluation/deregisterDatabases'); - -/** - * Request returned to the client to notify completion of a query. - * The full runQueries job is completed when all queries are acknowledged. - */ -export const completeQuery = new rpc.RequestType, void, void>('evaluation/queryCompleted'); - -/** - * A notification that the progress has been changed. - */ -export const progress = new rpc.NotificationType('ql/progressUpdated'); diff --git a/extensions/ql-vscode/src/pure/result-keys.ts b/extensions/ql-vscode/src/pure/result-keys.ts deleted file mode 100644 index a6703cadc17..00000000000 --- a/extensions/ql-vscode/src/pure/result-keys.ts +++ /dev/null @@ -1,95 +0,0 @@ -import * as sarif from 'sarif'; - -/** - * Identifies one of the results in a result set by its index in the result list. - */ -export interface Result { - resultIndex: number; -} - -/** - * Identifies one of the paths associated with a result. - */ -export interface Path extends Result { - pathIndex: number; -} - -/** - * Identifies one of the nodes in a path. - */ -export interface PathNode extends Path { - pathNodeIndex: number; -} - -/** Alias for `undefined` but more readable in some cases */ -export const none: PathNode | undefined = undefined; - -/** - * Looks up a specific result in a result set. - */ -export function getResult(sarif: sarif.Log, key: Result): sarif.Result | undefined { - if (sarif.runs.length === 0) return undefined; - if (sarif.runs[0].results === undefined) return undefined; - const results = sarif.runs[0].results; - return results[key.resultIndex]; -} - -/** - * Looks up a specific path in a result set. - */ -export function getPath(sarif: sarif.Log, key: Path): sarif.ThreadFlow | undefined { - const result = getResult(sarif, key); - if (result === undefined) return undefined; - let index = -1; - if (result.codeFlows === undefined) return undefined; - for (const codeFlows of result.codeFlows) { - for (const threadFlow of codeFlows.threadFlows) { - ++index; - if (index == key.pathIndex) - return threadFlow; - } - } - return undefined; -} - -/** - * Looks up a specific path node in a result set. - */ -export function getPathNode(sarif: sarif.Log, key: PathNode): sarif.Location | undefined { - const path = getPath(sarif, key); - if (path === undefined) return undefined; - return path.locations[key.pathNodeIndex]; -} - -/** - * Returns true if the two keys are both `undefined` or contain the same set of indices. - */ -export function equals(key1: PathNode | undefined, key2: PathNode | undefined): boolean { - if (key1 === key2) return true; - if (key1 === undefined || key2 === undefined) return false; - return key1.resultIndex === key2.resultIndex && key1.pathIndex === key2.pathIndex && key1.pathNodeIndex === key2.pathNodeIndex; -} - -/** - * Returns true if the two keys contain the same set of indices and neither are `undefined`. - */ -export function equalsNotUndefined(key1: PathNode | undefined, key2: PathNode | undefined): boolean { - if (key1 === undefined || key2 === undefined) return false; - return key1.resultIndex === key2.resultIndex && key1.pathIndex === key2.pathIndex && key1.pathNodeIndex === key2.pathNodeIndex; -} - -/** - * Returns the list of paths in the given SARIF result. - * - * Path nodes indices are relative to this flattened list. - */ -export function getAllPaths(result: sarif.Result): sarif.ThreadFlow[] { - if (result.codeFlows === undefined) return []; - const paths = []; - for (const codeFlow of result.codeFlows) { - for (const threadFlow of codeFlow.threadFlows) { - paths.push(threadFlow); - } - } - return paths; -} diff --git a/extensions/ql-vscode/src/pure/sarif-utils.ts b/extensions/ql-vscode/src/pure/sarif-utils.ts deleted file mode 100644 index c0abc75e9dc..00000000000 --- a/extensions/ql-vscode/src/pure/sarif-utils.ts +++ /dev/null @@ -1,238 +0,0 @@ -import * as Sarif from 'sarif'; -import { HighlightedRegion } from '../remote-queries/shared/analysis-result'; -import { ResolvableLocationValue } from './bqrs-cli-types'; - -export interface SarifLink { - dest: number; - text: string; -} - -// The type of a result that has no associated location. -// hint is a string intended for display to the user -// that explains why there is no location. -interface NoLocation { - hint: string; -} - -type ParsedSarifLocation = - | (ResolvableLocationValue & { - - userVisibleFile: string; - }) - // Resolvable locations have a `uri` field, but it will sometimes include - // a source location prefix, which contains build-specific information the user - // doesn't really need to see. We ensure that `userVisibleFile` will not contain - // that, and is appropriate for display in the UI. - | NoLocation; - -export type SarifMessageComponent = string | SarifLink - -/** - * Unescape "[", "]" and "\\" like in sarif plain text messages - */ -export function unescapeSarifText(message: string): string { - return message - .replace(/\\\[/g, '[') - .replace(/\\\]/g, ']') - .replace(/\\\\/g, '\\'); -} - -export function parseSarifPlainTextMessage(message: string): SarifMessageComponent[] { - const results: SarifMessageComponent[] = []; - - // We want something like "[linkText](4)", except that "[" and "]" may be escaped. The lookbehind asserts - // that the initial [ is not escaped. Then we parse a link text with "[" and "]" escaped. Then we parse the numerical target. - // Technically we could have any uri in the target but we don't output that yet. - // The possibility of escaping outside the link is not mentioned in the sarif spec but we always output sartif this way. - const linkRegex = /(?<=(?([^\\\]\[]|\\\\|\\\]|\\\[)*)\]\((?[0-9]+)\)/g; - let result: RegExpExecArray | null; - let curIndex = 0; - while ((result = linkRegex.exec(message)) !== null) { - results.push(unescapeSarifText(message.substring(curIndex, result.index))); - const linkText = result.groups!['linkText']; - const linkTarget = +result.groups!['linkTarget']; - results.push({ dest: linkTarget, text: unescapeSarifText(linkText) }); - curIndex = result.index + result[0].length; - } - results.push(unescapeSarifText(message.substring(curIndex, message.length))); - return results; -} - - -/** - * Computes a path normalized to reflect conventional normalization - * of windows paths into zip archive paths. - * @param sourceLocationPrefix The source location prefix of a database. May be - * unix style `/foo/bar/baz` or windows-style `C:\foo\bar\baz`. - * @param sarifRelativeUri A uri relative to sourceLocationPrefix. - * - * @returns A URI string that is valid for the `.file` field of a `FivePartLocation`: - * directory separators are normalized, but drive letters `C:` may appear. - */ -export function getPathRelativeToSourceLocationPrefix( - sourceLocationPrefix: string, - sarifRelativeUri: string -) { - // convert a platform specific path into encoded path uri segments - // need to be careful about drive letters and ensure that there - // is a starting '/' - let prefix = ''; - if (sourceLocationPrefix[1] === ':') { - // assume this is a windows drive separator - prefix = sourceLocationPrefix.substring(0, 2); - sourceLocationPrefix = sourceLocationPrefix.substring(2); - } - const normalizedSourceLocationPrefix = prefix + sourceLocationPrefix.replace(/\\/g, '/') - .split('/') - .map(encodeURIComponent) - .join('/'); - const slashPrefix = normalizedSourceLocationPrefix.startsWith('/') ? '' : '/'; - return `file:${slashPrefix + normalizedSourceLocationPrefix}/${sarifRelativeUri}`; -} - -/** - * - * @param loc specifies the database-relative location of the source location - * @param sourceLocationPrefix a file path (usually a full path) to the database containing the source location. - */ -export function parseSarifLocation( - loc: Sarif.Location, - sourceLocationPrefix: string -): ParsedSarifLocation { - const physicalLocation = loc.physicalLocation; - if (physicalLocation === undefined) - return { hint: 'no physical location' }; - if (physicalLocation.artifactLocation === undefined) - return { hint: 'no artifact location' }; - if (physicalLocation.artifactLocation.uri === undefined) - return { hint: 'artifact location has no uri' }; - - // This is not necessarily really an absolute uri; it could either be a - // file uri or a relative uri. - const uri = physicalLocation.artifactLocation.uri; - - const fileUriRegex = /^file:/; - const hasFilePrefix = uri.match(fileUriRegex); - const effectiveLocation = hasFilePrefix - ? uri - : getPathRelativeToSourceLocationPrefix(sourceLocationPrefix, uri); - const userVisibleFile = decodeURIComponent(hasFilePrefix - ? uri.replace(fileUriRegex, '') - : uri); - - if (physicalLocation.region === undefined) { - // If the region property is absent, the physicalLocation object refers to the entire file. - // Source: https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Toc16012638. - return { - uri: effectiveLocation, - userVisibleFile - } as ParsedSarifLocation; - } else { - const region = parseSarifRegion(physicalLocation.region); - - return { - uri: effectiveLocation, - userVisibleFile, - ...region - }; - } -} - -export function parseSarifRegion( - region: Sarif.Region -): { - startLine: number, - endLine: number, - startColumn: number, - endColumn: number -} { - // The SARIF we're given should have a startLine, but we - // fall back to 1, just in case something has gone wrong. - const startLine = region.startLine ?? 1; - - // These defaults are from SARIF 2.1.0 spec, section 3.30.2, "Text Regions" - // https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Ref493492556 - const endLine = region.endLine === undefined ? startLine : region.endLine; - const startColumn = region.startColumn === undefined ? 1 : region.startColumn; - - // Our tools should always supply `endColumn` field, which is fortunate, since - // the SARIF spec says that it defaults to the end of the line, whose - // length we don't know at this point in the code. We fall back to 1, - // just in case something has gone wrong. - // - // It is off by one with respect to the way vscode counts columns in selections. - const endColumn = (region.endColumn ?? 1) - 1; - - return { - startLine, - startColumn, - endLine, - endColumn - }; -} - -export function isNoLocation(loc: ParsedSarifLocation): loc is NoLocation { - return 'hint' in loc; -} - -// Some helpers for highlighting specific regions from a SARIF code snippet - -/** - * Checks whether a particular line (determined by its line number in the original file) - * is part of the highlighted region of a SARIF code snippet. - */ -export function shouldHighlightLine( - lineNumber: number, - highlightedRegion: HighlightedRegion -): boolean { - if (lineNumber < highlightedRegion.startLine) { - return false; - } - - if (highlightedRegion.endLine == undefined) { - return lineNumber == highlightedRegion.startLine; - } - - return lineNumber <= highlightedRegion.endLine; -} - -/** - * A line of code split into: plain text before the highlighted section, the highlighted - * text itself, and plain text after the highlighted section. - */ -export interface PartiallyHighlightedLine { - plainSection1: string; - highlightedSection: string; - plainSection2: string; -} - -/** - * Splits a line of code into the highlighted and non-highlighted sections. - */ -export function parseHighlightedLine( - line: string, - lineNumber: number, - highlightedRegion: HighlightedRegion -): PartiallyHighlightedLine { - const isSingleLineHighlight = highlightedRegion.endLine === undefined; - const isFirstHighlightedLine = lineNumber === highlightedRegion.startLine; - const isLastHighlightedLine = lineNumber === highlightedRegion.endLine; - - const highlightStartColumn = isSingleLineHighlight - ? highlightedRegion.startColumn - : isFirstHighlightedLine - ? highlightedRegion.startColumn - : 0; - - const highlightEndColumn = isSingleLineHighlight - ? highlightedRegion.endColumn - : isLastHighlightedLine - ? highlightedRegion.endColumn - : line.length + 1; - - const plainSection1 = line.substring(0, highlightStartColumn - 1); - const highlightedSection = line.substring(highlightStartColumn - 1, highlightEndColumn - 1); - const plainSection2 = line.substring(highlightEndColumn - 1, line.length); - - return { plainSection1, highlightedSection, plainSection2 }; -} diff --git a/extensions/ql-vscode/src/pure/time.ts b/extensions/ql-vscode/src/pure/time.ts deleted file mode 100644 index 8e14009fcdb..00000000000 --- a/extensions/ql-vscode/src/pure/time.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Contains an assortment of helper constants and functions for working with time, dates, and durations. - */ - -export const ONE_MINUTE_IN_MS = 1000 * 60; -export const ONE_HOUR_IN_MS = ONE_MINUTE_IN_MS * 60; -export const TWO_HOURS_IN_MS = ONE_HOUR_IN_MS * 2; -export const THREE_HOURS_IN_MS = ONE_HOUR_IN_MS * 3; -export const ONE_DAY_IN_MS = ONE_HOUR_IN_MS * 24; - -// These are approximations -export const ONE_MONTH_IN_MS = ONE_DAY_IN_MS * 30; -export const ONE_YEAR_IN_MS = ONE_DAY_IN_MS * 365; - -const durationFormatter = new Intl.RelativeTimeFormat('en', { - numeric: 'auto', -}); - -/** - * Converts a number of milliseconds into a human-readable string with units, indicating a relative time in the past or future. - * - * @param relativeTimeMillis The duration in milliseconds. A negative number indicates a duration in the past. And a positive number is - * the future. - * @returns A humanized duration. For example, "in 2 minutes", "2 minutes ago", "yesterday", or "tomorrow". - */ -export function humanizeRelativeTime(relativeTimeMillis?: number) { - if (relativeTimeMillis === undefined) { - return ''; - } - - if (Math.abs(relativeTimeMillis) < ONE_HOUR_IN_MS) { - return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_MINUTE_IN_MS), 'minute'); - } else if (Math.abs(relativeTimeMillis) < ONE_DAY_IN_MS) { - return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_HOUR_IN_MS), 'hour'); - } else if (Math.abs(relativeTimeMillis) < ONE_MONTH_IN_MS) { - return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_DAY_IN_MS), 'day'); - } else if (Math.abs(relativeTimeMillis) < ONE_YEAR_IN_MS) { - return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_MONTH_IN_MS), 'month'); - } else { - return durationFormatter.format(Math.floor(relativeTimeMillis / ONE_YEAR_IN_MS), 'year'); - } -} - -/** - * Converts a number of milliseconds into a human-readable string with units, indicating an amount of time. - * Negative numbers have no meaning and are considered to be "Less than a minute". - * - * @param millis The number of milliseconds to convert. - * @returns A humanized duration. For example, "2 minutes", "2 hours", "2 days", or "2 months". - */ -export function humanizeUnit(millis?: number): string { - // assume a blank or empty string is a zero - // assume anything less than 0 is a zero - if (!millis || millis < ONE_MINUTE_IN_MS) { - return 'Less than a minute'; - } - let unit: string; - let unitDiff: number; - if (millis < ONE_HOUR_IN_MS) { - unit = 'minute'; - unitDiff = Math.floor(millis / ONE_MINUTE_IN_MS); - } else if (millis < ONE_DAY_IN_MS) { - unit = 'hour'; - unitDiff = Math.floor(millis / ONE_HOUR_IN_MS); - } else if (millis < ONE_MONTH_IN_MS) { - unit = 'day'; - unitDiff = Math.floor(millis / ONE_DAY_IN_MS); - } else if (millis < ONE_YEAR_IN_MS) { - unit = 'month'; - unitDiff = Math.floor(millis / ONE_MONTH_IN_MS); - } else { - unit = 'year'; - unitDiff = Math.floor(millis / ONE_YEAR_IN_MS); - } - - return createFormatter(unit).format(unitDiff); -} - -function createFormatter(unit: string) { - return Intl.NumberFormat('en-US', { - style: 'unit', - unit, - unitDisplay: 'long' - }); -} diff --git a/extensions/ql-vscode/src/qltest-discovery.ts b/extensions/ql-vscode/src/qltest-discovery.ts deleted file mode 100644 index a3129cf8113..00000000000 --- a/extensions/ql-vscode/src/qltest-discovery.ts +++ /dev/null @@ -1,218 +0,0 @@ -import * as path from 'path'; -import { Discovery } from './discovery'; -import { EventEmitter, Event, Uri, RelativePattern, WorkspaceFolder, env } from 'vscode'; -import { MultiFileSystemWatcher } from './vscode-utils/multi-file-system-watcher'; -import { CodeQLCliServer } from './cli'; -import * as fs from 'fs-extra'; - -/** - * A node in the tree of tests. This will be either a `QLTestDirectory` or a `QLTestFile`. - */ -export abstract class QLTestNode { - constructor(private _path: string, private _name: string) { - } - - public get path(): string { - return this._path; - } - - public get name(): string { - return this._name; - } - - public abstract get children(): readonly QLTestNode[]; - - public abstract finish(): void; -} - -/** - * A directory containing one or more QL tests or other test directories. - */ -export class QLTestDirectory extends QLTestNode { - - constructor(_path: string, _name: string, private _children: QLTestNode[] = []) { - super(_path, _name); - } - - public get children(): readonly QLTestNode[] { - return this._children; - } - - public addChild(child: QLTestNode): void { - this._children.push(child); - } - - public createDirectory(relativePath: string): QLTestDirectory { - const dirName = path.dirname(relativePath); - if (dirName === '.') { - return this.createChildDirectory(relativePath); - } - else { - const parent = this.createDirectory(dirName); - return parent.createDirectory(path.basename(relativePath)); - } - } - - public finish(): void { - // remove empty directories - this._children.filter(child => - child instanceof QLTestFile || child.children.length > 0 - ); - this._children.sort((a, b) => a.name.localeCompare(b.name, env.language)); - this._children.forEach((child, i) => { - child.finish(); - if (child.children?.length === 1 && child.children[0] instanceof QLTestDirectory) { - // collapse children - const replacement = new QLTestDirectory( - child.children[0].path, - child.name + ' / ' + child.children[0].name, - Array.from(child.children[0].children) - ); - this._children[i] = replacement; - } - }); - } - - private createChildDirectory(name: string): QLTestDirectory { - const existingChild = this._children.find((child) => child.name === name); - if (existingChild !== undefined) { - return existingChild as QLTestDirectory; - } - else { - const newChild = new QLTestDirectory(path.join(this.path, name), name); - this.addChild(newChild); - return newChild; - } - } -} - -/** - * A single QL test. This will be either a `.ql` file or a `.qlref` file. - */ -export class QLTestFile extends QLTestNode { - constructor(_path: string, _name: string) { - super(_path, _name); - } - - public get children(): readonly QLTestNode[] { - return []; - } - - public finish(): void { - /**/ - } -} - -/** - * The results of discovering QL tests. - */ -interface QLTestDiscoveryResults { - /** - * A directory that contains one or more QL Tests, or other QLTestDirectories. - */ - testDirectory: QLTestDirectory | undefined; - - /** - * The file system path to a directory to watch. If any ql or qlref file changes in - * this directory, then this signifies a change in tests. - */ - watchPath: string; -} - -/** - * Discovers all QL tests contained in the QL packs in a given workspace folder. - */ -export class QLTestDiscovery extends Discovery { - private readonly _onDidChangeTests = this.push(new EventEmitter()); - private readonly watcher: MultiFileSystemWatcher = this.push(new MultiFileSystemWatcher()); - private _testDirectory: QLTestDirectory | undefined; - - constructor( - private readonly workspaceFolder: WorkspaceFolder, - private readonly cliServer: CodeQLCliServer - ) { - super('QL Test Discovery'); - - this.push(this.watcher.onDidChange(this.handleDidChange, this)); - } - - /** - * Event to be fired when the set of discovered tests may have changed. - */ - public get onDidChangeTests(): Event { - return this._onDidChangeTests.event; - } - - /** - * The root directory. There is at least one test in this directory, or - * in a subdirectory of this. - */ - public get testDirectory(): QLTestDirectory | undefined { - return this._testDirectory; - } - - private handleDidChange(uri: Uri): void { - if (!QLTestDiscovery.ignoreTestPath(uri.fsPath)) { - this.refresh(); - } - } - protected async discover(): Promise { - const testDirectory = await this.discoverTests(); - return { - testDirectory, - watchPath: this.workspaceFolder.uri.fsPath - }; - } - - protected update(results: QLTestDiscoveryResults): void { - this._testDirectory = results.testDirectory; - - this.watcher.clear(); - // Watch for changes to any `.ql` or `.qlref` file in any of the QL packs that contain tests. - this.watcher.addWatch(new RelativePattern(results.watchPath, '**/*.{ql,qlref}')); - // need to explicitly watch for changes to directories themselves. - this.watcher.addWatch(new RelativePattern(results.watchPath, '**/')); - this._onDidChangeTests.fire(undefined); - } - - /** - * Discover all QL tests in the specified directory and its subdirectories. - * @returns A `QLTestDirectory` object describing the contents of the directory, or `undefined` if - * no tests were found. - */ - private async discoverTests(): Promise { - const fullPath = this.workspaceFolder.uri.fsPath; - const name = this.workspaceFolder.name; - const rootDirectory = new QLTestDirectory(fullPath, name); - - // Don't try discovery on workspace folders that don't exist on the filesystem - if ((await fs.pathExists(fullPath))) { - const resolvedTests = (await this.cliServer.resolveTests(fullPath)) - .filter((testPath) => !QLTestDiscovery.ignoreTestPath(testPath)); - for (const testPath of resolvedTests) { - const relativePath = path.normalize(path.relative(fullPath, testPath)); - const dirName = path.dirname(relativePath); - const parentDirectory = rootDirectory.createDirectory(dirName); - parentDirectory.addChild(new QLTestFile(testPath, path.basename(testPath))); - } - - rootDirectory.finish(); - } - return rootDirectory; - } - - /** - * Determine if the specified QL test should be ignored based on its filename. - * @param testPath Path to the test file. - */ - private static ignoreTestPath(testPath: string): boolean { - switch (path.extname(testPath).toLowerCase()) { - case '.ql': - case '.qlref': - return path.basename(testPath).startsWith('__'); - - default: - return false; - } - } -} diff --git a/extensions/ql-vscode/src/queries-panel/queries-module.ts b/extensions/ql-vscode/src/queries-panel/queries-module.ts new file mode 100644 index 00000000000..4956d068ea4 --- /dev/null +++ b/extensions/ql-vscode/src/queries-panel/queries-module.ts @@ -0,0 +1,57 @@ +import { extLogger } from "../common/logging/vscode"; +import type { App } from "../common/app"; +import { DisposableObject } from "../common/disposable-object"; +import { QueriesPanel } from "./queries-panel"; +import { QueryDiscovery } from "./query-discovery"; +import { QueryPackDiscovery } from "./query-pack-discovery"; +import type { LanguageContextStore } from "../language-context-store"; +import type { TreeViewSelectionChangeEvent } from "vscode"; +import type { QueryTreeViewItem } from "./query-tree-view-item"; + +export class QueriesModule extends DisposableObject { + private queriesPanel: QueriesPanel | undefined; + private readonly onDidChangeSelectionEmitter = this.push( + this.app.createEventEmitter< + TreeViewSelectionChangeEvent + >(), + ); + + public readonly onDidChangeSelection = this.onDidChangeSelectionEmitter.event; + + private constructor(readonly app: App) { + super(); + } + + public static initialize( + app: App, + languageContext: LanguageContextStore, + ): QueriesModule { + const queriesModule = new QueriesModule(app); + app.subscriptions.push(queriesModule); + + queriesModule.initialize(app, languageContext); + return queriesModule; + } + + private initialize(app: App, langauageContext: LanguageContextStore): void { + void extLogger.log("Initializing queries panel."); + + const queryPackDiscovery = new QueryPackDiscovery(); + this.push(queryPackDiscovery); + void queryPackDiscovery.initialRefresh(); + + const queryDiscovery = new QueryDiscovery( + app, + queryPackDiscovery, + langauageContext, + ); + this.push(queryDiscovery); + void queryDiscovery.initialRefresh(); + + this.queriesPanel = new QueriesPanel(queryDiscovery, app); + this.queriesPanel.onDidChangeSelection((event) => + this.onDidChangeSelectionEmitter.fire(event), + ); + this.push(this.queriesPanel); + } +} diff --git a/extensions/ql-vscode/src/queries-panel/queries-panel.ts b/extensions/ql-vscode/src/queries-panel/queries-panel.ts new file mode 100644 index 00000000000..d04470669a9 --- /dev/null +++ b/extensions/ql-vscode/src/queries-panel/queries-panel.ts @@ -0,0 +1,116 @@ +import { DisposableObject } from "../common/disposable-object"; +import { QueryTreeDataProvider } from "./query-tree-data-provider"; +import type { QueryDiscovery } from "./query-discovery"; +import type { + Event, + TextEditor, + TreeView, + TreeViewSelectionChangeEvent, +} from "vscode"; +import { window } from "vscode"; +import type { App } from "../common/app"; +import type { QueryTreeViewItem } from "./query-tree-view-item"; + +export class QueriesPanel extends DisposableObject { + private readonly dataProvider: QueryTreeDataProvider; + private readonly treeView: TreeView; + + public constructor( + queryDiscovery: QueryDiscovery, + readonly app: App, + ) { + super(); + + this.dataProvider = new QueryTreeDataProvider(queryDiscovery, app); + this.push(this.dataProvider); + + this.treeView = window.createTreeView("codeQLQueries", { + treeDataProvider: this.dataProvider, + }); + this.push(this.treeView); + + this.subscribeToTreeSelectionEvents(); + } + + public get onDidChangeSelection(): Event< + TreeViewSelectionChangeEvent + > { + return this.treeView.onDidChangeSelection; + } + + private subscribeToTreeSelectionEvents(): void { + // Keep track of whether the user has changed their text editor while + // the tree view was not visible. If so, we will focus the text editor + // in the tree view when it becomes visible. + let changedTextEditor: TextEditor | undefined = undefined; + + window.onDidChangeActiveTextEditor((textEditor) => { + if (!this.treeView.visible) { + changedTextEditor = textEditor; + + return; + } + + // Reset the changedTextEditor variable so we don't try to show it when + // the tree view becomes next visible. + changedTextEditor = undefined; + + if (!textEditor) { + return; + } + + void this.revealTextEditor(textEditor); + }); + + this.treeView.onDidChangeVisibility((e) => { + if (!e.visible) { + return; + } + + if (!changedTextEditor) { + return; + } + + void this.revealTextEditor(changedTextEditor); + }); + + // If there is an active text editor when activating the extension, we want to show it in the tree view. + if (window.activeTextEditor) { + // We need to wait for the data provider to load its data. Without this, we will end up in a situation + // where we're trying to show an item that does not exist yet since the query discoverer has not yet + // finished running. + const initialEventDisposable = this.dataProvider.onDidChangeTreeData( + () => { + if (window.activeTextEditor && this.treeView.visible) { + void this.revealTextEditor(window.activeTextEditor); + } + + // We only want to listen to this event once, so dispose of the listener to unsubscribe. + initialEventDisposable.dispose(); + }, + ); + } + } + + private revealTextEditor(textEditor: TextEditor): void { + const filePath = textEditor.document.uri.fsPath; + + const item = this.dataProvider.getTreeItemByPath(filePath); + if (!item) { + return; + } + + if ( + this.treeView.selection.length === 1 && + this.treeView.selection[0].path === item.path + ) { + // The item is already selected + return; + } + + void this.treeView.reveal(item, { + select: true, + focus: false, + }); + } +} diff --git a/extensions/ql-vscode/src/queries-panel/query-discovery.ts b/extensions/ql-vscode/src/queries-panel/query-discovery.ts new file mode 100644 index 00000000000..3f66c715b81 --- /dev/null +++ b/extensions/ql-vscode/src/queries-panel/query-discovery.ts @@ -0,0 +1,127 @@ +import { dirname, basename, normalize, relative } from "path"; +import type { Event } from "vscode"; +import type { App } from "../common/app"; +import type { FileTreeNode } from "../common/file-tree-nodes"; +import { FileTreeDirectory, FileTreeLeaf } from "../common/file-tree-nodes"; +import type { QueryDiscoverer } from "./query-tree-data-provider"; +import { FilePathDiscovery } from "../common/vscode/file-path-discovery"; +import { containsPath } from "../common/files"; +import { getOnDiskWorkspaceFoldersObjects } from "../common/vscode/workspace-folders"; +import type { QueryLanguage } from "../common/query-language"; +import type { LanguageContextStore } from "../language-context-store"; +import type { AppEvent, AppEventEmitter } from "../common/events"; + +const QUERY_FILE_EXTENSION = ".ql"; + +export interface QueryPackDiscoverer { + getLanguageForQueryFile(queryPath: string): QueryLanguage | undefined; + onDidChangeQueryPacks: Event; +} + +interface Query { + path: string; + language: QueryLanguage | undefined; +} + +/** + * Discovers all query files in the workspace. + */ +export class QueryDiscovery + extends FilePathDiscovery + implements QueryDiscoverer +{ + public readonly onDidChangeQueries: AppEvent; + private readonly onDidChangeQueriesEmitter: AppEventEmitter; + + constructor( + private readonly app: App, + private readonly queryPackDiscovery: QueryPackDiscoverer, + private readonly languageContext: LanguageContextStore, + ) { + super("Query Discovery", `**/*${QUERY_FILE_EXTENSION}`); + + // Set up event emitters + this.onDidChangeQueriesEmitter = this.push(app.createEventEmitter()); + this.onDidChangeQueries = this.onDidChangeQueriesEmitter.event; + + // Handlers + this.push( + this.queryPackDiscovery.onDidChangeQueryPacks( + this.recomputeAllData.bind(this), + ), + ); + this.push( + this.onDidChangePathData(() => { + this.onDidChangeQueriesEmitter.fire(); + }), + ); + this.push( + this.languageContext.onLanguageContextChanged(() => { + this.onDidChangeQueriesEmitter.fire(); + }), + ); + } + + /** + * Return all known queries, represented as a tree. + * + * Trivial directories where there is only one child will be collapsed into a single node. + */ + public buildQueryTree(): Array> | undefined { + const pathData = this.getPathData(); + if (pathData === undefined) { + return undefined; + } + + const roots = []; + for (const workspaceFolder of getOnDiskWorkspaceFoldersObjects()) { + const queriesInRoot = pathData.filter( + (query) => + containsPath(workspaceFolder.uri.fsPath, query.path) && + this.languageContext.shouldInclude(query.language), + ); + if (queriesInRoot.length === 0) { + continue; + } + const root = new FileTreeDirectory( + workspaceFolder.uri.fsPath, + workspaceFolder.name, + this.app.environment, + ); + for (const query of queriesInRoot) { + const dirName = dirname(normalize(relative(root.path, query.path))); + const parentDirectory = root.createDirectory(dirName); + parentDirectory.addChild( + new FileTreeLeaf( + query.path, + basename(query.path), + query.language, + ), + ); + } + root.finish(); + roots.push(root); + } + return roots; + } + + protected async getDataForPath(path: string): Promise { + const language = this.determineQueryLanguage(path); + return { path, language }; + } + + protected pathIsRelevant(path: string): boolean { + return path.endsWith(QUERY_FILE_EXTENSION); + } + + protected shouldOverwriteExistingData( + newData: Query, + existingData: Query, + ): boolean { + return newData.language !== existingData.language; + } + + private determineQueryLanguage(path: string): QueryLanguage | undefined { + return this.queryPackDiscovery.getLanguageForQueryFile(path); + } +} diff --git a/extensions/ql-vscode/src/queries-panel/query-pack-discovery.ts b/extensions/ql-vscode/src/queries-panel/query-pack-discovery.ts new file mode 100644 index 00000000000..94dbbb17237 --- /dev/null +++ b/extensions/ql-vscode/src/queries-panel/query-pack-discovery.ts @@ -0,0 +1,95 @@ +import { basename, dirname } from "path"; +import type { Event } from "vscode"; +import type { QueryLanguage } from "../common/query-language"; +import { FALLBACK_QLPACK_FILENAME, QLPACK_FILENAMES } from "../common/ql"; +import { FilePathDiscovery } from "../common/vscode/file-path-discovery"; +import { containsPath } from "../common/files"; +import { getQlPackLanguage } from "../common/qlpack-language"; +import { getErrorMessage } from "../common/helpers-pure"; + +interface QueryPack { + path: string; + language: QueryLanguage | undefined; +} + +/** + * Discovers all query packs in the workspace. + */ +export class QueryPackDiscovery extends FilePathDiscovery { + constructor() { + super("Query Pack Discovery", `**/{${QLPACK_FILENAMES.join(",")}}`); + } + + /** + * Event that fires when the set of query packs in the workspace changes. + */ + public get onDidChangeQueryPacks(): Event { + return this.onDidChangePathData; + } + + /** + * Given a path of a query file, locate the query pack that contains it and + * return the language of that pack. Returns undefined if no pack is found + * or the pack's language is unknown. + */ + public getLanguageForQueryFile(queryPath: string): QueryLanguage | undefined { + const pathData = this.getPathData(); + if (pathData === undefined) { + return undefined; + } + + // Find all packs in a higher directory than the query + const packs = pathData.filter((queryPack) => + containsPath(dirname(queryPack.path), queryPath), + ); + + // Sort by descreasing path length to find the pack nearest the query + packs.sort((a, b) => b.path.length - a.path.length); + + if (packs.length === 0) { + return undefined; + } + + if (packs.length === 1) { + return packs[0].language; + } + + // If the first two packs are from a different directory, then the first one is the nearest + if (dirname(packs[0].path) !== dirname(packs[1].path)) { + return packs[0].language; + } + + // If the first two packs are from the same directory then look at the filenames + if (basename(packs[0].path) === FALLBACK_QLPACK_FILENAME) { + return packs[0].language; + } else { + return packs[1].language; + } + } + + protected async getDataForPath(path: string): Promise { + let language: QueryLanguage | undefined; + try { + language = await getQlPackLanguage(path); + } catch (err) { + void this.logger.log( + `Query pack discovery failed to determine language for query pack: ${path}\n\tReason: ${getErrorMessage( + err, + )}`, + ); + language = undefined; + } + return { path, language }; + } + + protected pathIsRelevant(path: string): boolean { + return QLPACK_FILENAMES.includes(basename(path)); + } + + protected shouldOverwriteExistingData( + newPack: QueryPack, + existingPack: QueryPack, + ): boolean { + return existingPack.language !== newPack.language; + } +} diff --git a/extensions/ql-vscode/src/queries-panel/query-tree-data-provider.ts b/extensions/ql-vscode/src/queries-panel/query-tree-data-provider.ts new file mode 100644 index 00000000000..cf88545e04c --- /dev/null +++ b/extensions/ql-vscode/src/queries-panel/query-tree-data-provider.ts @@ -0,0 +1,158 @@ +import type { Event, TreeDataProvider, TreeItem } from "vscode"; +import { EventEmitter } from "vscode"; +import type { QueryTreeViewItem } from "./query-tree-view-item"; +import { + createQueryTreeFileItem, + createQueryTreeFolderItem, +} from "./query-tree-view-item"; +import { DisposableObject } from "../common/disposable-object"; +import type { FileTreeNode } from "../common/file-tree-nodes"; +import type { App } from "../common/app"; +import { containsPath } from "../common/files"; + +export interface QueryDiscoverer { + readonly buildQueryTree: () => Array> | undefined; + readonly onDidChangeQueries: Event; +} + +export class QueryTreeDataProvider + extends DisposableObject + implements TreeDataProvider +{ + private queryTreeItems: QueryTreeViewItem[]; + + private readonly onDidChangeTreeDataEmitter = this.push( + new EventEmitter(), + ); + + public constructor( + private readonly queryDiscoverer: QueryDiscoverer, + private readonly app: App, + ) { + super(); + + queryDiscoverer.onDidChangeQueries(() => { + this.queryTreeItems = this.createTree(); + this.onDidChangeTreeDataEmitter.fire(); + }); + + this.queryTreeItems = this.createTree(); + } + + public get onDidChangeTreeData(): Event { + return this.onDidChangeTreeDataEmitter.event; + } + + /** + * Retrieves a specific tree view item by its path. If it's not found, returns undefined. + * + * @param path The path to retrieve the item for. + */ + public getTreeItemByPath(path: string): QueryTreeViewItem | undefined { + const itemPath = this.findItemPath(path, this.queryTreeItems); + if (!itemPath) { + return undefined; + } + + return itemPath[itemPath.length - 1]; + } + + /** + * Find a specific tree view item by path. + * + * @param path The path to find the item for. + * @param items The items to search. + * @param currentPath The current path to the item. + * @return The path to the tree view item, or undefined if it could not be found. The last item in the + * array is the item itself. + */ + private findItemPath( + path: string, + items: QueryTreeViewItem[], + currentPath: QueryTreeViewItem[] = [], + ): QueryTreeViewItem[] | undefined { + const relevantItems = items.filter((item) => containsPath(item.path, path)); + + const matchingItem = relevantItems.find((item) => item.path === path); + if (matchingItem) { + return [...currentPath, matchingItem]; + } + + for (const item of relevantItems) { + const childItem = this.findItemPath(path, item.children, [ + ...currentPath, + item, + ]); + if (childItem) { + return childItem; + } + } + + return undefined; + } + + private createTree(): QueryTreeViewItem[] { + const queryTree = this.queryDiscoverer.buildQueryTree(); + if (queryTree === undefined) { + return []; + } else if (queryTree.length === 0) { + void this.app.commands.execute("setContext", "codeQL.noQueries", true); + // Returning an empty tree here will show the welcome view + return []; + } else { + void this.app.commands.execute("setContext", "codeQL.noQueries", false); + return queryTree.map(this.convertFileTreeNode.bind(this)); + } + } + + private convertFileTreeNode( + fileTreeDirectory: FileTreeNode, + ): QueryTreeViewItem { + if (fileTreeDirectory.children.length === 0) { + return createQueryTreeFileItem( + fileTreeDirectory.name, + fileTreeDirectory.path, + fileTreeDirectory.data, + ); + } else { + return createQueryTreeFolderItem( + fileTreeDirectory.name, + fileTreeDirectory.path, + fileTreeDirectory.children.map(this.convertFileTreeNode.bind(this)), + ); + } + } + + /** + * Returns the UI presentation of the element that gets displayed in the view. + * @param item The item to represent. + * @returns The UI presentation of the item. + */ + public getTreeItem(item: QueryTreeViewItem): TreeItem { + return item; + } + + /** + * Called when expanding an item (including the root item). + * @param item The item to expand. + * @returns The children of the item. + */ + public getChildren(item?: QueryTreeViewItem): QueryTreeViewItem[] { + if (!item) { + // We're at the root. + return this.queryTreeItems; + } else { + return item.children; + } + } + + public getParent(item: QueryTreeViewItem): QueryTreeViewItem | undefined { + const itemPath = this.findItemPath(item.path, this.queryTreeItems); + if (!itemPath) { + return undefined; + } + + // The item itself is last in the last, so the parent is the second last item. + return itemPath[itemPath.length - 2]; + } +} diff --git a/extensions/ql-vscode/src/queries-panel/query-tree-view-item.ts b/extensions/ql-vscode/src/queries-panel/query-tree-view-item.ts new file mode 100644 index 00000000000..f6256edbac1 --- /dev/null +++ b/extensions/ql-vscode/src/queries-panel/query-tree-view-item.ts @@ -0,0 +1,41 @@ +import { TreeItem, TreeItemCollapsibleState, Uri } from "vscode"; + +export class QueryTreeViewItem extends TreeItem { + constructor( + name: string, + public readonly path: string, + public readonly children: QueryTreeViewItem[], + ) { + super(name); + } +} + +export function createQueryTreeFolderItem( + name: string, + path: string, + children: QueryTreeViewItem[], +): QueryTreeViewItem { + const item = new QueryTreeViewItem(name, path, children); + item.tooltip = path; + item.collapsibleState = TreeItemCollapsibleState.Collapsed; + item.contextValue = "queryFolder"; + return item; +} + +export function createQueryTreeFileItem( + name: string, + path: string, + language: string | undefined, +): QueryTreeViewItem { + const item = new QueryTreeViewItem(name, path, []); + item.tooltip = path; + item.description = language; + item.collapsibleState = TreeItemCollapsibleState.None; + item.contextValue = "queryFile"; + item.command = { + title: "Open", + command: "vscode.open", + arguments: [Uri.file(path)], + }; + return item; +} diff --git a/extensions/ql-vscode/src/eval-log-tree-builder.ts b/extensions/ql-vscode/src/query-evaluation-logging/eval-log-tree-builder.ts similarity index 75% rename from extensions/ql-vscode/src/eval-log-tree-builder.ts rename to extensions/ql-vscode/src/query-evaluation-logging/eval-log-tree-builder.ts index d14502f1cda..4f2b4a4c16c 100644 --- a/extensions/ql-vscode/src/eval-log-tree-builder.ts +++ b/extensions/ql-vscode/src/query-evaluation-logging/eval-log-tree-builder.ts @@ -1,8 +1,8 @@ -import { ChildEvalLogTreeItem, EvalLogTreeItem } from './eval-log-viewer'; -import { EvalLogData as EvalLogData } from './pure/log-summary-parser'; +import type { ChildEvalLogTreeItem, EvalLogTreeItem } from "./eval-log-viewer"; +import type { EvalLogData as EvalLogData } from "../log-insights/log-summary-parser"; /** Builds the tree data for the evaluator log viewer for a single query run. */ -export default class EvalLogTreeBuilder { +export class EvalLogTreeBuilder { private queryName: string; private evalLogDataItems: EvalLogData[]; @@ -22,40 +22,40 @@ export default class EvalLogTreeBuilder { // level. For now, there will always be one root (the one query being shown). const queryItem: EvalLogTreeItem = { label: this.queryName, - children: [] // Will assign predicate items as children shortly. + children: [], // Will assign predicate items as children shortly. }; - // Display descriptive message when no data exists + // Display descriptive message when no data exists if (this.evalLogDataItems.length === 0) { const noResultsItem: ChildEvalLogTreeItem = { - label: 'No predicates evaluated in this query run.', + label: "No predicates evaluated in this query run.", parent: queryItem, children: [], }; queryItem.children.push(noResultsItem); } - // For each predicate, create a TreeItem object with appropriate parents/children - this.evalLogDataItems.forEach(logDataItem => { + // For each predicate, create a TreeItem object with appropriate parents/children + this.evalLogDataItems.forEach((logDataItem) => { const predicateLabel = `${logDataItem.predicateName} (${logDataItem.resultSize} tuples, ${logDataItem.millis} ms)`; const predicateItem: ChildEvalLogTreeItem = { label: predicateLabel, parent: queryItem, - children: [] // Will assign pipeline items as children shortly. + children: [], // Will assign pipeline items as children shortly. }; for (const [pipelineName, steps] of Object.entries(logDataItem.ra)) { const pipelineLabel = `Pipeline: ${pipelineName}`; const pipelineItem: ChildEvalLogTreeItem = { label: pipelineLabel, parent: predicateItem, - children: [] // Will assign step items as children shortly. + children: [], // Will assign step items as children shortly. }; predicateItem.children.push(pipelineItem); pipelineItem.children = steps.map((step: string) => ({ label: step, parent: pipelineItem, - children: [] + children: [], })); } queryItem.children.push(predicateItem); diff --git a/extensions/ql-vscode/src/query-evaluation-logging/eval-log-viewer.ts b/extensions/ql-vscode/src/query-evaluation-logging/eval-log-viewer.ts new file mode 100644 index 00000000000..0bd7a572b44 --- /dev/null +++ b/extensions/ql-vscode/src/query-evaluation-logging/eval-log-viewer.ts @@ -0,0 +1,122 @@ +import type { TreeDataProvider, TreeView, ProviderResult, Event } from "vscode"; +import { + window, + TreeItem, + EventEmitter, + TreeItemCollapsibleState, +} from "vscode"; +import { DisposableObject } from "../common/disposable-object"; +import { asError, getErrorMessage } from "../common/helpers-pure"; +import { redactableError } from "../common/errors"; +import type { EvalLogViewerCommands } from "../common/commands"; +import { extLogger } from "../common/logging/vscode"; +import { showAndLogExceptionWithTelemetry } from "../common/logging"; +import { telemetryListener } from "../common/vscode/telemetry"; + +export interface EvalLogTreeItem { + label?: string; + children: ChildEvalLogTreeItem[]; +} + +export interface ChildEvalLogTreeItem extends EvalLogTreeItem { + parent: ChildEvalLogTreeItem | EvalLogTreeItem; +} + +/** Provides data from parsed CodeQL evaluator logs to be rendered in a tree view. */ +class EvalLogDataProvider + extends DisposableObject + implements TreeDataProvider +{ + public roots: EvalLogTreeItem[] = []; + + private _onDidChangeTreeData: EventEmitter< + EvalLogTreeItem | undefined | null | void + > = new EventEmitter(); + readonly onDidChangeTreeData: Event< + EvalLogTreeItem | undefined | null | void + > = this._onDidChangeTreeData.event; + + refresh(): void { + this._onDidChangeTreeData.fire(); + } + + getTreeItem(element: EvalLogTreeItem): TreeItem | Thenable { + const state = element.children.length + ? TreeItemCollapsibleState.Collapsed + : TreeItemCollapsibleState.None; + const treeItem = new TreeItem(element.label || "", state); + treeItem.tooltip = + typeof treeItem.label === "string" + ? treeItem.label + : (treeItem.label?.label ?? ""); + return treeItem; + } + + getChildren(element?: EvalLogTreeItem): ProviderResult { + // If no item is passed, return the root. + if (!element) { + return this.roots || []; + } + // Otherwise it is called with an existing item, to load its children. + return element.children; + } + + getParent(element: ChildEvalLogTreeItem): ProviderResult { + return element.parent; + } +} + +/** Manages a tree viewer of structured evaluator logs. */ +export class EvalLogViewer extends DisposableObject { + private treeView: TreeView; + private treeDataProvider: EvalLogDataProvider; + + constructor() { + super(); + + this.treeDataProvider = new EvalLogDataProvider(); + this.treeView = window.createTreeView("codeQLEvalLogViewer", { + treeDataProvider: this.treeDataProvider, + showCollapseAll: true, + }); + + this.push(this.treeView); + this.push(this.treeDataProvider); + } + + public getCommands(): EvalLogViewerCommands { + return { + "codeQLEvalLogViewer.clear": async () => this.clear(), + }; + } + + private clear(): void { + this.treeDataProvider.roots = []; + this.treeDataProvider.refresh(); + this.treeView.message = undefined; + } + + // Called when the Show Evaluator Log (UI) command is run on a new query. + updateRoots(roots: EvalLogTreeItem[]): void { + this.treeDataProvider.roots = roots; + this.treeDataProvider.refresh(); + + this.treeView.message = "Viewer for query run:"; // Currently only one query supported at a time. + + // Handle error on reveal. This could happen if + // the tree view is disposed during the reveal. + this.treeView.reveal(roots[0], { focus: false })?.then( + () => { + /**/ + }, + (err: unknown) => + showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError( + asError(err), + )`Failed to reveal tree view: ${getErrorMessage(err)}`, + ), + ); + } +} diff --git a/extensions/ql-vscode/src/query-evaluation-logging/index.ts b/extensions/ql-vscode/src/query-evaluation-logging/index.ts new file mode 100644 index 00000000000..a5433602fda --- /dev/null +++ b/extensions/ql-vscode/src/query-evaluation-logging/index.ts @@ -0,0 +1,2 @@ +export * from "./eval-log-tree-builder"; +export * from "./eval-log-viewer"; diff --git a/extensions/ql-vscode/src/query-history-scrubber.ts b/extensions/ql-vscode/src/query-history-scrubber.ts deleted file mode 100644 index 3ffa787ae7a..00000000000 --- a/extensions/ql-vscode/src/query-history-scrubber.ts +++ /dev/null @@ -1,139 +0,0 @@ -import * as fs from 'fs-extra'; -import * as os from 'os'; -import * as path from 'path'; -import { Disposable, ExtensionContext } from 'vscode'; -import { logger } from './logging'; -import { QueryHistoryManager } from './query-history'; - -const LAST_SCRUB_TIME_KEY = 'lastScrubTime'; - -type Counter = { - increment: () => void; -}; - -/** - * Registers an interval timer that will periodically check for queries old enought - * to be deleted. - * - * Note that this scrubber will clean all queries from all workspaces. It should not - * run too often and it should only run from one workspace at a time. - * - * Generally, `wakeInterval` should be significantly shorter than `throttleTime`. - * - * @param wakeInterval How often to check to see if the job should run. - * @param throttleTime How often to actually run the job. - * @param maxQueryTime The maximum age of a query before is ready for deletion. - * @param queryDirectory The directory containing all queries. - * @param ctx The extension context. - */ -export function registerQueryHistoryScubber( - wakeInterval: number, - throttleTime: number, - maxQueryTime: number, - queryDirectory: string, - qhm: QueryHistoryManager, - ctx: ExtensionContext, - - // optional counter to keep track of how many times the scrubber has run - counter?: Counter -): Disposable { - const deregister = setInterval(scrubQueries, wakeInterval, throttleTime, maxQueryTime, queryDirectory, qhm, ctx, counter); - - return { - dispose: () => { - clearInterval(deregister); - } - }; -} - -async function scrubQueries( - throttleTime: number, - maxQueryTime: number, - queryDirectory: string, - qhm: QueryHistoryManager, - ctx: ExtensionContext, - counter?: Counter -) { - const lastScrubTime = ctx.globalState.get(LAST_SCRUB_TIME_KEY); - const now = Date.now(); - - // If we have never scrubbed before, or if the last scrub was more than `throttleTime` ago, - // then scrub again. - if (lastScrubTime === undefined || now - lastScrubTime >= throttleTime) { - await ctx.globalState.update(LAST_SCRUB_TIME_KEY, now); - - let scrubCount = 0; // total number of directories deleted - try { - counter?.increment(); - void logger.log('Scrubbing query directory. Removing old queries.'); - if (!(await fs.pathExists(queryDirectory))) { - void logger.log(`Cannot scrub. Query directory does not exist: ${queryDirectory}`); - return; - } - - const baseNames = await fs.readdir(queryDirectory); - const errors: string[] = []; - for (const baseName of baseNames) { - const dir = path.join(queryDirectory, baseName); - const scrubResult = await scrubDirectory(dir, now, maxQueryTime); - if (scrubResult.errorMsg) { - errors.push(scrubResult.errorMsg); - } - if (scrubResult.deleted) { - scrubCount++; - } - } - - if (errors.length) { - throw new Error(os.EOL + errors.join(os.EOL)); - } - } catch (e) { - void logger.log(`Error while scrubbing queries: ${e}`); - } finally { - void logger.log(`Scrubbed ${scrubCount} old queries.`); - } - await qhm.removeDeletedQueries(); - } -} - -async function scrubDirectory(dir: string, now: number, maxQueryTime: number): Promise<{ - errorMsg?: string, - deleted: boolean -}> { - const timestampFile = path.join(dir, 'timestamp'); - try { - let deleted = true; - if (!(await fs.stat(dir)).isDirectory()) { - void logger.log(` ${dir} is not a directory. Deleting.`); - await fs.remove(dir); - } else if (!(await fs.pathExists(timestampFile))) { - void logger.log(` ${dir} has no timestamp file. Deleting.`); - await fs.remove(dir); - } else if (!(await fs.stat(timestampFile)).isFile()) { - void logger.log(` ${timestampFile} is not a file. Deleting.`); - await fs.remove(dir); - } else { - const timestampText = await fs.readFile(timestampFile, 'utf8'); - const timestamp = parseInt(timestampText, 10); - - if (Number.isNaN(timestamp)) { - void logger.log(` ${dir} has invalid timestamp '${timestampText}'. Deleting.`); - await fs.remove(dir); - } else if (now - timestamp > maxQueryTime) { - void logger.log(` ${dir} is older than ${maxQueryTime / 1000} seconds. Deleting.`); - await fs.remove(dir); - } else { - void logger.log(` ${dir} is not older than ${maxQueryTime / 1000} seconds. Keeping.`); - deleted = false; - } - } - return { - deleted - }; - } catch (err) { - return { - errorMsg: ` Could not delete '${dir}': ${err}`, - deleted: false - }; - } -} diff --git a/extensions/ql-vscode/src/query-history.ts b/extensions/ql-vscode/src/query-history.ts deleted file mode 100644 index 6624c1d8a85..00000000000 --- a/extensions/ql-vscode/src/query-history.ts +++ /dev/null @@ -1,1345 +0,0 @@ -import * as path from 'path'; -import { - commands, - Disposable, - env, - Event, - EventEmitter, - ExtensionContext, - ProviderResult, - Range, - ThemeIcon, - TreeItem, - TreeView, - Uri, - ViewColumn, - window, - workspace, -} from 'vscode'; -import { QueryHistoryConfig } from './config'; -import { - showAndLogErrorMessage, - showAndLogInformationMessage, - showAndLogWarningMessage, - showBinaryChoiceDialog -} from './helpers'; -import { logger } from './logging'; -import { URLSearchParams } from 'url'; -import { QueryServerClient } from './queryserver-client'; -import { DisposableObject } from './pure/disposable-object'; -import { commandRunner } from './commandRunner'; -import { ONE_HOUR_IN_MS, TWO_HOURS_IN_MS } from './pure/time'; -import { assertNever, getErrorMessage, getErrorStack } from './pure/helpers-pure'; -import { CompletedLocalQueryInfo, LocalQueryInfo as LocalQueryInfo, QueryHistoryInfo } from './query-results'; -import { DatabaseManager } from './databases'; -import { registerQueryHistoryScubber } from './query-history-scrubber'; -import { QueryStatus } from './query-status'; -import { slurpQueryHistory, splatQueryHistory } from './query-serialization'; -import * as fs from 'fs-extra'; -import { CliVersionConstraint } from './cli'; -import { HistoryItemLabelProvider } from './history-item-label-provider'; -import { Credentials } from './authentication'; -import { cancelRemoteQuery } from './remote-queries/gh-actions-api-client'; -import { RemoteQueriesManager } from './remote-queries/remote-queries-manager'; -import { RemoteQueryHistoryItem } from './remote-queries/remote-query-history-item'; -import { InterfaceManager } from './interface'; -import { WebviewReveal } from './interface-utils'; -import { EvalLogViewer } from './eval-log-viewer'; -import EvalLogTreeBuilder from './eval-log-tree-builder'; -import { EvalLogData, parseViewerData } from './pure/log-summary-parser'; - -/** - * query-history.ts - * ------------ - * Managing state of previous queries that we've executed. - * - * The source of truth of the current state resides inside the - * `TreeDataProvider` subclass below. - */ - -export const SHOW_QUERY_TEXT_MSG = `\ -//////////////////////////////////////////////////////////////////////////////////// -// This is the text of the entire query file when it was executed for this query // -// run. The text or dependent libraries may have changed since then. // -// // -// This buffer is readonly. To re-execute this query, you must open the original // -// query file. // -//////////////////////////////////////////////////////////////////////////////////// - -`; - -const SHOW_QUERY_TEXT_QUICK_EVAL_MSG = `\ -//////////////////////////////////////////////////////////////////////////////////// -// This is the Quick Eval selection of the query file when it was executed for // -// this query run. The text or dependent libraries may have changed since then. // -// // -// This buffer is readonly. To re-execute this query, you must open the original // -// query file. // -//////////////////////////////////////////////////////////////////////////////////// - -`; - -/** - * Path to icon to display next to a failed query history item. - */ -const FAILED_QUERY_HISTORY_ITEM_ICON = 'media/red-x.svg'; - -/** - * Path to icon to display next to a successful local run. - */ -const LOCAL_SUCCESS_QUERY_HISTORY_ITEM_ICON = 'media/drive.svg'; - -/** - * Path to icon to display next to a successful remote run. - */ -const REMOTE_SUCCESS_QUERY_HISTORY_ITEM_ICON = 'media/globe.svg'; - -export enum SortOrder { - NameAsc = 'NameAsc', - NameDesc = 'NameDesc', - DateAsc = 'DateAsc', - DateDesc = 'DateDesc', - CountAsc = 'CountAsc', - CountDesc = 'CountDesc', -} - -/** - * Number of milliseconds two clicks have to arrive apart to be - * considered a double-click. - */ -const DOUBLE_CLICK_TIME = 500; - -const WORKSPACE_QUERY_HISTORY_FILE = 'workspace-query-history.json'; - -/** - * Tree data provider for the query history view. - */ -export class HistoryTreeDataProvider extends DisposableObject { - private _sortOrder = SortOrder.DateAsc; - - private _onDidChangeTreeData = super.push(new EventEmitter()); - - readonly onDidChangeTreeData: Event = this - ._onDidChangeTreeData.event; - - private history: QueryHistoryInfo[] = []; - - private failedIconPath: string; - - private localSuccessIconPath: string; - - private remoteSuccessIconPath: string; - - private current: QueryHistoryInfo | undefined; - - constructor( - extensionPath: string, - private readonly labelProvider: HistoryItemLabelProvider, - ) { - super(); - this.failedIconPath = path.join( - extensionPath, - FAILED_QUERY_HISTORY_ITEM_ICON - ); - this.localSuccessIconPath = path.join( - extensionPath, - LOCAL_SUCCESS_QUERY_HISTORY_ITEM_ICON - ); - this.remoteSuccessIconPath = path.join( - extensionPath, - REMOTE_SUCCESS_QUERY_HISTORY_ITEM_ICON - ); - } - - async getTreeItem(element: QueryHistoryInfo): Promise { - const treeItem = new TreeItem(this.labelProvider.getLabel(element)); - - treeItem.command = { - title: 'Query History Item', - command: 'codeQLQueryHistory.itemClicked', - arguments: [element], - tooltip: element.failureReason || this.labelProvider.getLabel(element) - }; - - // Populate the icon and the context value. We use the context value to - // control which commands are visible in the context menu. - let hasResults; - switch (element.status) { - case QueryStatus.InProgress: - treeItem.iconPath = new ThemeIcon('sync~spin'); - treeItem.contextValue = element.t === 'local' ? 'inProgressResultsItem' : 'inProgressRemoteResultsItem'; - break; - case QueryStatus.Completed: - if (element.t === 'local') { - hasResults = await element.completedQuery?.query.hasInterpretedResults(); - treeItem.iconPath = this.localSuccessIconPath; - treeItem.contextValue = hasResults - ? 'interpretedResultsItem' - : 'rawResultsItem'; - } else { - treeItem.iconPath = this.remoteSuccessIconPath; - treeItem.contextValue = 'remoteResultsItem'; - } - break; - case QueryStatus.Failed: - treeItem.iconPath = this.failedIconPath; - treeItem.contextValue = 'cancelledResultsItem'; - break; - default: - assertNever(element.status); - } - - return treeItem; - } - - getChildren( - element?: QueryHistoryInfo - ): ProviderResult { - return element ? [] : this.history.sort((h1, h2) => { - - const h1Label = this.labelProvider.getLabel(h1).toLowerCase(); - const h2Label = this.labelProvider.getLabel(h2).toLowerCase(); - - const h1Date = h1.t === 'local' - ? h1.initialInfo.start.getTime() - : h1.remoteQuery?.executionStartTime; - - const h2Date = h2.t === 'local' - ? h2.initialInfo.start.getTime() - : h2.remoteQuery?.executionStartTime; - - const resultCount1 = h1.t === 'local' - ? h1.completedQuery?.resultCount ?? -1 - : h1.resultCount ?? -1; - const resultCount2 = h2.t === 'local' - ? h2.completedQuery?.resultCount ?? -1 - : h2.resultCount ?? -1; - - switch (this.sortOrder) { - case SortOrder.NameAsc: - return h1Label.localeCompare(h2Label, env.language); - - case SortOrder.NameDesc: - return h2Label.localeCompare(h1Label, env.language); - - case SortOrder.DateAsc: - return h1Date - h2Date; - - case SortOrder.DateDesc: - return h2Date - h1Date; - - case SortOrder.CountAsc: - // If the result counts are equal, sort by name. - return resultCount1 - resultCount2 === 0 - ? h1Label.localeCompare(h2Label, env.language) - : resultCount1 - resultCount2; - - case SortOrder.CountDesc: - // If the result counts are equal, sort by name. - return resultCount2 - resultCount1 === 0 - ? h2Label.localeCompare(h1Label, env.language) - : resultCount2 - resultCount1; - default: - assertNever(this.sortOrder); - } - }); - } - - getParent(_element: QueryHistoryInfo): ProviderResult { - return null; - } - - getCurrent(): QueryHistoryInfo | undefined { - return this.current; - } - - pushQuery(item: QueryHistoryInfo): void { - this.history.push(item); - this.setCurrentItem(item); - this.refresh(); - } - - setCurrentItem(item?: QueryHistoryInfo) { - this.current = item; - } - - remove(item: QueryHistoryInfo) { - const isCurrent = this.current === item; - if (isCurrent) { - this.setCurrentItem(); - } - const index = this.history.findIndex((i) => i === item); - if (index >= 0) { - this.history.splice(index, 1); - if (isCurrent && this.history.length > 0) { - // Try to keep a current item, near the deleted item if there - // are any available. - this.setCurrentItem(this.history[Math.min(index, this.history.length - 1)]); - } - this.refresh(); - } - } - - get allHistory(): QueryHistoryInfo[] { - return this.history; - } - - set allHistory(history: QueryHistoryInfo[]) { - this.history = history; - this.current = history[0]; - this.refresh(); - } - - refresh() { - this._onDidChangeTreeData.fire(undefined); - } - - public get sortOrder() { - return this._sortOrder; - } - - public set sortOrder(newSortOrder: SortOrder) { - this._sortOrder = newSortOrder; - this._onDidChangeTreeData.fire(undefined); - } -} - -export class QueryHistoryManager extends DisposableObject { - - treeDataProvider: HistoryTreeDataProvider; - treeView: TreeView; - lastItemClick: { time: Date; item: QueryHistoryInfo } | undefined; - compareWithItem: LocalQueryInfo | undefined; - queryHistoryScrubber: Disposable | undefined; - private queryMetadataStorageLocation; - - constructor( - private readonly qs: QueryServerClient, - private readonly dbm: DatabaseManager, - private readonly localQueriesInterfaceManager: InterfaceManager, - private readonly remoteQueriesManager: RemoteQueriesManager, - private readonly evalLogViewer: EvalLogViewer, - private readonly queryStorageDir: string, - private readonly ctx: ExtensionContext, - private readonly queryHistoryConfigListener: QueryHistoryConfig, - private readonly labelProvider: HistoryItemLabelProvider, - private readonly doCompareCallback: ( - from: CompletedLocalQueryInfo, - to: CompletedLocalQueryInfo - ) => Promise - ) { - super(); - - // Note that we use workspace storage to hold the metadata for the query history. - // This is because the query history is specific to each workspace. - // For situations where `ctx.storageUri` is undefined (i.e., there is no workspace), - // we default to global storage. - this.queryMetadataStorageLocation = path.join((ctx.storageUri || ctx.globalStorageUri).fsPath, WORKSPACE_QUERY_HISTORY_FILE); - - this.treeDataProvider = this.push(new HistoryTreeDataProvider( - ctx.extensionPath, - this.labelProvider - )); - this.treeView = this.push(window.createTreeView('codeQLQueryHistory', { - treeDataProvider: this.treeDataProvider, - canSelectMany: true, - })); - - // Lazily update the tree view selection due to limitations of TreeView API (see - // `updateTreeViewSelectionIfVisible` doc for details) - this.push( - this.treeView.onDidChangeVisibility(async (_ev) => - this.updateTreeViewSelectionIfVisible() - ) - ); - this.push( - this.treeView.onDidChangeSelection(async (ev) => { - if (ev.selection.length === 0) { - // Don't allow the selection to become empty - this.updateTreeViewSelectionIfVisible(); - } else { - this.treeDataProvider.setCurrentItem(ev.selection[0]); - } - if (ev.selection.some(item => item.t !== 'local')) { - // Don't allow comparison of non-local items - this.updateCompareWith([]); - } else { - this.updateCompareWith([...ev.selection] as LocalQueryInfo[]); - } - }) - ); - - void logger.log('Registering query history panel commands.'); - this.push( - commandRunner( - 'codeQLQueryHistory.openQuery', - this.handleOpenQuery.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.removeHistoryItem', - this.handleRemoveHistoryItem.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.sortByName', - this.handleSortByName.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.sortByDate', - this.handleSortByDate.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.sortByCount', - this.handleSortByCount.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.setLabel', - this.handleSetLabel.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.compareWith', - this.handleCompareWith.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.showQueryLog', - this.handleShowQueryLog.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.openQueryDirectory', - this.handleOpenQueryDirectory.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.showEvalLog', - this.handleShowEvalLog.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.showEvalLogSummary', - this.handleShowEvalLogSummary.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.showEvalLogViewer', - this.handleShowEvalLogViewer.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.cancel', - this.handleCancel.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.showQueryText', - this.handleShowQueryText.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.exportResults', - this.handleExportResults.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.viewCsvResults', - this.handleViewCsvResults.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.viewCsvAlerts', - this.handleViewCsvAlerts.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.viewSarifAlerts', - this.handleViewSarifAlerts.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.viewDil', - this.handleViewDil.bind(this) - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.itemClicked', - async (item: LocalQueryInfo) => { - return this.handleItemClicked(item, [item]); - } - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.openOnGithub', - async (item: LocalQueryInfo) => { - return this.handleOpenOnGithub(item, [item]); - } - ) - ); - this.push( - commandRunner( - 'codeQLQueryHistory.copyRepoList', - this.handleCopyRepoList.bind(this) - ) - ); - - // There are two configuration items that affect the query history: - // 1. The ttl for query history items. - // 2. The default label for query history items. - // When either of these change, must refresh the tree view. - this.push( - queryHistoryConfigListener.onDidChangeConfiguration(() => { - this.treeDataProvider.refresh(); - this.registerQueryHistoryScrubber(queryHistoryConfigListener, this, ctx); - }) - ); - - // displays query text in a read-only document - this.push(workspace.registerTextDocumentContentProvider('codeql', { - provideTextDocumentContent( - uri: Uri - ): ProviderResult { - const params = new URLSearchParams(uri.query); - - return ( - (JSON.parse(params.get('isQuickEval') || '') - ? SHOW_QUERY_TEXT_QUICK_EVAL_MSG - : SHOW_QUERY_TEXT_MSG) + params.get('queryText') - ); - }, - })); - - this.registerQueryHistoryScrubber(queryHistoryConfigListener, this, ctx); - this.registerToRemoteQueriesEvents(); - } - - private getCredentials() { - return Credentials.initialize(this.ctx); - } - - /** - * Register and create the history scrubber. - */ - private registerQueryHistoryScrubber(queryHistoryConfigListener: QueryHistoryConfig, qhm: QueryHistoryManager, ctx: ExtensionContext) { - this.queryHistoryScrubber?.dispose(); - // Every hour check if we need to re-run the query history scrubber. - this.queryHistoryScrubber = this.push( - registerQueryHistoryScubber( - ONE_HOUR_IN_MS, - TWO_HOURS_IN_MS, - queryHistoryConfigListener.ttlInMillis, - this.queryStorageDir, - qhm, - ctx - ) - ); - } - - private registerToRemoteQueriesEvents() { - const queryAddedSubscription = this.remoteQueriesManager.onRemoteQueryAdded(async (event) => { - this.addQuery({ - t: 'remote', - status: QueryStatus.InProgress, - completed: false, - queryId: event.queryId, - remoteQuery: event.query, - }); - - await this.refreshTreeView(); - }); - - const queryRemovedSubscription = this.remoteQueriesManager.onRemoteQueryRemoved(async (event) => { - const item = this.treeDataProvider.allHistory.find(i => i.t === 'remote' && i.queryId === event.queryId); - if (item) { - await this.removeRemoteQuery(item as RemoteQueryHistoryItem); - } - }); - - const queryStatusUpdateSubscription = this.remoteQueriesManager.onRemoteQueryStatusUpdate(async (event) => { - const item = this.treeDataProvider.allHistory.find(i => i.t === 'remote' && i.queryId === event.queryId); - if (item) { - const remoteQueryHistoryItem = item as RemoteQueryHistoryItem; - remoteQueryHistoryItem.status = event.status; - remoteQueryHistoryItem.failureReason = event.failureReason; - remoteQueryHistoryItem.resultCount = event.resultCount; - if (event.status === QueryStatus.Completed) { - remoteQueryHistoryItem.completed = true; - } - await this.refreshTreeView(); - } else { - void logger.log('Variant analysis status update event received for unknown variant analysis'); - } - }); - - this.push(queryAddedSubscription); - this.push(queryRemovedSubscription); - this.push(queryStatusUpdateSubscription); - } - - async readQueryHistory(): Promise { - void logger.log(`Reading cached query history from '${this.queryMetadataStorageLocation}'.`); - const history = await slurpQueryHistory(this.queryMetadataStorageLocation); - this.treeDataProvider.allHistory = history; - this.treeDataProvider.allHistory.forEach(async (item) => { - if (item.t === 'remote') { - await this.remoteQueriesManager.rehydrateRemoteQuery(item.queryId, item.remoteQuery, item.status); - } - }); - } - - async writeQueryHistory(): Promise { - await splatQueryHistory(this.treeDataProvider.allHistory, this.queryMetadataStorageLocation); - } - - async handleOpenQuery( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ): Promise { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem) { - return; - } - - const queryPath = finalSingleItem.t === 'local' - ? finalSingleItem.initialInfo.queryPath - : finalSingleItem.remoteQuery.queryFilePath; - - const textDocument = await workspace.openTextDocument( - Uri.file(queryPath) - ); - const editor = await window.showTextDocument( - textDocument, - ViewColumn.One - ); - - if (finalSingleItem.t === 'local') { - const queryText = finalSingleItem.initialInfo.queryText; - if (queryText !== undefined && finalSingleItem.initialInfo.isQuickQuery) { - await editor.edit((edit) => - edit.replace( - textDocument.validateRange( - new Range(0, 0, textDocument.lineCount, 0) - ), - queryText - ) - ); - } - } - } - - getCurrentQueryHistoryItem(): QueryHistoryInfo | undefined { - return this.treeDataProvider.getCurrent(); - } - - async removeDeletedQueries() { - await Promise.all(this.treeDataProvider.allHistory.map(async (item) => { - if (item.t == 'local' && item.completedQuery && !(await fs.pathExists(item.completedQuery?.query.querySaveDir))) { - this.treeDataProvider.remove(item); - item.completedQuery?.dispose(); - } - })); - } - - async handleRemoveHistoryItem( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] = [] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - const toDelete = (finalMultiSelect || [finalSingleItem]); - await Promise.all(toDelete.map(async (item) => { - if (item.t === 'local') { - // Removing in progress local queries is not supported. They must be cancelled first. - if (item.status !== QueryStatus.InProgress) { - this.treeDataProvider.remove(item); - item.completedQuery?.dispose(); - - // User has explicitly asked for this query to be removed. - // We need to delete it from disk as well. - await item.completedQuery?.query.deleteQuery(); - } - } else { - await this.removeRemoteQuery(item); - } - })); - - await this.writeQueryHistory(); - const current = this.treeDataProvider.getCurrent(); - if (current !== undefined) { - await this.treeView.reveal(current, { select: true }); - await this.openQueryResults(current); - } - } - - private async removeRemoteQuery(item: RemoteQueryHistoryItem): Promise { - // Remote queries can be removed locally, but not remotely. - // The user must cancel the query on GitHub Actions explicitly. - this.treeDataProvider.remove(item); - void logger.log(`Deleted ${this.labelProvider.getLabel(item)}.`); - if (item.status === QueryStatus.InProgress) { - void logger.log('The variant analysis is still running on GitHub Actions. To cancel there, you must go to the workflow run in your browser.'); - } - - await this.remoteQueriesManager.removeRemoteQuery(item.queryId); - } - - async handleSortByName() { - if (this.treeDataProvider.sortOrder === SortOrder.NameAsc) { - this.treeDataProvider.sortOrder = SortOrder.NameDesc; - } else { - this.treeDataProvider.sortOrder = SortOrder.NameAsc; - } - } - - async handleSortByDate() { - if (this.treeDataProvider.sortOrder === SortOrder.DateAsc) { - this.treeDataProvider.sortOrder = SortOrder.DateDesc; - } else { - this.treeDataProvider.sortOrder = SortOrder.DateAsc; - } - } - - async handleSortByCount() { - if (this.treeDataProvider.sortOrder === SortOrder.CountAsc) { - this.treeDataProvider.sortOrder = SortOrder.CountDesc; - } else { - this.treeDataProvider.sortOrder = SortOrder.CountAsc; - } - } - - async handleSetLabel( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ): Promise { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - if (!this.assertSingleQuery(finalMultiSelect)) { - return; - } - - const response = await window.showInputBox({ - placeHolder: `(use default: ${this.queryHistoryConfigListener.format})`, - value: finalSingleItem.userSpecifiedLabel ?? '', - title: 'Set query label', - prompt: 'Set the query history item label. See the description of the codeQL.queryHistory.format setting for more information.', - }); - // undefined response means the user cancelled the dialog; don't change anything - if (response !== undefined) { - // Interpret empty string response as 'go back to using default' - finalSingleItem.userSpecifiedLabel = response === '' ? undefined : response; - await this.refreshTreeView(); - } - } - - async handleCompareWith( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - try { - // local queries only - if (finalSingleItem?.t !== 'local') { - throw new Error('Please select a local query.'); - } - - if (!finalSingleItem.completedQuery?.didRunSuccessfully) { - throw new Error('Please select a query that has completed successfully.'); - } - - const from = this.compareWithItem || singleItem; - const to = await this.findOtherQueryToCompare(from, finalMultiSelect); - - if (from.completed && to?.completed) { - await this.doCompareCallback(from as CompletedLocalQueryInfo, to as CompletedLocalQueryInfo); - } - } catch (e) { - void showAndLogErrorMessage(getErrorMessage(e)); - } - } - - async handleItemClicked( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] = [] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem) { - return; - } - - this.treeDataProvider.setCurrentItem(finalSingleItem); - - const now = new Date(); - const prevItemClick = this.lastItemClick; - this.lastItemClick = { time: now, item: finalSingleItem }; - - if ( - prevItemClick !== undefined && - now.valueOf() - prevItemClick.time.valueOf() < DOUBLE_CLICK_TIME && - finalSingleItem == prevItemClick.item - ) { - // show original query file on double click - await this.handleOpenQuery(finalSingleItem, [finalSingleItem]); - } else { - // show results on single click only if query is completed successfully. - if (finalSingleItem.status === QueryStatus.Completed) { - await this.openQueryResults(finalSingleItem); - } - } - } - - async handleShowQueryLog( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - // Local queries only - if (!this.assertSingleQuery(multiSelect) || singleItem?.t !== 'local') { - return; - } - - if (!singleItem.completedQuery) { - return; - } - - if (singleItem.completedQuery.logFileLocation) { - await this.tryOpenExternalFile(singleItem.completedQuery.logFileLocation); - } else { - void showAndLogWarningMessage('No log file available'); - } - } - - async getQueryHistoryItemDirectory(queryHistoryItem: QueryHistoryInfo): Promise { - if (queryHistoryItem.t === 'local') { - if (queryHistoryItem.completedQuery) { - return queryHistoryItem.completedQuery.query.querySaveDir; - } - } else if (queryHistoryItem.t === 'remote') { - return path.join(this.queryStorageDir, queryHistoryItem.queryId); - } - - throw new Error('Unable to get query directory'); - } - - async handleOpenQueryDirectory( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem) { - return; - } - - let externalFilePath: string | undefined; - if (finalSingleItem.t === 'local') { - if (finalSingleItem.completedQuery) { - externalFilePath = path.join(finalSingleItem.completedQuery.query.querySaveDir, 'timestamp'); - } - } else if (finalSingleItem.t === 'remote') { - externalFilePath = path.join(this.queryStorageDir, finalSingleItem.queryId, 'timestamp'); - } - - if (externalFilePath) { - if (!(await fs.pathExists(externalFilePath))) { - // timestamp file is missing (manually deleted?) try selecting the parent folder. - // It's less nice, but at least it will work. - externalFilePath = path.dirname(externalFilePath); - if (!(await fs.pathExists(externalFilePath))) { - throw new Error(`Query directory does not exist: ${externalFilePath}`); - } - } - try { - await commands.executeCommand('revealFileInOS', Uri.file(externalFilePath)); - } catch (e) { - throw new Error(`Failed to open ${externalFilePath}: ${getErrorMessage(e)}`); - } - } - } - - private warnNoEvalLogs() { - void showAndLogWarningMessage(`Evaluator log, summary, and viewer are not available for this run. Perhaps it failed before evaluation, or you are running with a version of CodeQL before ' + ${CliVersionConstraint.CLI_VERSION_WITH_PER_QUERY_EVAL_LOG}?`); - } - - private warnInProgressEvalLogSummary() { - void showAndLogWarningMessage('The evaluator log summary is still being generated for this run. Please try again later. The summary generation process is tracked in the "CodeQL Extension Log" view.'); - } - - private warnInProgressEvalLogViewer() { - void showAndLogWarningMessage('The viewer\'s data is still being generated for this run. Please try again or re-run the query.'); - } - - async handleShowEvalLog( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Only applicable to an individual local query - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'local') { - return; - } - - if (finalSingleItem.evalLogLocation) { - await this.tryOpenExternalFile(finalSingleItem.evalLogLocation); - } else { - this.warnNoEvalLogs(); - } - } - - async handleShowEvalLogSummary( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Only applicable to an individual local query - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'local') { - return; - } - - if (finalSingleItem.evalLogSummaryLocation) { - await this.tryOpenExternalFile(finalSingleItem.evalLogSummaryLocation); - return; - } - - // Summary log file doesn't exist. - if (finalSingleItem.evalLogLocation && fs.pathExists(finalSingleItem.evalLogLocation)) { - // If raw log does exist, then the summary log is still being generated. - this.warnInProgressEvalLogSummary(); - } else { - this.warnNoEvalLogs(); - } - } - - async handleShowEvalLogViewer( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[], - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - // Only applicable to an individual local query - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'local') { - return; - } - - // If the JSON summary file location wasn't saved, display error - if (finalSingleItem.jsonEvalLogSummaryLocation == undefined) { - this.warnInProgressEvalLogViewer(); - return; - } - - // TODO(angelapwen): Stream the file in. - void fs.readFile(finalSingleItem.jsonEvalLogSummaryLocation, async (err, buffer) => { - if (err) { - throw new Error(`Could not read evaluator log summary JSON file to generate viewer data at ${finalSingleItem.jsonEvalLogSummaryLocation}.`); - } - const evalLogData: EvalLogData[] = parseViewerData(buffer.toString()); - const evalLogTreeBuilder = new EvalLogTreeBuilder(finalSingleItem.getQueryName(), evalLogData); - this.evalLogViewer.updateRoots(await evalLogTreeBuilder.getRoots()); - }); - } - - async handleCancel( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - const selected = finalMultiSelect || [finalSingleItem]; - const results = selected.map(async item => { - if (item.status === QueryStatus.InProgress) { - if (item.t === 'local') { - item.cancel(); - } else if (item.t === 'remote') { - void showAndLogInformationMessage('Cancelling variant analysis. This may take a while.'); - const credentials = await this.getCredentials(); - await cancelRemoteQuery(credentials, item.remoteQuery); - } - } - }); - - await Promise.all(results); - } - - async handleShowQueryText( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] = [] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem) { - return; - } - - const params = new URLSearchParams({ - isQuickEval: String(!!(finalSingleItem.t === 'local' && finalSingleItem.initialInfo.quickEvalPosition)), - queryText: encodeURIComponent(await this.getQueryText(finalSingleItem)), - }); - const queryId = finalSingleItem.t === 'local' - ? finalSingleItem.initialInfo.id - : finalSingleItem.queryId; - - const uri = Uri.parse( - `codeql:${queryId}?${params.toString()}`, true - ); - const doc = await workspace.openTextDocument(uri); - await window.showTextDocument(doc, { preview: false }); - } - - async handleViewSarifAlerts( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Local queries only - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'local' || !finalSingleItem.completedQuery) { - return; - } - - const query = finalSingleItem.completedQuery.query; - const hasInterpretedResults = query.canHaveInterpretedResults(); - if (hasInterpretedResults) { - await this.tryOpenExternalFile( - query.resultsPaths.interpretedResultsPath - ); - } else { - const label = this.labelProvider.getLabel(finalSingleItem); - void showAndLogInformationMessage( - `Query ${label} has no interpreted results.` - ); - } - } - - async handleViewCsvResults( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Local queries only - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'local' || !finalSingleItem.completedQuery) { - return; - } - const query = finalSingleItem.completedQuery.query; - if (await query.hasCsv()) { - void this.tryOpenExternalFile(query.csvPath); - return; - } - if (await query.exportCsvResults(this.qs, query.csvPath)) { - void this.tryOpenExternalFile( - query.csvPath - ); - } - } - - async handleViewCsvAlerts( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Local queries only - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'local' || !finalSingleItem.completedQuery) { - return; - } - - await this.tryOpenExternalFile( - await finalSingleItem.completedQuery.query.ensureCsvAlerts(this.qs, this.dbm) - ); - } - - async handleViewDil( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[], - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Local queries only - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'local' || !finalSingleItem.completedQuery) { - return; - } - - await this.tryOpenExternalFile( - await finalSingleItem.completedQuery.query.ensureDilPath(this.qs) - ); - } - - async handleOpenOnGithub( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[], - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Remote queries only - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'remote') { - return; - } - - const { actionsWorkflowRunId: workflowRunId, controllerRepository: { owner, name } } = finalSingleItem.remoteQuery; - - await commands.executeCommand( - 'vscode.open', - Uri.parse(`https://github.com/${owner}/${name}/actions/runs/${workflowRunId}`) - ); - } - - async handleCopyRepoList( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[], - ) { - const { finalSingleItem, finalMultiSelect } = this.determineSelection(singleItem, multiSelect); - - // Remote queries only - if (!this.assertSingleQuery(finalMultiSelect) || !finalSingleItem || finalSingleItem.t !== 'remote') { - return; - } - - await commands.executeCommand('codeQL.copyRepoList', finalSingleItem.queryId); - } - - async getQueryText(item: QueryHistoryInfo): Promise { - return item.t === 'local' - ? item.initialInfo.queryText - : item.remoteQuery.queryText; - } - - async handleExportResults(): Promise { - await commands.executeCommand('codeQL.exportVariantAnalysisResults'); - } - - addQuery(item: QueryHistoryInfo) { - this.treeDataProvider.pushQuery(item); - this.updateTreeViewSelectionIfVisible(); - } - - /** - * Update the tree view selection if the tree view is visible. - * - * If the tree view is not visible, we must wait until it becomes visible before updating the - * selection. This is because the only mechanism for updating the selection of the tree view - * has the side-effect of revealing the tree view. This changes the active sidebar to CodeQL, - * interrupting user workflows such as writing a commit message on the source control sidebar. - */ - private updateTreeViewSelectionIfVisible() { - if (this.treeView.visible) { - const current = this.treeDataProvider.getCurrent(); - if (current != undefined) { - // We must fire the onDidChangeTreeData event to ensure the current element can be selected - // using `reveal` if the tree view was not visible when the current element was added. - this.treeDataProvider.refresh(); - void this.treeView.reveal(current, { select: true }); - } - } - } - - private async tryOpenExternalFile(fileLocation: string) { - const uri = Uri.file(fileLocation); - try { - await window.showTextDocument(uri, { preview: false }); - } catch (e) { - const msg = getErrorMessage(e); - if ( - msg.includes( - 'Files above 50MB cannot be synchronized with extensions' - ) || - msg.includes('too large to open') - ) { - const res = await showBinaryChoiceDialog( - `VS Code does not allow extensions to open files >50MB. This file -exceeds that limit. Do you want to open it outside of VS Code? - -You can also try manually opening it inside VS Code by selecting -the file in the file explorer and dragging it into the workspace.` - ); - if (res) { - try { - await commands.executeCommand('revealFileInOS', uri); - } catch (e) { - void showAndLogErrorMessage(getErrorMessage(e)); - } - } - } else { - void showAndLogErrorMessage(`Could not open file ${fileLocation}`); - void logger.log(getErrorMessage(e)); - void logger.log(getErrorStack(e)); - } - } - } - - private async findOtherQueryToCompare( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ): Promise { - - // Remote queries cannot be compared - if (singleItem.t !== 'local' || multiSelect.some(s => s.t !== 'local') || !singleItem.completedQuery) { - return undefined; - } - const dbName = singleItem.initialInfo.databaseInfo.name; - - // if exactly 2 queries are selected, use those - if (multiSelect?.length === 2) { - // return the query that is not the first selected one - const otherQuery = - (singleItem === multiSelect[0] ? multiSelect[1] : multiSelect[0]) as LocalQueryInfo; - if (!otherQuery.completedQuery) { - throw new Error('Please select a completed query.'); - } - if (!otherQuery.completedQuery.didRunSuccessfully) { - throw new Error('Please select a successful query.'); - } - if (otherQuery.initialInfo.databaseInfo.name !== dbName) { - throw new Error('Query databases must be the same.'); - } - return otherQuery as CompletedLocalQueryInfo; - } - - if (multiSelect?.length > 2) { - throw new Error('Please select no more than 2 queries.'); - } - - // otherwise, let the user choose - const comparableQueryLabels = this.treeDataProvider.allHistory - .filter( - (otherQuery) => - otherQuery !== singleItem && - otherQuery.t === 'local' && - otherQuery.completedQuery && - otherQuery.completedQuery.didRunSuccessfully && - otherQuery.initialInfo.databaseInfo.name === dbName - ) - .map((item) => ({ - label: this.labelProvider.getLabel(item), - description: (item as CompletedLocalQueryInfo).initialInfo.databaseInfo.name, - detail: (item as CompletedLocalQueryInfo).completedQuery.statusString, - query: item as CompletedLocalQueryInfo, - })); - if (comparableQueryLabels.length < 1) { - throw new Error('No other queries available to compare with.'); - } - const choice = await window.showQuickPick(comparableQueryLabels); - return choice?.query; - } - - private assertSingleQuery(multiSelect: QueryHistoryInfo[] = [], message = 'Please select a single query.') { - if (multiSelect.length > 1) { - void showAndLogErrorMessage( - message - ); - return false; - } - return true; - } - - /** - * Updates the compare with source query. This ensures that all compare command invocations - * when exactly 2 queries are selected always have the proper _from_ query. Always use - * compareWithItem as the _from_ query. - * - * The heuristic is this: - * - * 1. If selection is empty or has length > 2 delete compareWithItem. - * 2. If selection is length 1, then set that item to compareWithItem. - * 3. If selection is length 2, then make sure compareWithItem is one of the selected items - * if not, then delete compareWithItem. If it is then, do nothing. - * - * This ensures that compareWithItem is always the first item selected if there are only - * two selected items. - * - * @param newSelection the new selection after the most recent selection change - */ - private updateCompareWith(newSelection: LocalQueryInfo[]) { - if (newSelection.length === 1) { - this.compareWithItem = newSelection[0]; - } else if ( - newSelection.length !== 2 || - !this.compareWithItem || - !newSelection.includes(this.compareWithItem) - ) { - this.compareWithItem = undefined; - } - } - - /** - * If no items are selected, attempt to grab the selection from the treeview. - * However, often the treeview itself does not have any selection. In this case, - * grab the selection from the `treeDataProvider` current item. - * - * We need to use this method because when clicking on commands from the view title - * bar, the selections are not passed in. - * - * @param singleItem the single item selected, or undefined if no item is selected - * @param multiSelect a multi-select or undefined if no items are selected - */ - private determineSelection( - singleItem: QueryHistoryInfo, - multiSelect: QueryHistoryInfo[] - ): { - finalSingleItem: QueryHistoryInfo; - finalMultiSelect: QueryHistoryInfo[] - } { - if (!singleItem && !multiSelect?.[0]) { - const selection = this.treeView.selection; - const current = this.treeDataProvider.getCurrent(); - if (selection?.length) { - return { - finalSingleItem: selection[0], - finalMultiSelect: [...selection] - }; - } else if (current) { - return { - finalSingleItem: current, - finalMultiSelect: [current] - }; - } - } - - // ensure we only return undefined if we have neither a single or multi-selecion - if (singleItem && !multiSelect?.[0]) { - multiSelect = [singleItem]; - } else if (!singleItem && multiSelect?.[0]) { - singleItem = multiSelect[0]; - } - return { - finalSingleItem: singleItem, - finalMultiSelect: multiSelect - }; - } - - async refreshTreeView(): Promise { - this.treeDataProvider.refresh(); - await this.writeQueryHistory(); - } - - private async openQueryResults(item: QueryHistoryInfo) { - if (item.t === 'local') { - await this.localQueriesInterfaceManager.showResults(item as CompletedLocalQueryInfo, WebviewReveal.Forced, false); - } - else if (item.t === 'remote') { - await this.remoteQueriesManager.openRemoteQueryResults(item.queryId); - } - } -} diff --git a/extensions/ql-vscode/src/query-history/history-item-label-provider.ts b/extensions/ql-vscode/src/query-history/history-item-label-provider.ts new file mode 100644 index 00000000000..8787e025daf --- /dev/null +++ b/extensions/ql-vscode/src/query-history/history-item-label-provider.ts @@ -0,0 +1,148 @@ +import { env } from "vscode"; +import { basename } from "path"; +import type { QueryHistoryConfig } from "../config"; +import type { LocalQueryInfo } from "../query-results"; +import type { QueryHistoryInfo } from "./query-history-info"; +import { + buildRepoLabel, + getLanguage, + getRawQueryName, +} from "./query-history-info"; +import type { VariantAnalysisHistoryItem } from "./variant-analysis-history-item"; +import { assertNever } from "../common/helpers-pure"; +import { pluralize } from "../common/word"; +import { humanizeQueryStatus } from "./query-status"; +import { substituteConfigVariables } from "../common/config-template"; + +type LabelVariables = { + startTime: string; + queryName: string; + databaseName: string; + resultCount: string; + status: string; + queryFileBasename: string; + queryLanguage: string; +}; + +const legacyVariableInterpolateReplacements: Record< + keyof LabelVariables, + string +> = { + startTime: "t", + queryName: "q", + databaseName: "d", + resultCount: "r", + status: "s", + queryFileBasename: "f", + queryLanguage: "l", +}; + +// If any of the "legacy" variables are used, we need to use legacy interpolation. +const legacyLabelRegex = new RegExp( + `%([${Object.values(legacyVariableInterpolateReplacements).join("")}%])`, + "g", +); + +export class HistoryItemLabelProvider { + constructor(private config: QueryHistoryConfig) { + /**/ + } + + getLabel(item: QueryHistoryInfo) { + let variables: LabelVariables; + switch (item.t) { + case "local": + variables = this.getLocalVariables(item); + break; + case "variant-analysis": + variables = this.getVariantAnalysisVariables(item); + break; + default: + assertNever(item); + } + + const rawLabel = + item.userSpecifiedLabel ?? (this.config.format || "${queryName}"); + + legacyLabelRegex.lastIndex = 0; // Reset the regex index to start searching from the start of the string if the strings are the same + if (legacyLabelRegex.test(rawLabel)) { + return this.legacyInterpolate(rawLabel, variables); + } + + return substituteConfigVariables(rawLabel, variables).replace(/\s+/g, " "); + } + + /** + * If there is a user-specified label for this query, interpolate and use that. + * Otherwise, use the raw name of this query. + * + * @returns the name of the query, unless there is a custom label for this query. + */ + getShortLabel(item: QueryHistoryInfo): string { + return item.userSpecifiedLabel + ? this.getLabel(item) + : getRawQueryName(item); + } + + private legacyInterpolate( + rawLabel: string, + variables: LabelVariables, + ): string { + const replacements = Object.entries(variables).reduce( + (acc, [key, value]) => { + acc[ + legacyVariableInterpolateReplacements[key as keyof LabelVariables] + ] = value; + return acc; + }, + { + "%": "%", + } as Record, + ); + + const label = rawLabel.replace(/%(.)/g, (match, key: string) => { + const replacement = replacements[key]; + return replacement !== undefined ? replacement : match; + }); + + return label.replace(/\s+/g, " "); + } + + private getLocalVariables(item: LocalQueryInfo): LabelVariables { + const { resultCount = 0, message = "in progress" } = + item.completedQuery || {}; + return { + startTime: item.startTime, + queryName: item.getQueryName(), + databaseName: item.databaseName, + resultCount: resultCount === -1 ? "" : `(${resultCount} results)`, + status: message, + queryFileBasename: item.getQueryFileName(), + queryLanguage: this.getLanguageLabel(item), + }; + } + + private getVariantAnalysisVariables( + item: VariantAnalysisHistoryItem, + ): LabelVariables { + const resultCount = item.resultCount + ? `(${pluralize(item.resultCount, "result", "results")})` + : ""; + return { + startTime: new Date( + item.variantAnalysis.executionStartTime, + ).toLocaleString(env.language), + queryName: `${item.variantAnalysis.query.name} (${item.variantAnalysis.language})`, + databaseName: buildRepoLabel(item), + resultCount, + status: humanizeQueryStatus(item.status), + queryFileBasename: basename(item.variantAnalysis.query.filePath), + queryLanguage: this.getLanguageLabel(item), + }; + } + + private getLanguageLabel(item: QueryHistoryInfo): string { + const language = getLanguage(item); + return language === undefined ? "unknown" : `${language}`; + } +} diff --git a/extensions/ql-vscode/src/query-history/history-tree-data-provider.ts b/extensions/ql-vscode/src/query-history/history-tree-data-provider.ts new file mode 100644 index 00000000000..7b355539a9a --- /dev/null +++ b/extensions/ql-vscode/src/query-history/history-tree-data-provider.ts @@ -0,0 +1,251 @@ +import type { Event, ProviderResult, TreeDataProvider } from "vscode"; +import { env, EventEmitter, ThemeColor, ThemeIcon, TreeItem } from "vscode"; +import { DisposableObject } from "../common/disposable-object"; +import { assertNever } from "../common/helpers-pure"; +import type { QueryHistoryInfo } from "./query-history-info"; +import { getLanguage } from "./query-history-info"; +import { QueryStatus } from "./query-status"; +import type { HistoryItemLabelProvider } from "./history-item-label-provider"; +import type { LanguageContextStore } from "../language-context-store"; + +export enum SortOrder { + NameAsc = "NameAsc", + NameDesc = "NameDesc", + DateAsc = "DateAsc", + DateDesc = "DateDesc", + CountAsc = "CountAsc", + CountDesc = "CountDesc", +} + +/** + * Tree data provider for the query history view. + */ +export class HistoryTreeDataProvider + extends DisposableObject + implements TreeDataProvider +{ + private _sortOrder = SortOrder.DateAsc; + + private _onDidChangeTreeData = super.push( + new EventEmitter(), + ); + + readonly onDidChangeTreeData: Event = + this._onDidChangeTreeData.event; + + private _onDidChangeCurrentQueryItem = super.push( + new EventEmitter(), + ); + + public readonly onDidChangeCurrentQueryItem = + this._onDidChangeCurrentQueryItem.event; + + private history: QueryHistoryInfo[] = []; + + private current: QueryHistoryInfo | undefined; + + constructor( + private readonly labelProvider: HistoryItemLabelProvider, + private readonly languageContext: LanguageContextStore, + ) { + super(); + } + + async getTreeItem(element: QueryHistoryInfo): Promise { + const treeItem = new TreeItem(this.labelProvider.getLabel(element)); + + treeItem.command = { + title: "Query History Item", + command: "codeQLQueryHistory.itemClicked", + arguments: [element], + tooltip: element.failureReason || this.labelProvider.getLabel(element), + }; + + // Populate the icon and the context value. We use the context value to + // control which commands are visible in the context menu. + treeItem.iconPath = this.getIconPath(element); + treeItem.contextValue = await this.getContextValue(element); + + return treeItem; + } + + private getIconPath(element: QueryHistoryInfo): ThemeIcon | string { + switch (element.status) { + case QueryStatus.InProgress: + return new ThemeIcon("sync~spin"); + case QueryStatus.Completed: + if (element.t === "local") { + return new ThemeIcon("database"); + } else { + return new ThemeIcon("cloud"); + } + case QueryStatus.Failed: + return new ThemeIcon("error", new ThemeColor("errorForeground")); + default: + assertNever(element.status); + } + } + + private async getContextValue(element: QueryHistoryInfo): Promise { + switch (element.status) { + case QueryStatus.InProgress: + if (element.t === "local") { + return "inProgressResultsItem"; + } else if ( + element.t === "variant-analysis" && + element.variantAnalysis.actionsWorkflowRunId === undefined + ) { + return "pendingRemoteResultsItem"; + } else { + return "inProgressRemoteResultsItem"; + } + case QueryStatus.Completed: + if (element.t === "local") { + const hasResults = + await element.completedQuery?.query.hasInterpretedResults(); + return hasResults ? "interpretedResultsItem" : "rawResultsItem"; + } else { + return "remoteResultsItem"; + } + case QueryStatus.Failed: + if (element.t === "local") { + return "cancelledResultsItem"; + } else if (element.variantAnalysis.actionsWorkflowRunId === undefined) { + return "cancelledRemoteResultsItemWithoutLogs"; + } else { + return "cancelledRemoteResultsItem"; + } + + default: + assertNever(element.status); + } + } + + getChildren(element?: QueryHistoryInfo): ProviderResult { + return element + ? [] + : this.history + .filter((h) => { + return this.languageContext.shouldInclude(getLanguage(h)); + }) + .sort((h1, h2) => { + const h1Label = this.labelProvider.getLabel(h1).toLowerCase(); + const h2Label = this.labelProvider.getLabel(h2).toLowerCase(); + + const h1Date = this.getItemDate(h1); + + const h2Date = this.getItemDate(h2); + + const resultCount1 = + h1.t === "local" + ? (h1.completedQuery?.resultCount ?? -1) + : (h1.resultCount ?? -1); + const resultCount2 = + h2.t === "local" + ? (h2.completedQuery?.resultCount ?? -1) + : (h2.resultCount ?? -1); + + switch (this.sortOrder) { + case SortOrder.NameAsc: + return h1Label.localeCompare(h2Label, env.language); + + case SortOrder.NameDesc: + return h2Label.localeCompare(h1Label, env.language); + + case SortOrder.DateAsc: + return h1Date - h2Date; + + case SortOrder.DateDesc: + return h2Date - h1Date; + + case SortOrder.CountAsc: + // If the result counts are equal, sort by name. + return resultCount1 - resultCount2 === 0 + ? h1Label.localeCompare(h2Label, env.language) + : resultCount1 - resultCount2; + + case SortOrder.CountDesc: + // If the result counts are equal, sort by name. + return resultCount2 - resultCount1 === 0 + ? h2Label.localeCompare(h1Label, env.language) + : resultCount2 - resultCount1; + default: + assertNever(this.sortOrder); + } + }); + } + + getParent(_element: QueryHistoryInfo): ProviderResult { + return null; + } + + getCurrent(): QueryHistoryInfo | undefined { + return this.current; + } + + pushQuery(item: QueryHistoryInfo): void { + this.history.push(item); + this.setCurrentItem(item); + this.refresh(); + } + + setCurrentItem(item?: QueryHistoryInfo) { + if (item !== this.current) { + this.current = item; + this._onDidChangeCurrentQueryItem.fire(item); + } + } + + remove(item: QueryHistoryInfo) { + const isCurrent = this.current === item; + if (isCurrent) { + this.setCurrentItem(); + } + const index = this.history.findIndex((i) => i === item); + if (index >= 0) { + this.history.splice(index, 1); + if (isCurrent && this.history.length > 0) { + // Try to keep a current item, near the deleted item if there + // are any available. + this.setCurrentItem( + this.history[Math.min(index, this.history.length - 1)], + ); + } + this.refresh(); + } + } + + get allHistory(): QueryHistoryInfo[] { + return this.history; + } + + set allHistory(history: QueryHistoryInfo[]) { + this.history = history; + this.setCurrentItem(history[0]); + this.refresh(); + } + + refresh() { + this._onDidChangeTreeData.fire(undefined); + } + + public get sortOrder() { + return this._sortOrder; + } + + public set sortOrder(newSortOrder: SortOrder) { + this._sortOrder = newSortOrder; + this._onDidChangeTreeData.fire(undefined); + } + + private getItemDate(item: QueryHistoryInfo) { + switch (item.t) { + case "local": + return item.initialInfo.start.getTime(); + case "variant-analysis": + return item.variantAnalysis.executionStartTime; + default: + assertNever(item); + } + } +} diff --git a/extensions/ql-vscode/src/query-history/query-history-dirs.ts b/extensions/ql-vscode/src/query-history/query-history-dirs.ts new file mode 100644 index 00000000000..46a463d7eb0 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/query-history-dirs.ts @@ -0,0 +1,4 @@ +export interface QueryHistoryDirs { + localQueriesDirPath: string; + variantAnalysesDirPath: string; +} diff --git a/extensions/ql-vscode/src/query-history/query-history-info.ts b/extensions/ql-vscode/src/query-history/query-history-info.ts new file mode 100644 index 00000000000..62d722dbbc0 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/query-history-info.ts @@ -0,0 +1,87 @@ +import type { VariantAnalysisHistoryItem } from "./variant-analysis-history-item"; +import type { LocalQueryInfo } from "../query-results"; +import { assertNever } from "../common/helpers-pure"; +import { pluralize } from "../common/word"; +import { + hasRepoScanCompleted, + getActionsWorkflowRunUrl as getVariantAnalysisActionsWorkflowRunUrl, +} from "../variant-analysis/shared/variant-analysis"; +import type { QueryLanguage } from "../common/query-language"; +import { getGitHubInstanceUrl } from "../config"; + +export type QueryHistoryInfo = LocalQueryInfo | VariantAnalysisHistoryItem; + +export function getRawQueryName(item: QueryHistoryInfo): string { + switch (item.t) { + case "local": + return item.getQueryName(); + case "variant-analysis": + return item.variantAnalysis.query.name; + default: + assertNever(item); + } +} + +/** + * Gets an identifier for the query history item which could be + * a local query or a variant analysis. This id isn't guaranteed + * to be unique for each item in the query history. + * @param item the history item. + * @returns the id of the query or variant analysis. + */ +export function getQueryId(item: QueryHistoryInfo): string { + switch (item.t) { + case "local": + return item.initialInfo.id; + case "variant-analysis": + return item.variantAnalysis.id.toString(); + default: + assertNever(item); + } +} + +export function getQueryText(item: QueryHistoryInfo): string { + switch (item.t) { + case "local": + return item.initialInfo.queryText; + case "variant-analysis": + return item.variantAnalysis.query.text; + default: + assertNever(item); + } +} + +export function getLanguage(item: QueryHistoryInfo): QueryLanguage | undefined { + switch (item.t) { + case "local": + return item.initialInfo.databaseInfo.language; + case "variant-analysis": + return item.variantAnalysis.language; + default: + assertNever(item); + } +} + +export function buildRepoLabel(item: VariantAnalysisHistoryItem): string { + const totalScannedRepositoryCount = + item.variantAnalysis.scannedRepos?.length ?? 0; + const completedRepositoryCount = + item.variantAnalysis.scannedRepos?.filter((repo) => + hasRepoScanCompleted(repo), + ).length ?? 0; + + return `${completedRepositoryCount}/${pluralize( + totalScannedRepositoryCount, + "repository", + "repositories", + )}`; // e.g. "2/3 repositories" +} + +export function getActionsWorkflowRunUrl( + item: VariantAnalysisHistoryItem, +): string { + return getVariantAnalysisActionsWorkflowRunUrl( + item.variantAnalysis, + getGitHubInstanceUrl(), + ); +} diff --git a/extensions/ql-vscode/src/query-history/query-history-manager.ts b/extensions/ql-vscode/src/query-history/query-history-manager.ts new file mode 100644 index 00000000000..edf22f9b846 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/query-history-manager.ts @@ -0,0 +1,1274 @@ +import { join, dirname } from "path"; +import type { + Disposable, + ExtensionContext, + ProviderResult, + TreeView, +} from "vscode"; +import { + env, + EventEmitter, + Range, + Uri, + ViewColumn, + window, + workspace, +} from "vscode"; +import type { QueryHistoryConfig } from "../config"; +import { + showBinaryChoiceDialog, + showInformationMessageWithAction, +} from "../common/vscode/dialog"; +import { URLSearchParams } from "url"; +import { DisposableObject } from "../common/disposable-object"; +import { ONE_HOUR_IN_MS, TWO_HOURS_IN_MS } from "../common/time"; +import { assertNever, getErrorMessage } from "../common/helpers-pure"; +import type { CompletedLocalQueryInfo } from "../query-results"; +import { LocalQueryInfo } from "../query-results"; +import type { QueryHistoryInfo } from "./query-history-info"; +import { + getActionsWorkflowRunUrl, + getQueryId, + getQueryText, +} from "./query-history-info"; +import type { DatabaseManager } from "../databases/local-databases"; +import { registerQueryHistoryScrubber } from "./query-history-scrubber"; +import { + QueryStatus, + variantAnalysisStatusToQueryStatus, +} from "./query-status"; +import { readQueryHistoryFromFile, writeQueryHistoryToFile } from "./store"; +import { pathExists } from "fs-extra"; +import type { HistoryItemLabelProvider } from "./history-item-label-provider"; +import type { ResultsView } from "../local-queries"; +import { WebviewReveal } from "../local-queries"; +import type { EvalLogViewer } from "../query-evaluation-logging"; +import { EvalLogTreeBuilder } from "../query-evaluation-logging"; +import type { EvalLogData } from "../log-insights/log-summary-parser"; +import { parseViewerData } from "../log-insights/log-summary-parser"; +import type { QueryWithResults } from "../run-queries-shared"; +import type { QueryRunner } from "../query-server"; +import type { VariantAnalysisManager } from "../variant-analysis/variant-analysis-manager"; +import type { VariantAnalysisHistoryItem } from "./variant-analysis-history-item"; +import { getTotalResultCount } from "../variant-analysis/shared/variant-analysis"; +import { + HistoryTreeDataProvider, + SortOrder, +} from "./history-tree-data-provider"; +import type { QueryHistoryDirs } from "./query-history-dirs"; +import type { QueryHistoryCommands } from "../common/commands"; +import type { App } from "../common/app"; +import { tryOpenExternalFile } from "../common/vscode/external-files"; +import { + createMultiSelectionCommand, + createSingleSelectionCommand, +} from "../common/vscode/selection-commands"; +import { + showAndLogErrorMessage, + showAndLogInformationMessage, + showAndLogWarningMessage, +} from "../common/logging"; +import type { LanguageContextStore } from "../language-context-store"; + +/** + * query-history-manager.ts + * ------------ + * Managing state of previous queries that we've executed. + * + * The source of truth of the current state resides inside the + * `TreeDataProvider` subclass below. + */ + +export const SHOW_QUERY_TEXT_MSG = `\ +//////////////////////////////////////////////////////////////////////////////////// +// This is the text of the entire query file when it was executed for this query // +// run. The text or dependent libraries may have changed since then. // +// // +// This buffer is readonly. To re-execute this query, you must open the original // +// query file. // +//////////////////////////////////////////////////////////////////////////////////// + +`; + +const SHOW_QUERY_TEXT_QUICK_EVAL_MSG = `\ +//////////////////////////////////////////////////////////////////////////////////// +// This is the Quick Eval selection of the query file when it was executed for // +// this query run. The text or dependent libraries may have changed since then. // +// // +// This buffer is readonly. To re-execute this query, you must open the original // +// query file. // +//////////////////////////////////////////////////////////////////////////////////// + +`; + +/** + * Number of milliseconds two clicks have to arrive apart to be + * considered a double-click. + */ +const DOUBLE_CLICK_TIME = 500; + +const WORKSPACE_QUERY_HISTORY_FILE = "workspace-query-history.json"; + +export class QueryHistoryManager extends DisposableObject { + treeDataProvider: HistoryTreeDataProvider; + treeView: TreeView; + lastItemClick: { time: Date; item: QueryHistoryInfo } | undefined; + compareWithItem: LocalQueryInfo | undefined; + queryHistoryScrubber: Disposable | undefined; + private queryMetadataStorageLocation; + + private readonly _onDidChangeCurrentQueryItem = super.push( + new EventEmitter(), + ); + readonly onDidChangeCurrentQueryItem = + this._onDidChangeCurrentQueryItem.event; + + private readonly _onDidCompleteQuery = super.push( + new EventEmitter(), + ); + readonly onDidCompleteQuery = this._onDidCompleteQuery.event; + + constructor( + private readonly app: App, + private readonly qs: QueryRunner, + private readonly dbm: DatabaseManager, + private readonly localQueriesResultsView: ResultsView, + private readonly variantAnalysisManager: VariantAnalysisManager, + private readonly evalLogViewer: EvalLogViewer, + private readonly queryHistoryDirs: QueryHistoryDirs, + ctx: ExtensionContext, + private readonly queryHistoryConfigListener: QueryHistoryConfig, + private readonly labelProvider: HistoryItemLabelProvider, + private readonly languageContext: LanguageContextStore, + private readonly doCompareCallback: ( + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo, + ) => Promise, + private readonly doComparePerformanceCallback: ( + from: CompletedLocalQueryInfo, + to: CompletedLocalQueryInfo | undefined, + ) => Promise, + ) { + super(); + + // Note that we use workspace storage to hold the metadata for the query history. + // This is because the query history is specific to each workspace. + // For situations where `ctx.storageUri` is undefined (i.e., there is no workspace), + // we default to global storage. + this.queryMetadataStorageLocation = join( + (ctx.storageUri || ctx.globalStorageUri).fsPath, + WORKSPACE_QUERY_HISTORY_FILE, + ); + + this.treeDataProvider = this.push( + new HistoryTreeDataProvider(this.labelProvider, this.languageContext), + ); + this.treeView = this.push( + window.createTreeView("codeQLQueryHistory", { + treeDataProvider: this.treeDataProvider, + canSelectMany: true, + }), + ); + + // Forward any change of current history item from the tree data. + this.push( + this.treeDataProvider.onDidChangeCurrentQueryItem((item) => { + this._onDidChangeCurrentQueryItem.fire(item); + }), + ); + + // Lazily update the tree view selection due to limitations of TreeView API (see + // `updateTreeViewSelectionIfVisible` doc for details) + this.push( + this.treeView.onDidChangeVisibility(async (_ev) => + this.updateTreeViewSelectionIfVisible(), + ), + ); + this.push( + this.treeView.onDidChangeSelection(async (ev) => { + if (ev.selection.length === 0) { + // Don't allow the selection to become empty + this.updateTreeViewSelectionIfVisible(); + } else { + this.treeDataProvider.setCurrentItem(ev.selection[0]); + } + if (ev.selection.some((item) => item.t !== "local")) { + // Don't allow comparison of non-local items + this.updateCompareWith([]); + } else { + this.updateCompareWith([...ev.selection] as LocalQueryInfo[]); + } + }), + ); + + // There are two configuration items that affect the query history: + // 1. The ttl for query history items. + // 2. The default label for query history items. + // When either of these change, must refresh the tree view. + this.push( + queryHistoryConfigListener.onDidChangeConfiguration(() => { + this.treeDataProvider.refresh(); + this.registerQueryHistoryScrubber( + queryHistoryConfigListener, + this, + ctx, + ); + }), + ); + + // displays query text in a read-only document + this.push( + workspace.registerTextDocumentContentProvider("codeql", { + provideTextDocumentContent(uri: Uri): ProviderResult { + const params = new URLSearchParams(uri.query); + + return ( + (JSON.parse(params.get("isQuickEval") || "") + ? SHOW_QUERY_TEXT_QUICK_EVAL_MSG + : SHOW_QUERY_TEXT_MSG) + params.get("queryText") + ); + }, + }), + ); + + this.registerQueryHistoryScrubber(queryHistoryConfigListener, this, ctx); + this.registerToVariantAnalysisEvents(); + + this.push( + this.languageContext.onLanguageContextChanged(async () => { + this.treeDataProvider.refresh(); + }), + ); + } + + public getCommands(): QueryHistoryCommands { + return { + "codeQLQueryHistory.sortByName": this.handleSortByName.bind(this), + "codeQLQueryHistory.sortByDate": this.handleSortByDate.bind(this), + "codeQLQueryHistory.sortByCount": this.handleSortByCount.bind(this), + + "codeQLQueryHistory.openQueryContextMenu": createSingleSelectionCommand( + this.app.logger, + this.handleOpenQuery.bind(this), + "query", + ), + "codeQLQueryHistory.removeHistoryItemContextMenu": + createMultiSelectionCommand(this.handleRemoveHistoryItem.bind(this)), + "codeQLQueryHistory.removeHistoryItemContextInline": + createMultiSelectionCommand(this.handleRemoveHistoryItem.bind(this)), + "codeQLQueryHistory.renameItem": createSingleSelectionCommand( + this.app.logger, + this.handleRenameItem.bind(this), + "query", + ), + "codeQLQueryHistory.compareWith": this.handleCompareWith.bind(this), + "codeQLQueryHistory.comparePerformanceWith": + this.handleComparePerformanceWith.bind(this), + "codeQLQueryHistory.showEvalLog": createSingleSelectionCommand( + this.app.logger, + this.handleShowEvalLog.bind(this), + "query", + ), + "codeQLQueryHistory.showEvalLogSummary": createSingleSelectionCommand( + this.app.logger, + this.handleShowEvalLogSummary.bind(this), + "query", + ), + "codeQLQueryHistory.showEvalLogViewer": createSingleSelectionCommand( + this.app.logger, + this.handleShowEvalLogViewer.bind(this), + "query", + ), + "codeQLQueryHistory.showQueryLog": createSingleSelectionCommand( + this.app.logger, + this.handleShowQueryLog.bind(this), + "query", + ), + "codeQLQueryHistory.showQueryText": createSingleSelectionCommand( + this.app.logger, + this.handleShowQueryText.bind(this), + "query", + ), + "codeQLQueryHistory.openQueryDirectory": createSingleSelectionCommand( + this.app.logger, + this.handleOpenQueryDirectory.bind(this), + "query", + ), + "codeQLQueryHistory.cancel": createMultiSelectionCommand( + this.handleCancel.bind(this), + ), + "codeQLQueryHistory.exportResults": createSingleSelectionCommand( + this.app.logger, + this.handleExportResults.bind(this), + "query", + ), + "codeQLQueryHistory.viewCsvResults": createSingleSelectionCommand( + this.app.logger, + this.handleViewCsvResults.bind(this), + "query", + ), + "codeQLQueryHistory.viewCsvAlerts": createSingleSelectionCommand( + this.app.logger, + this.handleViewCsvAlerts.bind(this), + "query", + ), + "codeQLQueryHistory.viewSarifAlerts": createSingleSelectionCommand( + this.app.logger, + this.handleViewSarifAlerts.bind(this), + "query", + ), + "codeQLQueryHistory.viewDil": createSingleSelectionCommand( + this.app.logger, + this.handleViewDil.bind(this), + "query", + ), + "codeQLQueryHistory.itemClicked": createSingleSelectionCommand( + this.app.logger, + this.handleItemClicked.bind(this), + "query", + ), + "codeQLQueryHistory.openOnGithub": createSingleSelectionCommand( + this.app.logger, + this.handleOpenOnGithub.bind(this), + "query", + ), + "codeQLQueryHistory.viewAutofixes": createSingleSelectionCommand( + this.app.logger, + this.handleViewAutofixes.bind(this), + "query", + ), + "codeQLQueryHistory.copyRepoList": createSingleSelectionCommand( + this.app.logger, + this.handleCopyRepoList.bind(this), + "query", + ), + + "codeQL.exportSelectedVariantAnalysisResults": + this.exportSelectedVariantAnalysisResults.bind(this), + }; + } + + public completeQueries( + info: LocalQueryInfo, + results: QueryWithResults[], + ): void { + let first = true; + // Sorting results by the output/results basename should produce a deterministic order. + results.sort((a, b) => { + const aPath = a.query.outputBaseName; + const bPath = b.query.outputBaseName; + return aPath.localeCompare(bPath); + }); + for (const result of results) { + if (first) { + // This is the first query, so we can just update the existing info. + info.completeThisQuery(result); + first = false; + } else { + // For other queries in the same run, we'll add new entries to the history pane. In the long + // term, it would be better if we could have a single entry containing sub-entries for each + // query. + const clonedInfo = new LocalQueryInfo( + info.initialInfo, + undefined, + info.failureReason, + undefined, + info.evaluatorLogPaths, + ); + clonedInfo.completeThisQuery(result); + this.addQuery(clonedInfo); + } + } + this._onDidCompleteQuery.fire(info); + } + + /** + * Register and create the history scrubber. + */ + private registerQueryHistoryScrubber( + queryHistoryConfigListener: QueryHistoryConfig, + qhm: QueryHistoryManager, + ctx: ExtensionContext, + ) { + this.queryHistoryScrubber?.dispose(); + // Every hour check if we need to re-run the query history scrubber. + this.queryHistoryScrubber = this.push( + registerQueryHistoryScrubber( + ONE_HOUR_IN_MS, + TWO_HOURS_IN_MS, + queryHistoryConfigListener.ttlInMillis, + this.queryHistoryDirs, + qhm, + ctx, + ), + ); + } + + private registerToVariantAnalysisEvents() { + const variantAnalysisAddedSubscription = + this.variantAnalysisManager.onVariantAnalysisAdded( + async (variantAnalysis) => { + if (variantAnalysis.queries !== undefined) { + // This is a variant analysis that contains multiple queries, which + // is not fully supported yet. So we ignore it from the query history. + return; + } + this.addQuery({ + t: "variant-analysis", + status: QueryStatus.InProgress, + completed: false, + variantAnalysis, + }); + + await this.refreshTreeView(); + }, + ); + + const variantAnalysisStatusUpdateSubscription = + this.variantAnalysisManager.onVariantAnalysisStatusUpdated( + async (variantAnalysis) => { + const items = this.treeDataProvider.allHistory.filter( + (i) => + i.t === "variant-analysis" && + i.variantAnalysis.id === variantAnalysis.id, + ); + const status = variantAnalysisStatusToQueryStatus( + variantAnalysis.status, + ); + + if (items.length > 0) { + items.forEach((item) => { + const variantAnalysisHistoryItem = + item as VariantAnalysisHistoryItem; + variantAnalysisHistoryItem.status = status; + variantAnalysisHistoryItem.failureReason = + variantAnalysis.failureReason; + variantAnalysisHistoryItem.resultCount = getTotalResultCount( + variantAnalysis.scannedRepos, + ); + variantAnalysisHistoryItem.variantAnalysis = variantAnalysis; + if (status === QueryStatus.Completed) { + variantAnalysisHistoryItem.completed = true; + } + }); + await this.refreshTreeView(); + } else { + if (variantAnalysis.queries !== undefined) { + // This is a variant analysis that contains multiple queries, which + // is not fully supported yet. So we ignore it from the query history. + return; + } + void this.app.logger.log( + "Variant analysis status update event received for unknown variant analysis", + ); + } + }, + ); + + const variantAnalysisRemovedSubscription = + this.variantAnalysisManager.onVariantAnalysisRemoved( + async (variantAnalysis) => { + const items = this.treeDataProvider.allHistory.filter( + (i) => + i.t === "variant-analysis" && + i.variantAnalysis.id === variantAnalysis.id, + ); + await Promise.all( + items.map(async (item) => { + await this.removeVariantAnalysis( + item as VariantAnalysisHistoryItem, + ); + }), + ); + }, + ); + + this.push(variantAnalysisAddedSubscription); + this.push(variantAnalysisStatusUpdateSubscription); + this.push(variantAnalysisRemovedSubscription); + } + + async readQueryHistory(): Promise { + void this.app.logger.log( + `Reading cached query history from '${this.queryMetadataStorageLocation}'.`, + ); + const history = await readQueryHistoryFromFile( + this.queryMetadataStorageLocation, + ); + this.treeDataProvider.allHistory = history; + await Promise.all( + this.treeDataProvider.allHistory.map(async (item) => { + if (item.t === "variant-analysis") { + await this.variantAnalysisManager.rehydrateVariantAnalysis( + item.variantAnalysis, + ); + } + }), + ); + } + + async writeQueryHistory(): Promise { + await writeQueryHistoryToFile( + this.treeDataProvider.allHistory, + this.queryMetadataStorageLocation, + ); + } + + async handleOpenQuery(item: QueryHistoryInfo): Promise { + if (item.t === "variant-analysis") { + await this.variantAnalysisManager.openQueryFile(item.variantAnalysis.id); + return; + } + + let queryPath: string; + switch (item.t) { + case "local": + queryPath = item.initialInfo.queryPath; + break; + default: + assertNever(item); + } + const textDocument = await workspace.openTextDocument(Uri.file(queryPath)); + const editor = await window.showTextDocument(textDocument, ViewColumn.One); + + if (item.t === "local") { + const queryText = item.initialInfo.queryText; + if (queryText !== undefined && item.initialInfo.isQuickQuery) { + await editor.edit((edit) => + edit.replace( + textDocument.validateRange( + new Range(0, 0, textDocument.lineCount, 0), + ), + queryText, + ), + ); + } + } + } + + getCurrentQueryHistoryItem(): QueryHistoryInfo | undefined { + return this.treeDataProvider.getCurrent(); + } + + async removeDeletedQueries() { + await Promise.all( + this.treeDataProvider.allHistory.map(async (item) => { + if ( + item.t === "local" && + item.completedQuery && + !(await pathExists(item.completedQuery?.query.querySaveDir)) + ) { + this.treeDataProvider.remove(item); + } + }), + ); + } + + async handleRemoveHistoryItem(items: QueryHistoryInfo[]) { + await Promise.all( + items.map(async (item) => { + if (item.t === "local") { + // Removing in progress local queries is not supported. They must be cancelled first. + if (item.status !== QueryStatus.InProgress) { + this.treeDataProvider.remove(item); + + // User has explicitly asked for this query to be removed. + // We need to delete it from disk as well. + await item.completedQuery?.query.deleteQuery(); + } + } else if (item.t === "variant-analysis") { + await this.removeVariantAnalysis(item); + } else { + assertNever(item); + } + }), + ); + + await Promise.all( + this.treeDataProvider.allHistory.map(async (item) => { + // Remove any local queries whose directories no longer exist. This can happen when running + // a query suite, which produces multiple queries in the history pane that all share the + // same underlying directory, which we may have just deleted above. (Ideally, there would be + // a first-class concept of a local multi-query run in this pane that would group them all + // together, but doing it this way at least avoids cluttering the history pane with entries + // that can no longer be viewed). + if (item.t === "local") { + const dir = item.completedQuery?.query.querySaveDir; + if (dir && !(await pathExists(dir))) { + this.treeDataProvider.remove(item); + } + } + }), + ); + + await this.writeQueryHistory(); + const current = this.treeDataProvider.getCurrent(); + if (current !== undefined) { + await this.treeView.reveal(current, { select: true }); + await this.openQueryResults(current); + } + } + + private async removeVariantAnalysis( + item: VariantAnalysisHistoryItem, + ): Promise { + // We can remove a Variant Analysis locally, but not remotely. + // The user must cancel the query on GitHub Actions explicitly. + if (item.status === QueryStatus.InProgress) { + const response = await showBinaryChoiceDialog( + `You are about to delete this query: ${this.labelProvider.getLabel( + item, + )}. Are you sure?`, + ); + if (!response) { + return; + } + } + + this.treeDataProvider.remove(item); + void this.app.logger.log(`Deleted ${this.labelProvider.getLabel(item)}.`); + + if (item.status === QueryStatus.InProgress) { + await this.showToastWithWorkflowRunLink(item); + } + + await this.variantAnalysisManager.removeVariantAnalysis( + item.variantAnalysis, + ); + } + + private async showToastWithWorkflowRunLink( + item: VariantAnalysisHistoryItem, + ): Promise { + const workflowRunUrl = getActionsWorkflowRunUrl(item); + const message = `Remote query has been removed from history. However, the variant analysis is still running on GitHub Actions. To cancel it, you must go to the [workflow run](${workflowRunUrl}) in your browser.`; + + void showInformationMessageWithAction(message, "Go to workflow run").then( + async (shouldOpenWorkflowRun) => { + if (!shouldOpenWorkflowRun) { + return; + } + await env.openExternal(Uri.parse(workflowRunUrl)); + }, + ); + } + + async handleSortByName() { + if (this.treeDataProvider.sortOrder === SortOrder.NameAsc) { + this.treeDataProvider.sortOrder = SortOrder.NameDesc; + } else { + this.treeDataProvider.sortOrder = SortOrder.NameAsc; + } + } + + async handleSortByDate() { + if (this.treeDataProvider.sortOrder === SortOrder.DateAsc) { + this.treeDataProvider.sortOrder = SortOrder.DateDesc; + } else { + this.treeDataProvider.sortOrder = SortOrder.DateAsc; + } + } + + async handleSortByCount() { + if (this.treeDataProvider.sortOrder === SortOrder.CountAsc) { + this.treeDataProvider.sortOrder = SortOrder.CountDesc; + } else { + this.treeDataProvider.sortOrder = SortOrder.CountAsc; + } + } + + async handleRenameItem(item: QueryHistoryInfo): Promise { + const response = await window.showInputBox({ + placeHolder: `(use default: ${this.queryHistoryConfigListener.format})`, + value: item.userSpecifiedLabel ?? "", + title: "Set query label", + prompt: + "Set the query history item label. See the description of the codeQL.queryHistory.format setting for more information.", + }); + // undefined response means the user cancelled the dialog; don't change anything + if (response !== undefined) { + // Interpret empty string response as 'go back to using default' + item.userSpecifiedLabel = response === "" ? undefined : response; + await this.refreshTreeView(); + } + } + + isSuccessfulCompletedLocalQueryInfo( + item: QueryHistoryInfo, + ): item is CompletedLocalQueryInfo { + return item.t === "local" && item.completedQuery?.successful === true; + } + + async handleCompareWith( + singleItem: QueryHistoryInfo, + multiSelect: QueryHistoryInfo[] | undefined, + ) { + multiSelect ||= [singleItem]; + + if ( + !this.isSuccessfulCompletedLocalQueryInfo(singleItem) || + !multiSelect.every(this.isSuccessfulCompletedLocalQueryInfo) + ) { + throw new Error( + "Please only select local queries that have completed successfully.", + ); + } + + const fromItem = this.getFromQueryToCompare(singleItem, multiSelect); + + let toItem: CompletedLocalQueryInfo | undefined = undefined; + try { + toItem = await this.findOtherQueryToCompare(fromItem, multiSelect); + } catch (e) { + void showAndLogErrorMessage( + this.app.logger, + `Failed to compare queries: ${getErrorMessage(e)}`, + ); + } + + if (toItem !== undefined) { + await this.doCompareCallback(fromItem, toItem); + } + } + + async handleComparePerformanceWith( + singleItem: QueryHistoryInfo, + multiSelect: QueryHistoryInfo[] | undefined, + ) { + multiSelect ||= [singleItem]; + + if ( + !this.isSuccessfulCompletedLocalQueryInfo(singleItem) || + !multiSelect.every(this.isSuccessfulCompletedLocalQueryInfo) + ) { + throw new Error( + "Please only select local queries that have completed successfully.", + ); + } + + const fromItem = this.getFromQueryToCompare(singleItem, multiSelect); + + let toItem: CompletedLocalQueryInfo | undefined = undefined; + try { + toItem = await this.findOtherQueryToComparePerformance( + fromItem, + multiSelect, + ); + } catch (e) { + void showAndLogErrorMessage( + this.app.logger, + `Failed to compare queries: ${getErrorMessage(e)}`, + ); + } + + await this.doComparePerformanceCallback(fromItem, toItem); + } + + async handleItemClicked(item: QueryHistoryInfo) { + this.treeDataProvider.setCurrentItem(item); + + const now = new Date(); + const prevItemClick = this.lastItemClick; + this.lastItemClick = { time: now, item }; + + if ( + prevItemClick !== undefined && + now.valueOf() - prevItemClick.time.valueOf() < DOUBLE_CLICK_TIME && + item === prevItemClick.item + ) { + // show original query file on double click + await this.handleOpenQuery(item); + } else if ( + item.t === "variant-analysis" || + item.status === QueryStatus.Completed + ) { + // show results on single click (if results view is available) + await this.openQueryResults(item); + } + } + + async handleShowQueryLog(item: QueryHistoryInfo) { + // Local queries only + if (item?.t !== "local" || !item.completedQuery) { + return; + } + + if (item.completedQuery.logFileLocation) { + await tryOpenExternalFile( + this.app.commands, + item.completedQuery.logFileLocation, + ); + } else { + void showAndLogWarningMessage(this.app.logger, "No log file available"); + } + } + + async handleOpenQueryDirectory(item: QueryHistoryInfo) { + let externalFilePath: string | undefined; + if (item.t === "local") { + const querySaveDir = + item.initialInfo.outputDir?.querySaveDir ?? + item.completedQuery?.query.querySaveDir; + + if (querySaveDir) { + externalFilePath = join(querySaveDir, "timestamp"); + } + } else if (item.t === "variant-analysis") { + externalFilePath = join( + this.variantAnalysisManager.getVariantAnalysisStorageLocation( + item.variantAnalysis.id, + ), + "timestamp", + ); + } else { + assertNever(item); + } + + if (externalFilePath) { + if (!(await pathExists(externalFilePath))) { + // timestamp file is missing (manually deleted?) try selecting the parent folder. + // It's less nice, but at least it will work. + externalFilePath = dirname(externalFilePath); + if (!(await pathExists(externalFilePath))) { + throw new Error( + `Query directory does not exist: ${externalFilePath}`, + ); + } + } + try { + await this.app.commands.execute( + "revealFileInOS", + Uri.file(externalFilePath), + ); + } catch (e) { + throw new Error( + `Failed to open ${externalFilePath}: ${getErrorMessage(e)}`, + ); + } + } else { + this.warnNoQueryDir(); + } + } + + private warnNoQueryDir() { + void showAndLogWarningMessage( + this.app.logger, + `Results directory is not available for this run.`, + ); + } + + private warnNoEvalLogs() { + void showAndLogWarningMessage( + this.app.logger, + `Evaluator log, summary, and viewer are not available for this run. Perhaps it failed before evaluation?`, + ); + } + + private async warnNoEvalLogSummary(item: LocalQueryInfo) { + const evalLogLocation = + item.evaluatorLogPaths?.log ?? item.initialInfo.outputDir?.evalLogPath; + + // Summary log file doesn't exist. + if (evalLogLocation && (await pathExists(evalLogLocation))) { + // If raw log does exist, then the summary log is still being generated. + void showAndLogWarningMessage( + this.app.logger, + 'The evaluator log summary is still being generated for this run. Please try again later. The summary generation process is tracked in the "CodeQL Extension Log" view.', + ); + } else { + this.warnNoEvalLogs(); + } + } + + async handleShowEvalLog(item: QueryHistoryInfo) { + if (item.t !== "local") { + return; + } + + const evalLogLocation = + item.evaluatorLogPaths?.log ?? item.initialInfo.outputDir?.evalLogPath; + + if (evalLogLocation && (await pathExists(evalLogLocation))) { + await tryOpenExternalFile(this.app.commands, evalLogLocation); + } else { + this.warnNoEvalLogs(); + } + } + + async handleShowEvalLogSummary(item: QueryHistoryInfo) { + if (item.t !== "local") { + return; + } + + // If the summary file location wasn't saved, display error + if (!item.evaluatorLogPaths?.humanReadableSummary) { + await this.warnNoEvalLogSummary(item); + return; + } + + await tryOpenExternalFile( + this.app.commands, + item.evaluatorLogPaths.humanReadableSummary, + ); + } + + async handleShowEvalLogViewer(item: QueryHistoryInfo) { + if (item.t !== "local") { + return; + } + + // If the JSON summary file location wasn't saved, display error + if (item.evaluatorLogPaths?.jsonSummary === undefined) { + await this.warnNoEvalLogSummary(item); + return; + } + + // TODO(angelapwen): Stream the file in. + try { + const evalLogData: EvalLogData[] = await parseViewerData( + item.evaluatorLogPaths.jsonSummary, + ); + const evalLogTreeBuilder = new EvalLogTreeBuilder( + item.getQueryName(), + evalLogData, + ); + this.evalLogViewer.updateRoots(await evalLogTreeBuilder.getRoots()); + } catch { + throw new Error( + `Could not read evaluator log summary JSON file to generate viewer data at ${item.evaluatorLogPaths.jsonSummary}.`, + ); + } + } + + async handleCancel(items: QueryHistoryInfo[]) { + const results = items.map(async (item) => { + if (item.status === QueryStatus.InProgress) { + if (item.t === "local") { + item.cancel(); + } else if (item.t === "variant-analysis") { + await this.variantAnalysisManager.cancelVariantAnalysis( + item.variantAnalysis.id, + ); + } else { + assertNever(item); + } + } + }); + + await Promise.all(results); + } + + async handleShowQueryText(item: QueryHistoryInfo) { + if (item.t === "variant-analysis") { + await this.variantAnalysisManager.openQueryText(item.variantAnalysis.id); + return; + } + + const params = new URLSearchParams({ + isQuickEval: String( + !!(item.t === "local" && item.initialInfo.quickEvalPosition), + ), + queryText: encodeURIComponent(getQueryText(item)), + }); + + const queryId = getQueryId(item); + + const uri = Uri.parse(`codeql:${queryId}.ql?${params.toString()}`, true); + const doc = await workspace.openTextDocument(uri); + await window.showTextDocument(doc, { preview: false }); + } + + async handleViewSarifAlerts(item: QueryHistoryInfo) { + if (item.t !== "local" || !item.completedQuery) { + return; + } + + const query = item.completedQuery.query; + const hasInterpretedResults = query.canHaveInterpretedResults(); + if (hasInterpretedResults) { + await tryOpenExternalFile( + this.app.commands, + query.interpretedResultsPath, + ); + } else { + const label = this.labelProvider.getLabel(item); + void showAndLogInformationMessage( + this.app.logger, + `Query ${label} has no interpreted results.`, + ); + } + } + + async handleViewCsvResults(item: QueryHistoryInfo) { + if (item.t !== "local" || !item.completedQuery) { + return; + } + const query = item.completedQuery.query; + if (await query.hasCsv()) { + void tryOpenExternalFile(this.app.commands, query.csvPath); + return; + } + if (await query.exportCsvResults(this.qs.cliServer, query.csvPath)) { + void tryOpenExternalFile(this.app.commands, query.csvPath); + } + } + + async handleViewCsvAlerts(item: QueryHistoryInfo) { + if (item.t !== "local" || !item.completedQuery) { + return; + } + + await tryOpenExternalFile( + this.app.commands, + await item.completedQuery.query.ensureCsvAlerts( + this.qs.cliServer, + this.dbm, + ), + ); + } + + async handleViewDil(item: QueryHistoryInfo) { + if (item.t !== "local" || !item.completedQuery) { + return; + } + + await tryOpenExternalFile( + this.app.commands, + await item.completedQuery.query.ensureDilPath(this.qs.cliServer), + ); + } + + async handleOpenOnGithub(item: QueryHistoryInfo) { + if (item.t !== "variant-analysis") { + return; + } + + const actionsWorkflowRunUrl = getActionsWorkflowRunUrl(item); + + await this.app.commands.execute( + "vscode.open", + Uri.parse(actionsWorkflowRunUrl), + ); + } + + async handleViewAutofixes(item: QueryHistoryInfo) { + if (item.t !== "variant-analysis") { + return; + } + + await this.variantAnalysisManager.viewAutofixes(item.variantAnalysis.id); + } + + async handleCopyRepoList(item: QueryHistoryInfo) { + if (item.t !== "variant-analysis") { + return; + } + + await this.variantAnalysisManager.copyRepoListToClipboard( + item.variantAnalysis.id, + ); + } + + async handleExportResults(item: QueryHistoryInfo): Promise { + if (item.t !== "variant-analysis") { + return; + } + + await this.variantAnalysisManager.exportResults(item.variantAnalysis.id); + } + + /** + * Exports the results of the currently-selected variant analysis. + */ + async exportSelectedVariantAnalysisResults(): Promise { + const queryHistoryItem = this.getCurrentQueryHistoryItem(); + if (!queryHistoryItem || queryHistoryItem.t !== "variant-analysis") { + throw new Error( + "No variant analysis results currently open. To open results, click an item in the query history view.", + ); + } + + await this.variantAnalysisManager.exportResults( + queryHistoryItem.variantAnalysis.id, + ); + } + + addQuery(item: QueryHistoryInfo) { + this.treeDataProvider.pushQuery(item); + this.updateTreeViewSelectionIfVisible(); + } + + /** + * Update the tree view selection if the tree view is visible. + * + * If the tree view is not visible, we must wait until it becomes visible before updating the + * selection. This is because the only mechanism for updating the selection of the tree view + * has the side-effect of revealing the tree view. This changes the active sidebar to CodeQL, + * interrupting user workflows such as writing a commit message on the source control sidebar. + */ + private updateTreeViewSelectionIfVisible() { + if (this.treeView.visible) { + const current = this.treeDataProvider.getCurrent(); + if (current !== undefined) { + // We must fire the onDidChangeTreeData event to ensure the current element can be selected + // using `reveal` if the tree view was not visible when the current element was added. + this.treeDataProvider.refresh(); + void this.treeView.reveal(current, { select: true }); + } + } + } + + private getFromQueryToCompare( + singleItem: CompletedLocalQueryInfo, + multiSelect: CompletedLocalQueryInfo[], + ): CompletedLocalQueryInfo { + if ( + this.compareWithItem && + this.isSuccessfulCompletedLocalQueryInfo(this.compareWithItem) && + multiSelect.includes(this.compareWithItem) + ) { + return this.compareWithItem; + } else { + return singleItem; + } + } + + private async findOtherQueryToCompare( + fromItem: CompletedLocalQueryInfo, + allSelectedItems: CompletedLocalQueryInfo[], + ): Promise { + const dbName = fromItem.databaseName; + + // If exactly 2 items are selected, return the one that + // isn't being used as the "from" item. + if (allSelectedItems.length === 2) { + const otherItem = + fromItem === allSelectedItems[0] + ? allSelectedItems[1] + : allSelectedItems[0]; + if (otherItem.databaseName !== dbName) { + throw new Error("Query databases must be the same."); + } + return otherItem; + } + + if (allSelectedItems.length > 2) { + throw new Error("Please select no more than 2 queries."); + } + + // Otherwise, present a dialog so the user can choose the item they want to use. + const comparableQueryLabels = this.treeDataProvider.allHistory + .filter(this.isSuccessfulCompletedLocalQueryInfo) + .filter( + (otherItem) => + otherItem !== fromItem && otherItem.databaseName === dbName, + ) + .map((item) => ({ + label: this.labelProvider.getLabel(item), + description: item.databaseName, + detail: item.completedQuery.message, + query: item, + })); + + if (comparableQueryLabels.length < 1) { + throw new Error("No other queries available to compare with."); + } + const choice = await window.showQuickPick(comparableQueryLabels); + + return choice?.query; + } + + private async findOtherQueryToComparePerformance( + fromItem: CompletedLocalQueryInfo, + allSelectedItems: CompletedLocalQueryInfo[], + ): Promise { + // If exactly 2 items are selected, return the one that + // isn't being used as the "from" item. + if (allSelectedItems.length === 2) { + const otherItem = + fromItem === allSelectedItems[0] + ? allSelectedItems[1] + : allSelectedItems[0]; + return otherItem; + } + + if (allSelectedItems.length > 2) { + throw new Error("Please select no more than 2 queries."); + } + + // Otherwise, present a dialog so the user can choose the item they want to use. + const comparableQueryLabels = this.treeDataProvider.allHistory + .filter(this.isSuccessfulCompletedLocalQueryInfo) + .filter((otherItem) => otherItem !== fromItem) + .map((item) => ({ + label: this.labelProvider.getLabel(item), + description: item.databaseName, + detail: item.completedQuery.message, + query: item, + })); + const comparableQueryLabelsWithDefault = [ + { + label: "Single run", + description: + "Look at the performance of this run, compared to a trivial baseline", + detail: undefined, + query: undefined, + }, + ...comparableQueryLabels, + ]; + if (comparableQueryLabelsWithDefault.length < 1) { + throw new Error("No other queries available to compare with."); + } + const choice = await window.showQuickPick(comparableQueryLabelsWithDefault); + + return choice?.query; + } + + /** + * Updates the compare with source query. This ensures that all compare command invocations + * when exactly 2 queries are selected always have the proper _from_ query. Always use + * compareWithItem as the _from_ query. + * + * The heuristic is this: + * + * 1. If selection is empty or has length > 2 delete compareWithItem. + * 2. If selection is length 1, then set that item to compareWithItem. + * 3. If selection is length 2, then make sure compareWithItem is one of the selected items + * if not, then delete compareWithItem. If it is then, do nothing. + * + * This ensures that compareWithItem is always the first item selected if there are only + * two selected items. + * + * @param newSelection the new selection after the most recent selection change + */ + private updateCompareWith(newSelection: LocalQueryInfo[]) { + if (newSelection.length === 1) { + this.compareWithItem = newSelection[0]; + } else if ( + newSelection.length !== 2 || + !this.compareWithItem || + !newSelection.includes(this.compareWithItem) + ) { + this.compareWithItem = undefined; + } + } + + async refreshTreeView(): Promise { + this.treeDataProvider.refresh(); + await this.writeQueryHistory(); + } + + private async openQueryResults(item: QueryHistoryInfo) { + if (item.t === "local") { + await this.localQueriesResultsView.showResults( + item as CompletedLocalQueryInfo, + WebviewReveal.Forced, + false, + ); + } else if (item.t === "variant-analysis") { + await this.variantAnalysisManager.showView(item.variantAnalysis.id); + } else { + assertNever(item); + } + } +} diff --git a/extensions/ql-vscode/src/query-history/query-history-scrubber.ts b/extensions/ql-vscode/src/query-history/query-history-scrubber.ts new file mode 100644 index 00000000000..1e31ccdf300 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/query-history-scrubber.ts @@ -0,0 +1,185 @@ +import { pathExists, remove, readFile } from "fs-extra"; +import { EOL } from "os"; +import { join } from "path"; +import type { Disposable, ExtensionContext } from "vscode"; +import { extLogger } from "../common/logging/vscode"; +import { readDirFullPaths } from "../common/files"; +import type { QueryHistoryDirs } from "./query-history-dirs"; +import type { QueryHistoryManager } from "./query-history-manager"; +import { getErrorMessage } from "../common/helpers-pure"; + +const LAST_SCRUB_TIME_KEY = "lastScrubTime"; + +/** + * Registers an interval timer that will periodically check for queries old enought + * to be deleted. + * + * Note that this scrubber will clean all queries from all workspaces. It should not + * run too often and it should only run from one workspace at a time. + * + * Generally, `wakeInterval` should be significantly shorter than `throttleTime`. + * + * @param wakeInterval How often to check to see if the job should run. + * @param throttleTime How often to actually run the job. + * @param maxQueryTime The maximum age of a query before is ready for deletion. + * @param queryHistoryDirs The directories containing all query history information. + * @param ctx The extension context. + */ +export function registerQueryHistoryScrubber( + wakeInterval: number, + throttleTime: number, + maxQueryTime: number, + queryHistoryDirs: QueryHistoryDirs, + qhm: QueryHistoryManager, + ctx: ExtensionContext, + + // optional callback to keep track of how many times the scrubber has run + onScrubberRun?: () => void, +): Disposable { + const deregister = setInterval( + scrubQueries, + wakeInterval, + throttleTime, + maxQueryTime, + queryHistoryDirs, + qhm, + ctx, + onScrubberRun, + ); + + return { + dispose: () => { + clearInterval(deregister); + }, + }; +} + +async function scrubQueries( + throttleTime: number, + maxQueryTime: number, + queryHistoryDirs: QueryHistoryDirs, + qhm: QueryHistoryManager, + ctx: ExtensionContext, + onScrubberRun?: () => void, +) { + const lastScrubTime = ctx.globalState.get(LAST_SCRUB_TIME_KEY); + const now = Date.now(); + + // If we have never scrubbed before, or if the last scrub was more than `throttleTime` ago, + // then scrub again. + if (lastScrubTime === undefined || now - lastScrubTime >= throttleTime) { + await ctx.globalState.update(LAST_SCRUB_TIME_KEY, now); + + let scrubCount = 0; // total number of directories deleted + try { + onScrubberRun?.(); + void extLogger.log( + "Cleaning up query history directories. Removing old entries.", + ); + + if (!(await pathExists(queryHistoryDirs.localQueriesDirPath))) { + void extLogger.log( + `Cannot clean up query history directories. Local queries directory does not exist: ${queryHistoryDirs.localQueriesDirPath}`, + ); + return; + } + if (!(await pathExists(queryHistoryDirs.variantAnalysesDirPath))) { + void extLogger.log( + `Cannot clean up query history directories. Variant analyses directory does not exist: ${queryHistoryDirs.variantAnalysesDirPath}`, + ); + return; + } + + const localQueryDirPaths = await readDirFullPaths( + queryHistoryDirs.localQueriesDirPath, + ); + const variantAnalysisDirPaths = await readDirFullPaths( + queryHistoryDirs.variantAnalysesDirPath, + ); + const allDirPaths = [...localQueryDirPaths, ...variantAnalysisDirPaths]; + + const errors: string[] = []; + for (const dir of allDirPaths) { + const scrubResult = await scrubDirectory(dir, now, maxQueryTime); + if (scrubResult.errorMsg) { + errors.push(scrubResult.errorMsg); + } + if (scrubResult.deleted) { + scrubCount++; + } + } + + if (errors.length) { + throw new Error(EOL + errors.join(EOL)); + } + } catch (e) { + void extLogger.log( + `Error while scrubbing queries: ${getErrorMessage(e)}`, + ); + } finally { + void extLogger.log(`Scrubbed ${scrubCount} old queries.`); + } + await qhm.removeDeletedQueries(); + } +} + +async function scrubDirectory( + dir: string, + now: number, + maxQueryTime: number, +): Promise<{ + errorMsg?: string; + deleted: boolean; +}> { + try { + if (await shouldScrubDirectory(dir, now, maxQueryTime)) { + await remove(dir); + return { deleted: true }; + } else { + return { deleted: false }; + } + } catch (err) { + return { + errorMsg: ` Could not delete '${dir}': ${getErrorMessage(err)}`, + deleted: false, + }; + } +} + +async function shouldScrubDirectory( + dir: string, + now: number, + maxQueryTime: number, +): Promise { + const timestamp = await getTimestamp(join(dir, "timestamp")); + if (timestamp === undefined || Number.isNaN(timestamp)) { + void extLogger.log(` ${dir} timestamp is missing or invalid. Deleting.`); + return true; + } else if (now - timestamp > maxQueryTime) { + void extLogger.log( + ` ${dir} is older than ${maxQueryTime / 1000} seconds. Deleting.`, + ); + return true; + } else { + void extLogger.log( + ` ${dir} is not older than ${maxQueryTime / 1000} seconds. Keeping.`, + ); + return false; + } +} + +async function getTimestamp( + timestampFile: string, +): Promise { + try { + const timestampText = await readFile(timestampFile, "utf8"); + return parseInt(timestampText, 10); + } catch (err) { + void extLogger.log( + ` Could not read timestamp file '${timestampFile}': ${getErrorMessage( + err, + )}`, + ); + return undefined; + } +} diff --git a/extensions/ql-vscode/src/query-history/query-status.ts b/extensions/ql-vscode/src/query-history/query-status.ts new file mode 100644 index 00000000000..732b1d5f945 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/query-status.ts @@ -0,0 +1,40 @@ +import { assertNever } from "../common/helpers-pure"; +import { VariantAnalysisStatus } from "../variant-analysis/shared/variant-analysis"; + +export enum QueryStatus { + InProgress = "InProgress", + Completed = "Completed", + Failed = "Failed", +} + +export function variantAnalysisStatusToQueryStatus( + status: VariantAnalysisStatus, +): QueryStatus { + switch (status) { + case VariantAnalysisStatus.Succeeded: + return QueryStatus.Completed; + case VariantAnalysisStatus.Failed: + return QueryStatus.Failed; + case VariantAnalysisStatus.InProgress: + return QueryStatus.InProgress; + case VariantAnalysisStatus.Canceling: + return QueryStatus.InProgress; + case VariantAnalysisStatus.Canceled: + return QueryStatus.Completed; + default: + assertNever(status); + } +} + +export function humanizeQueryStatus(status: QueryStatus): string { + switch (status) { + case QueryStatus.InProgress: + return "in progress"; + case QueryStatus.Completed: + return "completed"; + case QueryStatus.Failed: + return "failed"; + default: + return "unknown"; + } +} diff --git a/extensions/ql-vscode/src/query-history/store/index.ts b/extensions/ql-vscode/src/query-history/store/index.ts new file mode 100644 index 00000000000..64e193e4465 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/index.ts @@ -0,0 +1 @@ +export * from "./query-history-store"; diff --git a/extensions/ql-vscode/src/query-history/store/query-history-domain-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-domain-mapper.ts new file mode 100644 index 00000000000..e8d5d69c5fd --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-domain-mapper.ts @@ -0,0 +1,19 @@ +import { assertNever } from "../../common/helpers-pure"; +import type { QueryHistoryInfo } from "../query-history-info"; +import { mapLocalQueryInfoToDto } from "./query-history-local-query-domain-mapper"; +import type { QueryHistoryItemDto } from "./query-history-dto"; +import { mapQueryHistoryVariantAnalysisToDto } from "./query-history-variant-analysis-domain-mapper"; + +export function mapQueryHistoryToDto( + queries: QueryHistoryInfo[], +): QueryHistoryItemDto[] { + return queries.map((q) => { + if (q.t === "variant-analysis") { + return mapQueryHistoryVariantAnalysisToDto(q); + } else if (q.t === "local") { + return mapLocalQueryInfoToDto(q); + } else { + assertNever(q); + } + }); +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-dto-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-dto-mapper.ts new file mode 100644 index 00000000000..c06e86019b2 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-dto-mapper.ts @@ -0,0 +1,22 @@ +import type { QueryHistoryInfo } from "../query-history-info"; +import type { QueryHistoryItemDto } from "./query-history-dto"; +import { mapQueryHistoryVariantAnalysisToDomainModel } from "./query-history-variant-analysis-dto-mapper"; +import { mapLocalQueryItemToDomainModel } from "./query-history-local-query-dto-mapper"; + +export function mapQueryHistoryToDomainModel( + queries: QueryHistoryItemDto[], +): QueryHistoryInfo[] { + return queries.map((d) => { + if (d.t === "variant-analysis") { + return mapQueryHistoryVariantAnalysisToDomainModel(d); + } else if (d.t === "local") { + return mapLocalQueryItemToDomainModel(d); + } + + throw Error( + `Unexpected or corrupted query history file. Unknown query history item: ${JSON.stringify( + d, + )}`, + ); + }); +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-dto.ts b/extensions/ql-vscode/src/query-history/store/query-history-dto.ts new file mode 100644 index 00000000000..78cb5b6064e --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-dto.ts @@ -0,0 +1,27 @@ +// Contains models and consts for the data we want to store in the query history store. +// Changes to these models should be done carefully and account for backwards compatibility of data. + +import type { QueryHistoryLocalQueryDto } from "./query-history-local-query-dto"; +import type { QueryHistoryVariantAnalysisDto } from "./query-history-variant-analysis-dto"; + +export interface QueryHistoryDto { + version: number; + queries: QueryHistoryItemDto[]; +} + +export type QueryHistoryItemDto = + | QueryHistoryLocalQueryDto + | QueryHistoryVariantAnalysisDto; + +export enum QueryLanguageDto { + Actions = "actions", + CSharp = "csharp", + Cpp = "cpp", + Go = "go", + Java = "java", + Javascript = "javascript", + Python = "python", + Ruby = "ruby", + Rust = "rust", + Swift = "swift", +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-language-domain-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-language-domain-mapper.ts new file mode 100644 index 00000000000..1df15d41dd2 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-language-domain-mapper.ts @@ -0,0 +1,32 @@ +import { assertNever } from "../../common/helpers-pure"; +import { QueryLanguageDto } from "./query-history-dto"; +import { QueryLanguage } from "../../common/query-language"; + +export function mapQueryLanguageToDto( + language: QueryLanguage, +): QueryLanguageDto { + switch (language) { + case QueryLanguage.Actions: + return QueryLanguageDto.Actions; + case QueryLanguage.CSharp: + return QueryLanguageDto.CSharp; + case QueryLanguage.Cpp: + return QueryLanguageDto.Cpp; + case QueryLanguage.Go: + return QueryLanguageDto.Go; + case QueryLanguage.Java: + return QueryLanguageDto.Java; + case QueryLanguage.Javascript: + return QueryLanguageDto.Javascript; + case QueryLanguage.Python: + return QueryLanguageDto.Python; + case QueryLanguage.Ruby: + return QueryLanguageDto.Ruby; + case QueryLanguage.Rust: + return QueryLanguageDto.Rust; + case QueryLanguage.Swift: + return QueryLanguageDto.Swift; + default: + assertNever(language); + } +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-language-dto-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-language-dto-mapper.ts new file mode 100644 index 00000000000..1e3ea1c18a8 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-language-dto-mapper.ts @@ -0,0 +1,32 @@ +import { QueryLanguageDto } from "./query-history-dto"; +import { QueryLanguage } from "../../common/query-language"; +import { assertNever } from "../../common/helpers-pure"; + +export function mapQueryLanguageToDomainModel( + language: QueryLanguageDto, +): QueryLanguage { + switch (language) { + case QueryLanguageDto.Actions: + return QueryLanguage.Actions; + case QueryLanguageDto.CSharp: + return QueryLanguage.CSharp; + case QueryLanguageDto.Cpp: + return QueryLanguage.Cpp; + case QueryLanguageDto.Go: + return QueryLanguage.Go; + case QueryLanguageDto.Java: + return QueryLanguage.Java; + case QueryLanguageDto.Javascript: + return QueryLanguage.Javascript; + case QueryLanguageDto.Python: + return QueryLanguage.Python; + case QueryLanguageDto.Ruby: + return QueryLanguage.Ruby; + case QueryLanguageDto.Rust: + return QueryLanguage.Rust; + case QueryLanguageDto.Swift: + return QueryLanguage.Swift; + default: + assertNever(language); + } +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-local-query-domain-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-local-query-domain-mapper.ts new file mode 100644 index 00000000000..61fe2e0bc4b --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-local-query-domain-mapper.ts @@ -0,0 +1,123 @@ +import type { + LocalQueryInfo, + InitialQueryInfo, + CompletedQueryInfo, +} from "../../query-results"; +import type { QueryEvaluationInfo } from "../../run-queries-shared"; +import type { + QueryHistoryLocalQueryDto, + InitialQueryInfoDto, + QueryEvaluationInfoDto, + CompletedQueryInfoDto, + SortedResultSetInfoDto, +} from "./query-history-local-query-dto"; +import { SortDirectionDto } from "./query-history-local-query-dto"; +import type { + RawResultsSortState, + SortedResultSetInfo, +} from "../../common/interface-types"; +import { SortDirection } from "../../common/interface-types"; +import { mapQueryLanguageToDto } from "./query-history-language-domain-mapper"; + +export function mapLocalQueryInfoToDto( + query: LocalQueryInfo, +): QueryHistoryLocalQueryDto { + return { + initialInfo: mapInitialQueryInfoToDto(query.initialInfo), + t: "local", + evalLogLocation: query.evaluatorLogPaths?.log, + evalLogSummaryLocation: query.evaluatorLogPaths?.humanReadableSummary, + jsonEvalLogSummaryLocation: query.evaluatorLogPaths?.jsonSummary, + evalLogSummarySymbolsLocation: query.evaluatorLogPaths?.summarySymbols, + failureReason: query.failureReason, + completedQuery: + query.completedQuery && mapCompletedQueryToDto(query.completedQuery), + }; +} + +function mapCompletedQueryToDto( + query: CompletedQueryInfo, +): CompletedQueryInfoDto { + const sortedResults = Object.fromEntries( + Object.entries(query.sortedResultsInfo).map(([key, value]) => { + return [key, mapSortedResultSetInfoToDto(value)]; + }), + ); + + return { + query: mapQueryEvaluationInfoToDto(query.query), + logFileLocation: query.logFileLocation, + successful: query.successful, + message: query.message, + resultCount: query.resultCount, + sortedResultsInfo: sortedResults, + }; +} + +function mapSortDirectionToDto(sortDirection: SortDirection): SortDirectionDto { + switch (sortDirection) { + case SortDirection.asc: + return SortDirectionDto.asc; + case SortDirection.desc: + return SortDirectionDto.desc; + } +} + +function mapRawResultsSortStateToDto( + sortState: RawResultsSortState, +): SortedResultSetInfoDto["sortState"] { + return { + columnIndex: sortState.columnIndex, + sortDirection: mapSortDirectionToDto(sortState.sortDirection), + }; +} + +function mapSortedResultSetInfoToDto( + resultSet: SortedResultSetInfo, +): SortedResultSetInfoDto { + return { + resultsPath: resultSet.resultsPath, + sortState: mapRawResultsSortStateToDto(resultSet.sortState), + }; +} + +function mapInitialQueryInfoToDto( + localQueryInitialInfo: InitialQueryInfo, +): InitialQueryInfoDto { + return { + userSpecifiedLabel: localQueryInitialInfo.userSpecifiedLabel, + queryText: localQueryInitialInfo.queryText, + isQuickQuery: localQueryInitialInfo.isQuickQuery, + isQuickEval: localQueryInitialInfo.isQuickEval, + quickEvalPosition: localQueryInitialInfo.quickEvalPosition, + queryPath: localQueryInitialInfo.queryPath, + databaseInfo: { + databaseUri: localQueryInitialInfo.databaseInfo.databaseUri, + name: localQueryInitialInfo.databaseInfo.name, + language: + localQueryInitialInfo.databaseInfo.language === undefined + ? undefined + : mapQueryLanguageToDto(localQueryInitialInfo.databaseInfo.language), + }, + start: localQueryInitialInfo.start, + id: localQueryInitialInfo.id, + outputDir: localQueryInitialInfo.outputDir + ? { + querySaveDir: localQueryInitialInfo.outputDir.querySaveDir, + } + : undefined, + }; +} + +function mapQueryEvaluationInfoToDto( + queryEvaluationInfo: QueryEvaluationInfo, +): QueryEvaluationInfoDto { + return { + querySaveDir: queryEvaluationInfo.querySaveDir, + dbItemPath: queryEvaluationInfo.dbItemPath, + databaseHasMetadataFile: queryEvaluationInfo.databaseHasMetadataFile, + quickEvalPosition: queryEvaluationInfo.quickEvalPosition, + metadata: queryEvaluationInfo.metadata, + outputBaseName: queryEvaluationInfo.outputBaseName, + }; +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto-mapper.ts new file mode 100644 index 00000000000..aa42dd8c1a0 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto-mapper.ts @@ -0,0 +1,153 @@ +import type { InitialQueryInfo } from "../../query-results"; +import { LocalQueryInfo, CompletedQueryInfo } from "../../query-results"; +import { QueryEvaluationInfo } from "../../run-queries-shared"; +import { QueryOutputDir } from "../../local-queries/query-output-dir"; +import { SortDirectionDto } from "./query-history-local-query-dto"; +import type { + CompletedQueryInfoDto, + QueryEvaluationInfoDto, + InitialQueryInfoDto, + QueryHistoryLocalQueryDto, + InterpretedResultsSortStateDto, + SortedResultSetInfoDto, + RawResultsSortStateDto, +} from "./query-history-local-query-dto"; +import type { + InterpretedResultsSortState, + RawResultsSortState, + SortedResultSetInfo, +} from "../../common/interface-types"; +import { SortDirection } from "../../common/interface-types"; +import { mapQueryLanguageToDomainModel } from "./query-history-language-dto-mapper"; + +export function mapLocalQueryItemToDomainModel( + localQuery: QueryHistoryLocalQueryDto, +): LocalQueryInfo { + return new LocalQueryInfo( + mapInitialQueryInfoToDomainModel( + localQuery.initialInfo, + localQuery.completedQuery?.query?.querySaveDir, + ), + undefined, + localQuery.failureReason, + localQuery.completedQuery && + mapCompletedQueryInfoToDomainModel(localQuery.completedQuery), + localQuery.evalLogLocation + ? { + log: localQuery.evalLogLocation, + humanReadableSummary: localQuery.evalLogSummaryLocation, + jsonSummary: localQuery.jsonEvalLogSummaryLocation, + summarySymbols: localQuery.evalLogSummarySymbolsLocation, + endSummary: undefined, + } + : undefined, + ); +} + +function mapCompletedQueryInfoToDomainModel( + completedQuery: CompletedQueryInfoDto, +): CompletedQueryInfo { + const sortState = + completedQuery.interpretedResultsSortState && + mapSortStateToDomainModel(completedQuery.interpretedResultsSortState); + + const sortedResults = Object.fromEntries( + Object.entries(completedQuery.sortedResultsInfo).map(([key, value]) => { + return [key, mapSortedResultSetInfoToDomainModel(value)]; + }), + ); + + return new CompletedQueryInfo( + mapQueryEvaluationInfoToDomainModel(completedQuery.query), + completedQuery.logFileLocation, + completedQuery.successful ?? false, + completedQuery.message ?? "", + sortState, + completedQuery.resultCount, + sortedResults, + ); +} + +function mapInitialQueryInfoToDomainModel( + initialInfo: InitialQueryInfoDto, + // The completedQuerySaveDir is a migration to support old query items that don't have + // the querySaveDir in the initialInfo. It should be removed once all query + // items have the querySaveDir in the initialInfo. + completedQuerySaveDir?: string, +): InitialQueryInfo { + const querySaveDir = + initialInfo.outputDir?.querySaveDir ?? completedQuerySaveDir; + + return { + userSpecifiedLabel: initialInfo.userSpecifiedLabel, + queryText: initialInfo.queryText, + isQuickQuery: initialInfo.isQuickQuery, + isQuickEval: initialInfo.isQuickEval, + quickEvalPosition: initialInfo.quickEvalPosition, + queryPath: initialInfo.queryPath, + databaseInfo: { + databaseUri: initialInfo.databaseInfo.databaseUri, + name: initialInfo.databaseInfo.name, + language: + initialInfo.databaseInfo.language === undefined + ? undefined + : mapQueryLanguageToDomainModel(initialInfo.databaseInfo.language), + }, + start: new Date(initialInfo.start), + id: initialInfo.id, + outputDir: querySaveDir ? new QueryOutputDir(querySaveDir) : undefined, + }; +} + +function mapQueryEvaluationInfoToDomainModel( + evaluationInfo: QueryEvaluationInfoDto, +): QueryEvaluationInfo { + return new QueryEvaluationInfo( + evaluationInfo.querySaveDir, + evaluationInfo.outputBaseName ?? "results", + evaluationInfo.dbItemPath, + evaluationInfo.databaseHasMetadataFile, + evaluationInfo.quickEvalPosition, + evaluationInfo.metadata, + ); +} + +function mapSortDirectionToDomainModel( + sortDirection: SortDirectionDto, +): SortDirection { + switch (sortDirection) { + case SortDirectionDto.asc: + return SortDirection.asc; + case SortDirectionDto.desc: + return SortDirection.desc; + } +} + +function mapSortStateToDomainModel( + sortState: InterpretedResultsSortStateDto, +): InterpretedResultsSortState { + return { + sortBy: sortState.sortBy, + sortDirection: mapSortDirectionToDomainModel(sortState.sortDirection), + }; +} + +function mapSortedResultSetInfoToDomainModel( + sortedResultSetInfo: SortedResultSetInfoDto, +): SortedResultSetInfo { + return { + resultsPath: sortedResultSetInfo.resultsPath, + sortState: mapRawResultsSortStateToDomainModel( + sortedResultSetInfo.sortState, + ), + }; +} + +function mapRawResultsSortStateToDomainModel( + sortState: RawResultsSortStateDto, +): RawResultsSortState { + return { + columnIndex: sortState.columnIndex, + sortDirection: mapSortDirectionToDomainModel(sortState.sortDirection), + }; +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto.ts b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto.ts new file mode 100644 index 00000000000..2a6b3c78ea0 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto.ts @@ -0,0 +1,104 @@ +// Contains models and consts for the data we want to store in the query history store. +// Changes to these models should be done carefully and account for backwards compatibility of data. + +import type { QueryLanguageDto } from "./query-history-dto"; + +export interface QueryHistoryLocalQueryDto { + initialInfo: InitialQueryInfoDto; + t: "local"; + evalLogLocation?: string; + evalLogSummaryLocation?: string; + jsonEvalLogSummaryLocation?: string; + evalLogSummarySymbolsLocation?: string; + completedQuery?: CompletedQueryInfoDto; + failureReason?: string; +} + +export interface InitialQueryInfoDto { + userSpecifiedLabel?: string; + queryText: string; + isQuickQuery: boolean; + isQuickEval: boolean; + quickEvalPosition?: PositionDto; + queryPath: string; + databaseInfo: DatabaseInfoDto; + start: Date; + id: string; + outputDir?: QueryOutputDirDto; // Undefined for backwards compatibility +} + +interface QueryOutputDirDto { + querySaveDir: string; +} + +interface DatabaseInfoDto { + name: string; + databaseUri: string; + language?: QueryLanguageDto; +} + +interface PositionDto { + line: number; + column: number; + endLine: number; + endColumn: number; + fileName: string; +} + +export interface CompletedQueryInfoDto { + query: QueryEvaluationInfoDto; + message?: string; + successful?: boolean; + + // There once was a typo in the data model, which is why we need to support both + sucessful?: boolean; + logFileLocation?: string; + resultCount: number; + sortedResultsInfo: Record; + interpretedResultsSortState?: InterpretedResultsSortStateDto; +} + +export interface InterpretedResultsSortStateDto { + sortBy: InterpretedResultsSortColumnDto; + sortDirection: SortDirectionDto; +} + +type InterpretedResultsSortColumnDto = "alert-message"; + +export interface SortedResultSetInfoDto { + resultsPath: string; + sortState: RawResultsSortStateDto; +} + +export interface RawResultsSortStateDto { + columnIndex: number; + sortDirection: SortDirectionDto; +} + +export enum SortDirectionDto { + asc, + desc, +} + +export interface QueryEvaluationInfoDto { + querySaveDir: string; + dbItemPath: string; + databaseHasMetadataFile: boolean; + quickEvalPosition?: PositionDto; + metadata?: QueryMetadataDto; + outputBaseName?: string; + + // Superceded by outputBaseName + resultsPaths?: { + resultsPath: string; + interpretedResultsPath: string; + }; +} + +interface QueryMetadataDto { + name?: string; + description?: string; + id?: string; + kind?: string; + scored?: string; +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-store.ts b/extensions/ql-vscode/src/query-history/store/query-history-store.ts new file mode 100644 index 00000000000..0b54908ceba --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-store.ts @@ -0,0 +1,127 @@ +import { pathExists, remove, mkdir, writeFile, readJson } from "fs-extra"; +import { dirname } from "path"; + +import { + asError, + asyncFilter, + getErrorMessage, + getErrorStack, +} from "../../common/helpers-pure"; +import type { QueryHistoryInfo } from "../query-history-info"; +import { redactableError } from "../../common/errors"; +import type { QueryHistoryDto, QueryHistoryItemDto } from "./query-history-dto"; +import { mapQueryHistoryToDomainModel } from "./query-history-dto-mapper"; +import { mapQueryHistoryToDto } from "./query-history-domain-mapper"; +import { extLogger } from "../../common/logging/vscode"; +import { showAndLogExceptionWithTelemetry } from "../../common/logging"; +import { telemetryListener } from "../../common/vscode/telemetry"; + +const ALLOWED_QUERY_HISTORY_VERSIONS = [1, 2]; + +export async function readQueryHistoryFromFile( + fsPath: string, +): Promise { + try { + if (!(await pathExists(fsPath))) { + return []; + } + + const obj: QueryHistoryDto = await readJson(fsPath, { + encoding: "utf8", + }); + + if (!ALLOWED_QUERY_HISTORY_VERSIONS.includes(obj.version)) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError`Can't parse query history. Unsupported query history format: v${obj.version}.`, + ); + return []; + } + + const queries = obj.queries; + // Remove remote queries, which are not supported anymore. + const parsedQueries = queries.filter( + (q: QueryHistoryItemDto | { t: "remote" }) => q.t !== "remote", + ); + + // Map the data models to the domain models. + const domainModels: QueryHistoryInfo[] = + mapQueryHistoryToDomainModel(parsedQueries); + + // Filter out queries that have been deleted on disk + // most likely another workspace has deleted them because the + // queries aged out. + const filteredDomainModels: Promise = asyncFilter( + domainModels, + async (q) => { + if (q.t === "variant-analysis") { + // The query history store doesn't know where variant analysises are + // stored so we need to assume here that they exist. We check later + // to see if they exist on disk. + return true; + } + const resultsPath = q.completedQuery?.query.resultsPath; + return !!resultsPath && (await pathExists(resultsPath)); + }, + ); + + return filteredDomainModels; + } catch (e) { + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError(asError(e))`Error loading query history.`, + { + fullMessage: `Error loading query history.\n${getErrorStack(e)}`, + }, + ); + // Since the query history is invalid, it should be deleted so this error does not happen on next startup. + await remove(fsPath); + return []; + } +} + +/** + * Save the query history to disk. It is not necessary that the parent directory + * exists, but if it does, it must be writable. An existing file will be overwritten. + * + * Any errors will be rethrown. + * + * @param queries the list of queries to save. + * @param fsPath the path to save the queries to. + */ +export async function writeQueryHistoryToFile( + queries: QueryHistoryInfo[], + fsPath: string, +): Promise { + try { + if (!(await pathExists(fsPath))) { + await mkdir(dirname(fsPath), { recursive: true }); + } + // Remove incomplete local queries since they cannot be recreated on restart + const filteredQueries = queries.filter((q) => + q.t === "local" ? q.completedQuery !== undefined : true, + ); + + // Map domain model queries to data model + const queryHistoryData = mapQueryHistoryToDto(filteredQueries); + + const data = JSON.stringify( + { + // version 2: + // - adds the `variant-analysis` type + // - ensures a `successful` property exists on completedQuery + version: 2, + queries: queryHistoryData, + }, + null, + 2, + ); + await writeFile(fsPath, data); + } catch (e) { + throw new Error( + `Error saving query history to ${fsPath}: ${getErrorMessage(e)}`, + ); + } +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-domain-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-domain-mapper.ts new file mode 100644 index 00000000000..6ca7c63132e --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-domain-mapper.ts @@ -0,0 +1,221 @@ +import type { + QueryHistoryVariantAnalysisDto, + VariantAnalysisDto, + VariantAnalysisScannedRepositoryDto, + VariantAnalysisSkippedRepositoriesDto, + VariantAnalysisSkippedRepositoryDto, + VariantAnalysisSkippedRepositoryGroupDto, +} from "./query-history-variant-analysis-dto"; +import { + QueryStatusDto, + VariantAnalysisFailureReasonDto, + VariantAnalysisRepoStatusDto, + VariantAnalysisStatusDto, +} from "./query-history-variant-analysis-dto"; +import type { + VariantAnalysis, + VariantAnalysisScannedRepository, + VariantAnalysisSkippedRepositories, + VariantAnalysisSkippedRepository, + VariantAnalysisSkippedRepositoryGroup, +} from "../../variant-analysis/shared/variant-analysis"; +import { + VariantAnalysisFailureReason, + VariantAnalysisRepoStatus, + VariantAnalysisStatus, +} from "../../variant-analysis/shared/variant-analysis"; +import { assertNever } from "../../common/helpers-pure"; +import { QueryStatus } from "../query-status"; +import type { VariantAnalysisHistoryItem } from "../variant-analysis-history-item"; +import { mapQueryLanguageToDto } from "./query-history-language-domain-mapper"; + +export function mapQueryHistoryVariantAnalysisToDto( + item: VariantAnalysisHistoryItem, +): QueryHistoryVariantAnalysisDto { + return { + t: "variant-analysis", + failureReason: item.failureReason, + resultCount: item.resultCount, + status: mapQueryStatusToDto(item.status), + completed: item.completed, + variantAnalysis: mapVariantAnalysisDtoToDto(item.variantAnalysis), + userSpecifiedLabel: item.userSpecifiedLabel, + }; +} + +function mapVariantAnalysisDtoToDto( + variantAnalysis: VariantAnalysis, +): VariantAnalysisDto { + return { + id: variantAnalysis.id, + controllerRepo: { + id: variantAnalysis.controllerRepo.id, + fullName: variantAnalysis.controllerRepo.fullName, + private: variantAnalysis.controllerRepo.private, + }, + query: { + name: variantAnalysis.query.name, + filePath: variantAnalysis.query.filePath, + language: mapQueryLanguageToDto(variantAnalysis.language), + text: variantAnalysis.query.text, + kind: variantAnalysis.query.kind, + }, + databases: { + repositories: variantAnalysis.databases.repositories, + repositoryLists: variantAnalysis.databases.repositoryLists, + repositoryOwners: variantAnalysis.databases.repositoryOwners, + }, + createdAt: variantAnalysis.createdAt, + updatedAt: variantAnalysis.updatedAt, + executionStartTime: variantAnalysis.executionStartTime, + status: mapVariantAnalysisStatusToDto(variantAnalysis.status), + completedAt: variantAnalysis.completedAt, + actionsWorkflowRunId: variantAnalysis.actionsWorkflowRunId, + failureReason: + variantAnalysis.failureReason && + mapVariantAnalysisFailureReasonToDto(variantAnalysis.failureReason), + scannedRepos: + variantAnalysis.scannedRepos && + mapVariantAnalysisScannedRepositoriesToDto(variantAnalysis.scannedRepos), + skippedRepos: + variantAnalysis.skippedRepos && + mapVariantAnalysisSkippedRepositoriesToDto(variantAnalysis.skippedRepos), + }; +} + +function mapVariantAnalysisScannedRepositoriesToDto( + repos: VariantAnalysisScannedRepository[], +): VariantAnalysisScannedRepositoryDto[] { + return repos.map(mapVariantAnalysisScannedRepositoryToDto); +} + +function mapVariantAnalysisScannedRepositoryToDto( + repo: VariantAnalysisScannedRepository, +): VariantAnalysisScannedRepositoryDto { + return { + repository: { + id: repo.repository.id, + fullName: repo.repository.fullName, + private: repo.repository.private, + stargazersCount: repo.repository.stargazersCount, + updatedAt: repo.repository.updatedAt, + }, + analysisStatus: mapVariantAnalysisRepoStatusToDto(repo.analysisStatus), + resultCount: repo.resultCount, + artifactSizeInBytes: repo.artifactSizeInBytes, + failureMessage: repo.failureMessage, + }; +} + +function mapVariantAnalysisSkippedRepositoriesToDto( + repos: VariantAnalysisSkippedRepositories, +): VariantAnalysisSkippedRepositoriesDto { + return { + accessMismatchRepos: + repos.accessMismatchRepos && + mapVariantAnalysisSkippedRepositoryGroupToDto(repos.accessMismatchRepos), + notFoundRepos: + repos.notFoundRepos && + mapVariantAnalysisSkippedRepositoryGroupToDto(repos.notFoundRepos), + noCodeqlDbRepos: + repos.noCodeqlDbRepos && + mapVariantAnalysisSkippedRepositoryGroupToDto(repos.noCodeqlDbRepos), + overLimitRepos: + repos.overLimitRepos && + mapVariantAnalysisSkippedRepositoryGroupToDto(repos.overLimitRepos), + }; +} + +function mapVariantAnalysisSkippedRepositoryGroupToDto( + repoGroup: VariantAnalysisSkippedRepositoryGroup, +): VariantAnalysisSkippedRepositoryGroupDto { + return { + repositoryCount: repoGroup.repositoryCount, + repositories: repoGroup.repositories.map( + mapVariantAnalysisSkippedRepositoryToDto, + ), + }; +} + +function mapVariantAnalysisSkippedRepositoryToDto( + repo: VariantAnalysisSkippedRepository, +): VariantAnalysisSkippedRepositoryDto { + return { + id: repo.id, + fullName: repo.fullName, + private: repo.private, + stargazersCount: repo.stargazersCount, + updatedAt: repo.updatedAt, + }; +} + +function mapVariantAnalysisFailureReasonToDto( + failureReason: VariantAnalysisFailureReason, +): VariantAnalysisFailureReasonDto { + switch (failureReason) { + case VariantAnalysisFailureReason.NoReposQueried: + return VariantAnalysisFailureReasonDto.NoReposQueried; + case VariantAnalysisFailureReason.ActionsWorkflowRunFailed: + return VariantAnalysisFailureReasonDto.ActionsWorkflowRunFailed; + case VariantAnalysisFailureReason.InternalError: + return VariantAnalysisFailureReasonDto.InternalError; + default: + assertNever(failureReason); + } +} + +function mapVariantAnalysisRepoStatusToDto( + status: VariantAnalysisRepoStatus, +): VariantAnalysisRepoStatusDto { + switch (status) { + case VariantAnalysisRepoStatus.Pending: + return VariantAnalysisRepoStatusDto.Pending; + case VariantAnalysisRepoStatus.InProgress: + return VariantAnalysisRepoStatusDto.InProgress; + case VariantAnalysisRepoStatus.Succeeded: + return VariantAnalysisRepoStatusDto.Succeeded; + case VariantAnalysisRepoStatus.Failed: + return VariantAnalysisRepoStatusDto.Failed; + case VariantAnalysisRepoStatus.Canceled: + return VariantAnalysisRepoStatusDto.Canceled; + case VariantAnalysisRepoStatus.TimedOut: + return VariantAnalysisRepoStatusDto.TimedOut; + default: + assertNever(status); + } +} + +function mapVariantAnalysisStatusToDto( + status: VariantAnalysisStatus, +): VariantAnalysisStatusDto { + switch (status) { + case VariantAnalysisStatus.InProgress: + return VariantAnalysisStatusDto.InProgress; + case VariantAnalysisStatus.Succeeded: + return VariantAnalysisStatusDto.Succeeded; + case VariantAnalysisStatus.Failed: + return VariantAnalysisStatusDto.Failed; + case VariantAnalysisStatus.Canceling: + // The canceling state shouldn't be persisted. We can just + // assume that the analysis is still in progress, since the + // canceling state is very short-lived. + return VariantAnalysisStatusDto.InProgress; + case VariantAnalysisStatus.Canceled: + return VariantAnalysisStatusDto.Canceled; + default: + assertNever(status); + } +} + +function mapQueryStatusToDto(status: QueryStatus): QueryStatusDto { + switch (status) { + case QueryStatus.InProgress: + return QueryStatusDto.InProgress; + case QueryStatus.Completed: + return QueryStatusDto.Completed; + case QueryStatus.Failed: + return QueryStatusDto.Failed; + default: + assertNever(status); + } +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto-mapper.ts new file mode 100644 index 00000000000..7f81ed91821 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto-mapper.ts @@ -0,0 +1,232 @@ +import type { + QueryHistoryVariantAnalysisDto, + VariantAnalysisDto, + VariantAnalysisScannedRepositoryDto, + VariantAnalysisSkippedRepositoriesDto, + VariantAnalysisSkippedRepositoryDto, + VariantAnalysisSkippedRepositoryGroupDto, +} from "./query-history-variant-analysis-dto"; +import { + QueryStatusDto, + VariantAnalysisFailureReasonDto, + VariantAnalysisRepoStatusDto, + VariantAnalysisStatusDto, +} from "./query-history-variant-analysis-dto"; +import type { + VariantAnalysis, + VariantAnalysisScannedRepository, + VariantAnalysisSkippedRepositories, + VariantAnalysisSkippedRepository, + VariantAnalysisSkippedRepositoryGroup, +} from "../../variant-analysis/shared/variant-analysis"; +import { + VariantAnalysisFailureReason, + VariantAnalysisRepoStatus, + VariantAnalysisStatus, +} from "../../variant-analysis/shared/variant-analysis"; +import { assertNever } from "../../common/helpers-pure"; +import { QueryStatus } from "../query-status"; +import type { VariantAnalysisHistoryItem } from "../variant-analysis-history-item"; +import { mapQueryLanguageToDomainModel } from "./query-history-language-dto-mapper"; + +export function mapQueryHistoryVariantAnalysisToDomainModel( + item: QueryHistoryVariantAnalysisDto, +): VariantAnalysisHistoryItem { + return { + t: "variant-analysis", + failureReason: item.failureReason, + resultCount: item.resultCount, + status: mapQueryStatusToDomainModel(item.status), + completed: item.completed, + variantAnalysis: mapVariantAnalysisToDomainModel(item.variantAnalysis), + userSpecifiedLabel: item.userSpecifiedLabel, + }; +} + +function mapVariantAnalysisToDomainModel( + variantAnalysis: VariantAnalysisDto, +): VariantAnalysis { + return { + id: variantAnalysis.id, + controllerRepo: { + id: variantAnalysis.controllerRepo.id, + fullName: variantAnalysis.controllerRepo.fullName, + private: variantAnalysis.controllerRepo.private, + }, + language: mapQueryLanguageToDomainModel(variantAnalysis.query.language), + query: { + name: variantAnalysis.query.name, + filePath: variantAnalysis.query.filePath, + text: variantAnalysis.query.text, + kind: variantAnalysis.query.kind, + }, + databases: { + repositories: variantAnalysis.databases.repositories, + repositoryLists: variantAnalysis.databases.repositoryLists, + repositoryOwners: variantAnalysis.databases.repositoryOwners, + }, + createdAt: variantAnalysis.createdAt, + updatedAt: variantAnalysis.updatedAt, + executionStartTime: variantAnalysis.executionStartTime, + status: mapVariantAnalysisStatusToDomainModel(variantAnalysis.status), + completedAt: variantAnalysis.completedAt, + actionsWorkflowRunId: variantAnalysis.actionsWorkflowRunId, + failureReason: + variantAnalysis.failureReason && + mapVariantAnalysisFailureReasonToDomainModel( + variantAnalysis.failureReason, + ), + scannedRepos: + variantAnalysis.scannedRepos && + mapVariantAnalysisScannedRepositoriesToDomainModel( + variantAnalysis.scannedRepos, + ), + skippedRepos: + variantAnalysis.skippedRepos && + mapVariantAnalysisSkippedRepositoriesToDomainModel( + variantAnalysis.skippedRepos, + ), + }; +} + +function mapVariantAnalysisScannedRepositoriesToDomainModel( + repos: VariantAnalysisScannedRepositoryDto[], +): VariantAnalysisScannedRepository[] { + return repos.map(mapVariantAnalysisScannedRepositoryToDomainModel); +} + +function mapVariantAnalysisScannedRepositoryToDomainModel( + repo: VariantAnalysisScannedRepositoryDto, +): VariantAnalysisScannedRepository { + return { + repository: { + id: repo.repository.id, + fullName: repo.repository.fullName, + private: repo.repository.private, + stargazersCount: repo.repository.stargazersCount, + updatedAt: repo.repository.updatedAt, + }, + analysisStatus: mapVariantAnalysisRepoStatusToDomainModel( + repo.analysisStatus, + ), + resultCount: repo.resultCount, + artifactSizeInBytes: repo.artifactSizeInBytes, + failureMessage: repo.failureMessage, + }; +} + +function mapVariantAnalysisSkippedRepositoriesToDomainModel( + repos: VariantAnalysisSkippedRepositoriesDto, +): VariantAnalysisSkippedRepositories { + return { + accessMismatchRepos: + repos.accessMismatchRepos && + mapVariantAnalysisSkippedRepositoryGroupToDomainModel( + repos.accessMismatchRepos, + ), + notFoundRepos: + repos.notFoundRepos && + mapVariantAnalysisSkippedRepositoryGroupToDomainModel( + repos.notFoundRepos, + ), + noCodeqlDbRepos: + repos.noCodeqlDbRepos && + mapVariantAnalysisSkippedRepositoryGroupToDomainModel( + repos.noCodeqlDbRepos, + ), + overLimitRepos: + repos.overLimitRepos && + mapVariantAnalysisSkippedRepositoryGroupToDomainModel( + repos.overLimitRepos, + ), + }; +} + +function mapVariantAnalysisSkippedRepositoryGroupToDomainModel( + repoGroup: VariantAnalysisSkippedRepositoryGroupDto, +): VariantAnalysisSkippedRepositoryGroup { + return { + repositoryCount: repoGroup.repositoryCount, + repositories: repoGroup.repositories.map( + mapVariantAnalysisSkippedRepositoryToDomainModel, + ), + }; +} + +function mapVariantAnalysisSkippedRepositoryToDomainModel( + repo: VariantAnalysisSkippedRepositoryDto, +): VariantAnalysisSkippedRepository { + return { + id: repo.id, + fullName: repo.fullName, + private: repo.private, + stargazersCount: repo.stargazersCount, + updatedAt: repo.updatedAt, + }; +} + +function mapVariantAnalysisFailureReasonToDomainModel( + failureReason: VariantAnalysisFailureReasonDto, +): VariantAnalysisFailureReason { + switch (failureReason) { + case VariantAnalysisFailureReasonDto.NoReposQueried: + return VariantAnalysisFailureReason.NoReposQueried; + case VariantAnalysisFailureReasonDto.ActionsWorkflowRunFailed: + return VariantAnalysisFailureReason.ActionsWorkflowRunFailed; + case VariantAnalysisFailureReasonDto.InternalError: + return VariantAnalysisFailureReason.InternalError; + default: + assertNever(failureReason); + } +} + +function mapVariantAnalysisRepoStatusToDomainModel( + status: VariantAnalysisRepoStatusDto, +): VariantAnalysisRepoStatus { + switch (status) { + case VariantAnalysisRepoStatusDto.Pending: + return VariantAnalysisRepoStatus.Pending; + case VariantAnalysisRepoStatusDto.InProgress: + return VariantAnalysisRepoStatus.InProgress; + case VariantAnalysisRepoStatusDto.Succeeded: + return VariantAnalysisRepoStatus.Succeeded; + case VariantAnalysisRepoStatusDto.Failed: + return VariantAnalysisRepoStatus.Failed; + case VariantAnalysisRepoStatusDto.Canceled: + return VariantAnalysisRepoStatus.Canceled; + case VariantAnalysisRepoStatusDto.TimedOut: + return VariantAnalysisRepoStatus.TimedOut; + default: + assertNever(status); + } +} + +function mapVariantAnalysisStatusToDomainModel( + status: VariantAnalysisStatusDto, +): VariantAnalysisStatus { + switch (status) { + case VariantAnalysisStatusDto.InProgress: + return VariantAnalysisStatus.InProgress; + case VariantAnalysisStatusDto.Succeeded: + return VariantAnalysisStatus.Succeeded; + case VariantAnalysisStatusDto.Failed: + return VariantAnalysisStatus.Failed; + case VariantAnalysisStatusDto.Canceled: + return VariantAnalysisStatus.Canceled; + default: + assertNever(status); + } +} + +function mapQueryStatusToDomainModel(status: QueryStatusDto): QueryStatus { + switch (status) { + case QueryStatusDto.InProgress: + return QueryStatus.InProgress; + case QueryStatusDto.Completed: + return QueryStatus.Completed; + case QueryStatusDto.Failed: + return QueryStatus.Failed; + default: + assertNever(status); + } +} diff --git a/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto.ts b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto.ts new file mode 100644 index 00000000000..dfe07af1de3 --- /dev/null +++ b/extensions/ql-vscode/src/query-history/store/query-history-variant-analysis-dto.ts @@ -0,0 +1,106 @@ +// Contains models and consts for the data we want to store in the query history store. +// Changes to these models should be done carefully and account for backwards compatibility of data. + +import type { QueryLanguageDto } from "./query-history-dto"; + +export interface QueryHistoryVariantAnalysisDto { + readonly t: "variant-analysis"; + failureReason?: string; + resultCount?: number; + status: QueryStatusDto; + completed: boolean; + variantAnalysis: VariantAnalysisDto; + userSpecifiedLabel?: string; +} + +export interface VariantAnalysisDto { + id: number; + controllerRepo: { + id: number; + fullName: string; + private: boolean; + }; + query: { + name: string; + filePath: string; + language: QueryLanguageDto; + text: string; + kind?: string; + }; + databases: { + repositories?: string[]; + repositoryLists?: string[]; + repositoryOwners?: string[]; + }; + createdAt: string; + updatedAt: string; + executionStartTime: number; + status: VariantAnalysisStatusDto; + completedAt?: string; + actionsWorkflowRunId?: number; + failureReason?: VariantAnalysisFailureReasonDto; + scannedRepos?: VariantAnalysisScannedRepositoryDto[]; + skippedRepos?: VariantAnalysisSkippedRepositoriesDto; +} + +export interface VariantAnalysisScannedRepositoryDto { + repository: { + id: number; + fullName: string; + private: boolean; + stargazersCount: number; + updatedAt: string | null; + }; + analysisStatus: VariantAnalysisRepoStatusDto; + resultCount?: number; + artifactSizeInBytes?: number; + failureMessage?: string; +} + +export interface VariantAnalysisSkippedRepositoriesDto { + accessMismatchRepos?: VariantAnalysisSkippedRepositoryGroupDto; + notFoundRepos?: VariantAnalysisSkippedRepositoryGroupDto; + noCodeqlDbRepos?: VariantAnalysisSkippedRepositoryGroupDto; + overLimitRepos?: VariantAnalysisSkippedRepositoryGroupDto; +} + +export interface VariantAnalysisSkippedRepositoryGroupDto { + repositoryCount: number; + repositories: VariantAnalysisSkippedRepositoryDto[]; +} + +export interface VariantAnalysisSkippedRepositoryDto { + id?: number; + fullName: string; + private?: boolean; + stargazersCount?: number; + updatedAt?: string | null; +} + +export enum VariantAnalysisFailureReasonDto { + NoReposQueried = "noReposQueried", + ActionsWorkflowRunFailed = "actionsWorkflowRunFailed", + InternalError = "internalError", +} + +export enum VariantAnalysisRepoStatusDto { + Pending = "pending", + InProgress = "inProgress", + Succeeded = "succeeded", + Failed = "failed", + Canceled = "canceled", + TimedOut = "timedOut", +} + +export enum VariantAnalysisStatusDto { + InProgress = "inProgress", + Succeeded = "succeeded", + Failed = "failed", + Canceled = "canceled", +} + +export enum QueryStatusDto { + InProgress = "InProgress", + Completed = "Completed", + Failed = "Failed", +} diff --git a/extensions/ql-vscode/src/query-history/variant-analysis-history-item.ts b/extensions/ql-vscode/src/query-history/variant-analysis-history-item.ts new file mode 100644 index 00000000000..11a16e9367d --- /dev/null +++ b/extensions/ql-vscode/src/query-history/variant-analysis-history-item.ts @@ -0,0 +1,15 @@ +import type { QueryStatus } from "./query-status"; +import type { VariantAnalysis } from "../variant-analysis/shared/variant-analysis"; + +/** + * Information about a variant analysis. + */ +export interface VariantAnalysisHistoryItem { + readonly t: "variant-analysis"; + failureReason?: string; + resultCount?: number; + status: QueryStatus; + completed: boolean; + variantAnalysis: VariantAnalysis; + userSpecifiedLabel?: string; +} diff --git a/extensions/ql-vscode/src/query-results.ts b/extensions/ql-vscode/src/query-results.ts index 34dd4f733d2..3e81762bc08 100644 --- a/extensions/ql-vscode/src/query-results.ts +++ b/extensions/ql-vscode/src/query-results.ts @@ -1,22 +1,28 @@ -import { CancellationTokenSource, env } from 'vscode'; - -import { QueryWithResults, QueryEvaluationInfo } from './run-queries'; -import * as messages from './pure/messages'; -import * as cli from './cli'; -import * as fs from 'fs-extra'; -import * as path from 'path'; -import { +import type { CancellationTokenSource } from "vscode"; +import { env } from "vscode"; + +import type { Position } from "./query-server/messages-shared"; +import type { CodeQLCliServer, SourceInfo } from "./codeql-cli/cli"; +import { pathExists } from "fs-extra"; +import { basename } from "path"; +import type { RawResultsSortState, SortedResultSetInfo, QueryMetadata, InterpretedResultsSortState, ResultsPaths, SarifInterpretationData, - GraphInterpretationData -} from './pure/interface-types'; -import { DatabaseInfo } from './pure/interface-types'; -import { QueryStatus } from './query-status'; -import { RemoteQueryHistoryItem } from './remote-queries/remote-query-history-item'; + GraphInterpretationData, + DatabaseInfo, +} from "./common/interface-types"; +import { QueryStatus } from "./query-history/query-status"; +import type { + EvaluatorLogPaths, + QueryEvaluationInfo, + QueryWithResults, +} from "./run-queries-shared"; +import type { QueryOutputDir } from "./local-queries/query-output-dir"; +import { sarifParser } from "./common/sarif-parser"; /** * query-results.ts @@ -35,94 +41,55 @@ export interface InitialQueryInfo { readonly queryText: string; // text of the selected file, or the selected text when doing quick eval readonly isQuickQuery: boolean; readonly isQuickEval: boolean; - readonly quickEvalPosition?: messages.Position; + readonly isQuickEvalCount?: boolean; // Missing is false for backwards compatibility + readonly quickEvalPosition?: Position; readonly queryPath: string; - readonly databaseInfo: DatabaseInfo + readonly databaseInfo: DatabaseInfo; readonly start: Date; readonly id: string; // unique id for this query. + readonly outputDir?: QueryOutputDir; // If missing, we do not have a query save dir. The query may have been cancelled. This is only for backwards compatibility. } export class CompletedQueryInfo implements QueryWithResults { - readonly query: QueryEvaluationInfo; - readonly result: messages.EvaluationResult; - readonly logFileLocation?: string; - resultCount: number; - - /** - * This dispose method is called when the query is removed from the history view. - */ - dispose: () => void; - - /** - * Map from result set name to SortedResultSetInfo. - */ - sortedResultsInfo: Record; - - /** - * How we're currently sorting alerts. This is not mere interface - * state due to truncation; on re-sort, we want to read in the file - * again, sort it, and only ship off a reasonable number of results - * to the webview. Undefined means to use whatever order is in the - * sarif file. - */ - interpretedResultsSortState: InterpretedResultsSortState | undefined; - - /** - * Note that in the {@link FullQueryInfo.slurp} method, we create a CompletedQueryInfo instance - * by explicitly setting the prototype in order to avoid calling this constructor. - */ constructor( - evaluation: QueryWithResults, - ) { - this.query = evaluation.query; - this.result = evaluation.result; - this.logFileLocation = evaluation.logFileLocation; - - // Use the dispose method from the evaluation. - // The dispose will clean up any additional log locations that this - // query may have created. - this.dispose = evaluation.dispose; - - this.sortedResultsInfo = {}; - this.resultCount = 0; - } + public readonly query: QueryEvaluationInfo, + public readonly logFileLocation: string | undefined, + public readonly successful: boolean, + public readonly message: string, + /** + * How we're currently sorting alerts. This is not mere interface + * state due to truncation; on re-sort, we want to read in the file + * again, sort it, and only ship off a reasonable number of results + * to the webview. Undefined means to use whatever order is in the + * sarif file. + */ + public interpretedResultsSortState: InterpretedResultsSortState | undefined, + public resultCount: number = -1, + + /** + * Map from result set name to SortedResultSetInfo. + */ + public sortedResultsInfo: Record = {}, + ) {} setResultCount(value: number) { this.resultCount = value; } - get statusString(): string { - switch (this.result.resultType) { - case messages.QueryResultType.CANCELLATION: - return `cancelled after ${Math.round(this.result.evaluationTime / 1000)} seconds`; - case messages.QueryResultType.OOM: - return 'out of memory'; - case messages.QueryResultType.SUCCESS: - return `finished in ${Math.round(this.result.evaluationTime / 1000)} seconds`; - case messages.QueryResultType.TIMEOUT: - return `timed out after ${Math.round(this.result.evaluationTime / 1000)} seconds`; - case messages.QueryResultType.OTHER_ERROR: - default: - return this.result.message ? `failed: ${this.result.message}` : 'failed'; - } - } - getResultsPath(selectedTable: string, useSorted = true): string { if (!useSorted) { - return this.query.resultsPaths.resultsPath; + return this.query.resultsPath; } - return this.sortedResultsInfo[selectedTable]?.resultsPath - || this.query.resultsPaths.resultsPath; - } - - get didRunSuccessfully(): boolean { - return this.result.resultType === messages.QueryResultType.SUCCESS; + return ( + this.sortedResultsInfo[selectedTable]?.resultsPath || + this.query.resultsPath + ); } async updateSortState( - server: cli.CodeQLCliServer, + server: CodeQLCliServer, resultSetName: string, - sortState?: RawResultsSortState + sortState?: RawResultsSortState, ): Promise { if (sortState === undefined) { delete this.sortedResultsInfo[resultSetName]; @@ -131,102 +98,112 @@ export class CompletedQueryInfo implements QueryWithResults { const sortedResultSetInfo: SortedResultSetInfo = { resultsPath: this.query.getSortedResultSetPath(resultSetName), - sortState + sortState, }; await server.sortBqrs( - this.query.resultsPaths.resultsPath, + this.query.resultsPath, sortedResultSetInfo.resultsPath, resultSetName, [sortState.columnIndex], - [sortState.sortDirection] + [sortState.sortDirection], ); this.sortedResultsInfo[resultSetName] = sortedResultSetInfo; } - async updateInterpretedSortState(sortState?: InterpretedResultsSortState): Promise { + async updateInterpretedSortState( + sortState?: InterpretedResultsSortState, + ): Promise { this.interpretedResultsSortState = sortState; } } - /** * Call cli command to interpret SARIF results. */ export async function interpretResultsSarif( - cli: cli.CodeQLCliServer, + cli: CodeQLCliServer, metadata: QueryMetadata | undefined, resultsPaths: ResultsPaths, - sourceInfo?: cli.SourceInfo + sourceInfo?: SourceInfo, + args?: string[], ): Promise { const { resultsPath, interpretedResultsPath } = resultsPaths; - if (await fs.pathExists(interpretedResultsPath)) { - return { ...JSON.parse(await fs.readFile(interpretedResultsPath, 'utf8')), t: 'SarifInterpretationData' }; + let res; + if (await pathExists(interpretedResultsPath)) { + res = await sarifParser(interpretedResultsPath); + } else { + res = await cli.interpretBqrsSarif( + ensureMetadataIsComplete(metadata), + resultsPath, + interpretedResultsPath, + sourceInfo, + args, + ); } - const res = await cli.interpretBqrsSarif(ensureMetadataIsComplete(metadata), resultsPath, interpretedResultsPath, sourceInfo); - return { ...res, t: 'SarifInterpretationData' }; + return { ...res, t: "SarifInterpretationData" }; } /** * Call cli command to interpret graph results. */ export async function interpretGraphResults( - cli: cli.CodeQLCliServer, + cliServer: CodeQLCliServer, metadata: QueryMetadata | undefined, resultsPaths: ResultsPaths, - sourceInfo?: cli.SourceInfo + sourceInfo?: SourceInfo, ): Promise { const { resultsPath, interpretedResultsPath } = resultsPaths; - if (await fs.pathExists(interpretedResultsPath)) { - const dot = await cli.readDotFiles(interpretedResultsPath); - return { dot, t: 'GraphInterpretationData' }; + if (await pathExists(interpretedResultsPath)) { + const dot = await cliServer.readDotFiles(interpretedResultsPath); + return { dot, t: "GraphInterpretationData" }; } - const dot = await cli.interpretBqrsGraph(ensureMetadataIsComplete(metadata), resultsPath, interpretedResultsPath, sourceInfo); - return { dot, t: 'GraphInterpretationData' }; + const dot = await cliServer.interpretBqrsGraph( + ensureMetadataIsComplete(metadata), + resultsPath, + interpretedResultsPath, + sourceInfo, + ); + return { dot, t: "GraphInterpretationData" }; } export function ensureMetadataIsComplete(metadata: QueryMetadata | undefined) { if (metadata === undefined) { - throw new Error('Can\'t interpret results without query metadata'); + throw new Error("Can't interpret results without query metadata"); } if (metadata.kind === undefined) { - throw new Error('Can\'t interpret results without query metadata including kind'); + throw new Error( + "Can't interpret results without query metadata including kind", + ); } if (metadata.id === undefined) { // Interpretation per se doesn't really require an id, but the // SARIF format does, so in the absence of one, we use a dummy id. - metadata.id = 'dummy-id'; + metadata.id = "dummy-id"; } return metadata; } /** - * Used in Interface and Compare-Interface for queries that we know have been complated. + * Used in Interface and Compare-Interface for queries that we know have been completed. */ export type CompletedLocalQueryInfo = LocalQueryInfo & { - completedQuery: CompletedQueryInfo + completedQuery: CompletedQueryInfo; }; -export type QueryHistoryInfo = LocalQueryInfo | RemoteQueryHistoryItem; - export class LocalQueryInfo { - readonly t = 'local'; + readonly t = "local"; - public failureReason: string | undefined; - public completedQuery: CompletedQueryInfo | undefined; - public evalLogLocation: string | undefined; - public evalLogSummaryLocation: string | undefined; - public jsonEvalLogSummaryLocation: string | undefined; - - /** - * Note that in the {@link slurpQueryHistory} method, we create a FullQueryInfo instance - * by explicitly setting the prototype in order to avoid calling this constructor. - */ constructor( public readonly initialInfo: InitialQueryInfo, - private cancellationSource?: CancellationTokenSource // used to cancel in progress queries - ) { /**/ } + private cancellationSource?: CancellationTokenSource, // used to cancel in progress queries + public failureReason?: string, + public completedQuery?: CompletedQueryInfo, + public evaluatorLogPaths?: EvaluatorLogPaths, + ) { + /**/ + } cancel() { this.cancellationSource?.cancel(); @@ -247,6 +224,11 @@ export class LocalQueryInfo { this.initialInfo.userSpecifiedLabel = label; } + /** Sets the paths to the various structured evaluator logs. */ + public setEvaluatorLogPaths(logPaths: EvaluatorLogPaths): void { + this.evaluatorLogPaths = logPaths; + } + /** * The query's file name, unless it is a quick eval. * Queries run through quick evaluation are not usually the entire query file. @@ -256,9 +238,9 @@ export class LocalQueryInfo { if (this.initialInfo.quickEvalPosition) { const { line, endLine, fileName } = this.initialInfo.quickEvalPosition; const lineInfo = line === endLine ? `${line}` : `${line}-${endLine}`; - return `${path.basename(fileName)}:${lineInfo}`; + return `${basename(fileName)}:${lineInfo}`; } - return path.basename(this.initialInfo.queryPath); + return basename(this.initialInfo.queryPath); } /** @@ -269,8 +251,10 @@ export class LocalQueryInfo { * - Otherwise, return the query file name. */ getQueryName() { - if (this.initialInfo.quickEvalPosition) { - return 'Quick evaluation of ' + this.getQueryFileName(); + if (this.initialInfo.isQuickEvalCount) { + return `Quick evaluation counts of ${this.getQueryFileName()}`; + } else if (this.initialInfo.isQuickEval) { + return `Quick evaluation of ${this.getQueryFileName()}`; } else if (this.completedQuery?.query.metadata?.name) { return this.completedQuery?.query.metadata?.name; } else { @@ -282,8 +266,14 @@ export class LocalQueryInfo { return !!this.completedQuery; } - completeThisQuery(info: QueryWithResults) { - this.completedQuery = new CompletedQueryInfo(info); + completeThisQuery(info: QueryWithResults): void { + this.completedQuery = new CompletedQueryInfo( + info.query, + info.query.logPath, + info.successful, + info.message, + undefined, + ); // dispose of the cancellation token source and also ensure the source is not serialized as JSON this.cancellationSource?.dispose(); @@ -301,10 +291,14 @@ export class LocalQueryInfo { return QueryStatus.Failed; } else if (!this.completedQuery) { return QueryStatus.InProgress; - } else if (this.completedQuery.didRunSuccessfully) { + } else if (this.completedQuery.successful) { return QueryStatus.Completed; } else { return QueryStatus.Failed; } } + + get databaseName() { + return this.initialInfo.databaseInfo.name; + } } diff --git a/extensions/ql-vscode/src/query-serialization.ts b/extensions/ql-vscode/src/query-serialization.ts deleted file mode 100644 index e2710059460..00000000000 --- a/extensions/ql-vscode/src/query-serialization.ts +++ /dev/null @@ -1,100 +0,0 @@ -import * as fs from 'fs-extra'; -import * as path from 'path'; - -import { showAndLogErrorMessage } from './helpers'; -import { asyncFilter, getErrorMessage, getErrorStack } from './pure/helpers-pure'; -import { CompletedQueryInfo, LocalQueryInfo, QueryHistoryInfo } from './query-results'; -import { QueryStatus } from './query-status'; -import { QueryEvaluationInfo } from './run-queries'; - -export async function slurpQueryHistory(fsPath: string): Promise { - try { - if (!(await fs.pathExists(fsPath))) { - return []; - } - - const data = await fs.readFile(fsPath, 'utf8'); - const obj = JSON.parse(data); - if (obj.version !== 1) { - void showAndLogErrorMessage(`Unsupported query history format: v${obj.version}. `); - return []; - } - - const queries = obj.queries; - const parsedQueries = queries.map((q: QueryHistoryInfo) => { - - // Need to explicitly set prototype since reading in from JSON will not - // do this automatically. Note that we can't call the constructor here since - // the constructor invokes extra logic that we don't want to do. - if (q.t === 'local') { - Object.setPrototypeOf(q, LocalQueryInfo.prototype); - - // Date instances are serialized as strings. Need to - // convert them back to Date instances. - (q.initialInfo as any).start = new Date(q.initialInfo.start); - if (q.completedQuery) { - // Again, need to explicitly set prototypes. - Object.setPrototypeOf(q.completedQuery, CompletedQueryInfo.prototype); - Object.setPrototypeOf(q.completedQuery.query, QueryEvaluationInfo.prototype); - // slurped queries do not need to be disposed - q.completedQuery.dispose = () => { /**/ }; - } - } else if (q.t === 'remote') { - // A bug was introduced that didn't set the completed flag in query history - // items. The following code makes sure that the flag is set in order to - // "patch" older query history items. - if (q.status === QueryStatus.Completed) { - q.completed = true; - } - } - return q; - }); - - // filter out queries that have been deleted on disk - // most likely another workspace has deleted them because the - // queries aged out. - return asyncFilter(parsedQueries, async (q) => { - if (q.t === 'remote') { - // the slurper doesn't know where the remote queries are stored - // so we need to assume here that they exist. Later, we check to - // see if they exist on disk. - return true; - } - const resultsPath = q.completedQuery?.query.resultsPaths.resultsPath; - return !!resultsPath && await fs.pathExists(resultsPath); - }); - } catch (e) { - void showAndLogErrorMessage('Error loading query history.', { - fullMessage: ['Error loading query history.', getErrorStack(e)].join('\n'), - }); - // since the query history is invalid, it should be deleted so this error does not happen on next startup. - await fs.remove(fsPath); - return []; - } -} - -/** - * Save the query history to disk. It is not necessary that the parent directory - * exists, but if it does, it must be writable. An existing file will be overwritten. - * - * Any errors will be rethrown. - * - * @param queries the list of queries to save. - * @param fsPath the path to save the queries to. - */ -export async function splatQueryHistory(queries: QueryHistoryInfo[], fsPath: string): Promise { - try { - if (!(await fs.pathExists(fsPath))) { - await fs.mkdir(path.dirname(fsPath), { recursive: true }); - } - // remove incomplete local queries since they cannot be recreated on restart - const filteredQueries = queries.filter(q => q.t === 'local' ? q.completedQuery !== undefined : true); - const data = JSON.stringify({ - version: 1, - queries: filteredQueries - }, null, 2); - await fs.writeFile(fsPath, data); - } catch (e) { - throw new Error(`Error saving query history to ${fsPath}: ${getErrorMessage(e)}`); - } -} diff --git a/extensions/ql-vscode/src/query-server/index.ts b/extensions/ql-vscode/src/query-server/index.ts new file mode 100644 index 00000000000..cd174d25d07 --- /dev/null +++ b/extensions/ql-vscode/src/query-server/index.ts @@ -0,0 +1,4 @@ +export * from "./query-runner"; +export * from "./query-server-client"; +export * from "./run-queries"; +export * from "./server-process"; diff --git a/extensions/ql-vscode/src/query-server/messages-shared.ts b/extensions/ql-vscode/src/query-server/messages-shared.ts new file mode 100644 index 00000000000..a4b734c3a77 --- /dev/null +++ b/extensions/ql-vscode/src/query-server/messages-shared.ts @@ -0,0 +1,115 @@ +/** + * Types for messages exchanged during jsonrpc communication with the + * the CodeQL query server. + * + * This file exists in the queryserver and in the vscode extension, and + * should be kept in sync between them. + * + * A note about the namespaces below, which look like they are + * essentially enums, namely Severity, ResultColumnKind, and + * QueryResultType. By design, for the sake of extensibility, clients + * receiving messages of this protocol are supposed to accept any + * number for any of these types. We commit to the given meaning of + * the numbers listed in constants in the namespaces, and we commit to + * the fact that any unknown QueryResultType value counts as an error. + */ + +import { NotificationType } from "vscode-jsonrpc"; + +/** + * A position within a QL file. + */ +export interface Position { + /** + * The one-based index of the start line + */ + line: number; + /** + * The one-based offset of the start column within + * the start line in UTF-16 code-units + */ + column: number; + /** + * The one-based index of the end line line + */ + endLine: number; + + /** + * The one-based offset of the end column within + * the end line in UTF-16 code-units + */ + endColumn: number; + /** + * The path of the file. + * If the file name is "Compiler Generated" the + * the position is not a real position but + * arises from compiler generated code. + */ + fileName: string; +} + +/** + * The way of compiling the query, as a normal query + * or a subset of it. Note that precisely one of the two options should be set. + */ +export interface CompilationTarget { + /** + * Compile as a normal query + */ + query?: Record; + /** + * Compile as a quick evaluation + */ + quickEval?: QuickEvalOptions; +} + +/** + * Options for quick evaluation + */ +export interface QuickEvalOptions { + quickEvalPos?: Position; + /** + * Whether to only count the number of results. + */ + countOnly?: boolean; +} + +/** + * Type for any action that could have progress messages. + */ +export interface WithProgressId { + /** + * The main body + */ + body: T; + /** + * The id used to report progress updates + */ + progressId: number; +} + +export interface ProgressMessage { + /** + * The id of the operation that is running + */ + id: number; + /** + * The current step + */ + step: number; + /** + * The maximum step. This *should* be constant for a single job. + */ + maxStep: number; + /** + * The current progress message + */ + message: string; +} + +/** + * A notification that the progress has been changed. + */ +export const progress = new NotificationType( + "ql/progressUpdated", +); diff --git a/extensions/ql-vscode/src/query-server/messages.ts b/extensions/ql-vscode/src/query-server/messages.ts new file mode 100644 index 00000000000..548e93ad32b --- /dev/null +++ b/extensions/ql-vscode/src/query-server/messages.ts @@ -0,0 +1,266 @@ +/** + * Types for messages exchanged during jsonrpc communication with the + * the CodeQL query server. + * + * This file exists in the queryserver and in the vscode extension, and + * should be kept in sync between them. + * + * A note about the namespaces below, which look like they are + * essentially enums, namely Severity, ResultColumnKind, and + * QueryResultType. By design, for the sake of extensibility, clients + * receiving messages of this protocol are supposed to accept any + * number for any of these types. We commit to the given meaning of + * the numbers listed in constants in the namespaces, and we commit to + * the fact that any unknown QueryResultType value counts as an error. + */ + +import { RequestType } from "vscode-jsonrpc"; +// eslint-disable-next-line import/no-namespace -- these names are intentionally the same +import * as shared from "./messages-shared"; + +/** + * Parameters to clear the cache + */ +export interface ClearCacheParams { + /** + * The dataset for which we want to clear the cache + */ + db: string; + /** + * Whether the cache should actually be cleared. + */ + dryRun: boolean; +} + +/** + * Parameters for trimming the cache of a dataset + */ +export interface TrimCacheParams { + /** + * The dataset that we want to trim the cache of. + */ + db: string; +} + +/** + * Parameters for trimming the cache of a dataset with a specific mode. + */ +export interface TrimCacheWithModeParams { + /** + * The dataset that we want to trim the cache of. + */ + db: string; + /** + * The cache cleanup mode to use. + */ + mode: ClearCacheMode; +} + +export type ClearCacheMode = "clear" | "trim" | "fit" | "overlay"; + +/** + * The result of trimming or clearing the cache. + */ +interface ClearCacheResult { + /** + * A user friendly message saying what was or would be + * deleted. + */ + deletionMessage: string; +} + +export type QueryResultType = number; +/** + * The result of running a query. This namespace is intentionally not + * an enum, see "for the sake of extensibility" comment above. + */ +// eslint-disable-next-line @typescript-eslint/no-namespace +export namespace QueryResultType { + /** + * The query ran successfully + */ + export const SUCCESS = 0; + /** + * The query failed due to an reason + * that isn't listed + */ + export const OTHER_ERROR = 1; + /** + * The query failed do to compilation erorrs + */ + export const COMPILATION_ERROR = 2; + /** + * The query failed due to running out of + * memory + */ + export const OOM = 3; + /** + * The query failed because it was cancelled. + */ + export const CANCELLATION = 4; + /** + * The dbscheme basename was not the same + */ + export const DBSCHEME_MISMATCH_NAME = 5; + /** + * No upgrade was found + */ + export const DBSCHEME_NO_UPGRADE = 6; +} + +interface RegisterDatabasesParams { + databases: string[]; +} + +interface DeregisterDatabasesParams { + databases: string[]; +} + +type RegisterDatabasesResult = { + registeredDatabases: string[]; +}; + +type DeregisterDatabasesResult = { + registeredDatabases: string[]; +}; + +export interface RunQueryParams { + /** + * The path of the query + */ + queryPath: string; + /** + * The output path + */ + outputPath: string; + /** + * The database path + */ + db: string; + additionalPacks: string[]; + target: CompilationTarget; + externalInputs: Record; + singletonExternalInputs: Record; + dilPath?: string; + logPath?: string; + extensionPacks?: string[]; +} + +export interface RunQueryResult { + resultType: QueryResultType; + message?: string; + expectedDbschemeName?: string; + evaluationTime: number; +} + +export interface RunQueryInputOutput { + queryPath: string; + outputPath: string; + dilPath: string; +} + +export interface RunQueriesParams { + inputOutputPaths: RunQueryInputOutput[]; + db: string; + additionalPacks: string[]; + externalInputs: Record; + singletonExternalInputs: Record; + logPath?: string; + extensionPacks?: string[]; +} + +interface UpgradeParams { + db: string; + additionalPacks: string[]; +} + +type UpgradeResult = Record; + +type ClearPackCacheParams = Record; +type ClearPackCacheResult = Record; + +/** + * A position within a QL file. + */ +export type Position = shared.Position; + +/** + * The way of compiling the query, as a normal query + * or a subset of it. Note that precisely one of the two options should be set. + */ +type CompilationTarget = shared.CompilationTarget; + +export type WithProgressId = shared.WithProgressId; +export type ProgressMessage = shared.ProgressMessage; + +/** + * Clear the cache of a dataset + */ +export const clearCache = new RequestType< + WithProgressId, + ClearCacheResult, + void +>("evaluation/clearCache"); +/** + * Trim the cache of a dataset + */ +export const trimCache = new RequestType< + WithProgressId, + ClearCacheResult, + void +>("evaluation/trimCache"); +/** + * Trim the cache of a dataset with a specific mode. + */ +export const trimCacheWithMode = new RequestType< + WithProgressId, + ClearCacheResult, + void +>("evaluation/trimCacheWithMode"); + +/** + * Clear the pack cache + */ +export const clearPackCache = new RequestType< + WithProgressId, + ClearPackCacheResult, + void +>("evaluation/clearPackCache"); + +/** + * Run a query on a database + */ +export const runQuery = new RequestType< + WithProgressId, + RunQueryResult, + void +>("evaluation/runQuery"); + +export const runQueries = new RequestType< + WithProgressId, + Record, + void +>("evaluation/runQueries"); + +export const registerDatabases = new RequestType< + WithProgressId, + RegisterDatabasesResult, + void +>("evaluation/registerDatabases"); + +export const deregisterDatabases = new RequestType< + WithProgressId, + DeregisterDatabasesResult, + void +>("evaluation/deregisterDatabases"); + +export const upgradeDatabase = new RequestType< + WithProgressId, + UpgradeResult, + void +>("evaluation/runUpgrade"); + +/** + * A notification that the progress has been changed. + */ +export const progress = shared.progress; diff --git a/extensions/ql-vscode/src/query-server/query-runner.ts b/extensions/ql-vscode/src/query-server/query-runner.ts new file mode 100644 index 00000000000..5d42e6056d7 --- /dev/null +++ b/extensions/ql-vscode/src/query-server/query-runner.ts @@ -0,0 +1,297 @@ +import { window, Uri } from "vscode"; +import type { CancellationToken, MessageItem } from "vscode"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { UserCancellationException } from "../common/vscode/progress"; +import type { DatabaseItem } from "../databases/local-databases/database-item"; +import { QueryOutputDir } from "../local-queries/query-output-dir"; +import type { + ClearCacheMode, + ClearCacheParams, + Position, + QueryResultType, + TrimCacheParams, + TrimCacheWithModeParams, +} from "./messages"; +import { + clearCache, + clearPackCache, + deregisterDatabases, + registerDatabases, + trimCache, + trimCacheWithMode, + upgradeDatabase, +} from "./messages"; +import type { BaseLogger, Logger } from "../common/logging"; +import { join } from "path"; +import { nanoid } from "nanoid"; +import type { QueryServerClient } from "./query-server-client"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { compileAndRunQueryAgainstDatabaseCore } from "./run-queries"; + +export interface CoreQueryTarget { + /** Path to the query source file. */ + queryPath: string; + + /** + * Base name to use for output files, without extension. For example, "foo" will result in the + * BQRS file being written to "/foo.bqrs". + */ + outputBaseName: string; + + /** + * Optional position of text to be used as QuickEval target. This need not be in the same file as + * `queryPath`. + */ + quickEvalPosition?: Position; + /** + * If this is quick eval, whether to only count the number of results. + */ + quickEvalCountOnly?: boolean; +} + +export interface CoreQueryResult { + readonly resultType: QueryResultType; + readonly message: string | undefined; + readonly evaluationTime: number; + + /** + * The base name of the output file. Append '.bqrs' and join with the output directory to get the + * path to the BQRS. + */ + readonly outputBaseName: string; +} + +export interface CoreQueryResults { + /** A map from query path to its results. */ + readonly results: Map; +} + +export interface CoreQueryRun { + readonly queryTargets: CoreQueryTarget[]; + readonly dbPath: string; + readonly id: string; + readonly outputDir: QueryOutputDir; + + evaluate( + progress: ProgressCallback, + token: CancellationToken, + logger: BaseLogger, + ): Promise; +} + +/** Includes both the results of the query and the initial information from `CoreQueryRun`. */ +export type CoreCompletedQuery = CoreQueryResults & + Omit; + +type OnQueryRunStartingListener = (dbPath: Uri) => Promise; +export class QueryRunner { + constructor(public readonly qs: QueryServerClient) {} + + // Event handlers that get notified whenever a query is about to start running. + // Can't use vscode EventEmitters since they are not asynchronous. + private readonly onQueryRunStartingListeners: OnQueryRunStartingListener[] = + []; + public onQueryRunStarting(listener: OnQueryRunStartingListener) { + this.onQueryRunStartingListeners.push(listener); + } + + private async fireQueryRunStarting(dbPath: Uri) { + await Promise.all(this.onQueryRunStartingListeners.map((l) => l(dbPath))); + } + + get cliServer(): CodeQLCliServer { + return this.qs.cliServer; + } + + get customLogDirectory(): string | undefined { + return this.qs.config.customLogDirectory; + } + + get logger(): Logger { + return this.qs.logger; + } + + async restartQueryServer(progress: ProgressCallback): Promise { + await this.qs.restartQueryServer(progress); + } + + onStart(callBack: (progress: ProgressCallback) => Promise) { + this.qs.onDidStartQueryServer(callBack); + } + + async clearCacheInDatabase(dbItem: DatabaseItem): Promise { + if (dbItem.contents === undefined) { + throw new Error("Can't clear the cache in an invalid database."); + } + + const db = dbItem.databaseUri.fsPath; + const params: ClearCacheParams = { + dryRun: false, + db, + }; + await this.qs.sendRequest(clearCache, params); + } + + async trimCacheInDatabase(dbItem: DatabaseItem): Promise { + if (dbItem.contents === undefined) { + throw new Error("Can't trim the cache in an invalid database."); + } + + const db = dbItem.databaseUri.fsPath; + const params: TrimCacheParams = { + db, + }; + await this.qs.sendRequest(trimCache, params); + } + + async trimCacheWithModeInDatabase( + dbItem: DatabaseItem, + mode: ClearCacheMode, + ): Promise { + if (dbItem.contents === undefined) { + throw new Error("Can't clean the cache in an invalid database."); + } + + const db = dbItem.databaseUri.fsPath; + const params: TrimCacheWithModeParams = { + db, + mode, + }; + await this.qs.sendRequest(trimCacheWithMode, params); + } + + public async compileAndRunQueryAgainstDatabaseCore( + dbPath: string, + queries: CoreQueryTarget[], + additionalPacks: string[], + extensionPacks: string[] | undefined, + additionalRunQueryArgs: Record, + generateEvalLog: boolean, + outputDir: QueryOutputDir, + progress: ProgressCallback, + token: CancellationToken, + templates: Record | undefined, + logger: BaseLogger, + ): Promise { + await this.fireQueryRunStarting(Uri.file(dbPath)); + + return await compileAndRunQueryAgainstDatabaseCore( + this.qs, + dbPath, + queries, + generateEvalLog, + additionalPacks, + extensionPacks, + additionalRunQueryArgs, + outputDir, + progress, + token, + templates, + logger, + ); + } + + async deregisterDatabase(dbItem: DatabaseItem): Promise { + if (dbItem.contents) { + const databases: string[] = [dbItem.databaseUri.fsPath]; + await this.qs.sendRequest(deregisterDatabases, { databases }); + } + } + async registerDatabase(dbItem: DatabaseItem): Promise { + if (dbItem.contents) { + const databases: string[] = [dbItem.databaseUri.fsPath]; + await this.qs.sendRequest(registerDatabases, { databases }); + } + } + + async clearPackCache(): Promise { + await this.qs.sendRequest(clearPackCache, {}); + } + + async upgradeDatabaseExplicit( + dbItem: DatabaseItem, + progress: ProgressCallback, + token: CancellationToken, + ): Promise { + const yesItem = { title: "Yes", isCloseAffordance: false }; + const noItem = { title: "No", isCloseAffordance: true }; + const dialogOptions: MessageItem[] = [yesItem, noItem]; + + const message = `Should the database ${dbItem.databaseUri.fsPath} be destructively upgraded?\n\nThis should not be necessary to run queries + as we will non-destructively update it anyway.`; + const chosenItem = await window.showInformationMessage( + message, + { modal: true }, + ...dialogOptions, + ); + + if (chosenItem !== yesItem) { + throw new UserCancellationException( + "User cancelled the database upgrade.", + ); + } + await this.qs.sendRequest( + upgradeDatabase, + { + db: dbItem.databaseUri.fsPath, + additionalPacks: getOnDiskWorkspaceFolders(), + }, + token, + progress, + ); + } + + /** + * Create a `CoreQueryRun` object. This creates an object whose `evaluate()` function can be + * called to actually evaluate the query. The returned object also contains information about the + * query evaluation that is known even before evaluation starts, including the unique ID of the + * evaluation and the path to its output directory. + */ + public createQueryRun( + dbPath: string, + queries: CoreQueryTarget[], + generateEvalLog: boolean, + additionalPacks: string[], + extensionPacks: string[] | undefined, + additionalRunQueryArgs: Record, + queryStorageDir: string, + queryBasename: string, + templates: Record | undefined, + ): CoreQueryRun { + const id = `${queryBasename}-${nanoid()}`; + const outputDir = new QueryOutputDir(join(queryStorageDir, id)); + + return { + queryTargets: queries, + dbPath, + id, + outputDir, + evaluate: async ( + progress: ProgressCallback, + token: CancellationToken, + logger: BaseLogger, + ): Promise => { + return { + id, + outputDir, + dbPath, + queryTargets: queries, + ...(await this.compileAndRunQueryAgainstDatabaseCore( + dbPath, + queries, + additionalPacks, + extensionPacks, + additionalRunQueryArgs, + generateEvalLog, + outputDir, + progress, + token, + templates, + logger, + )), + }; + }, + }; + } +} diff --git a/extensions/ql-vscode/src/query-server/query-server-client.ts b/extensions/ql-vscode/src/query-server/query-server-client.ts new file mode 100644 index 00000000000..ad214b52649 --- /dev/null +++ b/extensions/ql-vscode/src/query-server/query-server-client.ts @@ -0,0 +1,329 @@ +import { ensureFile } from "fs-extra"; + +import type { DisposeHandler } from "../common/disposable-object"; +import { DisposableObject } from "../common/disposable-object"; +import type { CancellationToken } from "vscode"; +import type { RequestType } from "vscode-jsonrpc/node"; +import { createMessageConnection } from "vscode-jsonrpc/node"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { shouldDebugQueryServer, spawnServer } from "../codeql-cli/cli"; +import type { QueryServerConfig } from "../config"; +import type { BaseLogger, Logger } from "../common/logging"; +import { showAndLogErrorMessage } from "../common/logging"; +import type { ProgressReporter } from "../common/logging/vscode"; +import { extLogger } from "../common/logging/vscode"; +import type { ProgressMessage, WithProgressId } from "./messages"; +import { progress } from "./messages"; +import type { ProgressCallback } from "../common/vscode/progress"; +import { withProgress } from "../common/vscode/progress"; +import { ServerProcess } from "./server-process"; +import type { App } from "../common/app"; + +type ServerOpts = { + logger: Logger; + contextStoragePath: string; +}; + +type WithProgressReporting = ( + task: ( + progress: ProgressReporter, + token: CancellationToken, + ) => Thenable, +) => Thenable; + +const MAX_UNEXPECTED_TERMINATIONS = 5; + +/** + * Client that manages a query server process. + * The server process is started upon initialization and tracked during its lifetime. + * The server process is disposed when the client is disposed, or if the client asks + * to restart it (which disposes the existing process and starts a new one). + */ +export class QueryServerClient extends DisposableObject { + serverProcess?: ServerProcess; + progressCallbacks: { + [key: number]: ((res: ProgressMessage) => void) | undefined; + }; + nextCallback: number; + nextProgress: number; + + unexpectedTerminationCount = 0; + + withProgressReporting: WithProgressReporting; + + private readonly queryServerStartListeners = [] as Array< + (progress: ProgressCallback) => void | Promise + >; + + // Can't use standard vscode EventEmitter here since they do not cause the calling + // function to fail if one of the event handlers fail. This is something that + // we need here. + readonly onDidStartQueryServer = ( + e: (progress: ProgressCallback) => void | Promise, + ) => { + this.queryServerStartListeners.push(e); + }; + + public activeQueryLogger: BaseLogger; + + constructor( + app: App, + readonly config: QueryServerConfig, + readonly cliServer: CodeQLCliServer, + readonly opts: ServerOpts, + withProgressReporting: WithProgressReporting, + readonly warmOverlayBaseCache: boolean = false, + ) { + super(); + // Since no query is active when we initialize, just point the "active query logger" to the + // default logger. + this.activeQueryLogger = this.logger; + // When the query server configuration changes, restart the query server. + if (config.onDidChangeConfiguration !== undefined) { + this.push( + config.onDidChangeConfiguration(() => + app.commands.execute("codeQL.restartQueryServerOnConfigChange"), + ), + ); + } + this.withProgressReporting = withProgressReporting; + this.nextCallback = 0; + this.nextProgress = 0; + this.progressCallbacks = {}; + } + + get logger(): Logger { + return this.opts.logger; + } + + /** + * Whether this query server supports the 'evaluation/runQueries' method for running multiple + * queries at once. + */ + async supportsRunQueriesMethod(): Promise { + return await this.cliServer.supportsFeature("queryServerRunQueries"); + } + + /** Stops the query server by disposing of the current server process. */ + private stopQueryServer(): void { + if (this.serverProcess !== undefined) { + this.disposeAndStopTracking(this.serverProcess); + } else { + void this.logger.log("No server process to be stopped."); + } + } + + /** + * Restarts the query server by disposing of the current server process and then starting a new one. + * This resets the unexpected termination count. As hopefully it is an indication that the user has fixed the + * issue. + */ + async restartQueryServer(progress: ProgressCallback): Promise { + // Reset the unexpected termination count when we restart the query server manually + // or due to config change + this.unexpectedTerminationCount = 0; + await this.restartQueryServerInternal(progress); + } + + /** + * Try and restart the query server if it has unexpectedly terminated. + */ + private restartQueryServerOnFailure() { + if (this.unexpectedTerminationCount < MAX_UNEXPECTED_TERMINATIONS) { + void withProgress( + async (progress) => this.restartQueryServerInternal(progress), + { + title: "Restarting CodeQL query server due to unexpected termination", + }, + ); + } else { + void showAndLogErrorMessage( + extLogger, + "The CodeQL query server has unexpectedly terminated too many times. Please check the logs for errors. You can manually restart the query server using the command 'CodeQL: Restart query server'.", + ); + // Make sure we dispose anyway to reject all pending requests. + this.serverProcess?.dispose(); + } + this.unexpectedTerminationCount++; + } + + /** + * Restarts the query server by disposing of the current server process and then starting a new one. + * This does not reset the unexpected termination count. + */ + private async restartQueryServerInternal( + progress: ProgressCallback, + ): Promise { + this.stopQueryServer(); + await this.startQueryServer(); + + // Ensure we await all responses from event handlers so that + // errors can be properly reported to the user. + await Promise.all( + this.queryServerStartListeners.map((handler) => + Promise.resolve(handler(progress)), + ), + ); + } + + showLog(): void { + this.logger.show(); + } + + /** Starts a new query server process, sending progress messages to the status bar. */ + async startQueryServer(): Promise { + // Use an arrow function to preserve the value of `this`. + return this.withProgressReporting((progress, _) => + this.startQueryServerImpl(progress), + ); + } + + /** Starts a new query server process, sending progress messages to the given reporter. */ + private async startQueryServerImpl( + progressReporter: ProgressReporter, + ): Promise { + void this.logger.log("Starting query server."); + + const ramArgs = await this.cliServer.resolveRam( + this.config.queryMemoryMb, + progressReporter, + ); + const args = ["--threads", this.config.numThreads.toString()].concat( + ramArgs, + ); + + if (this.config.cacheSize > 0) { + args.push("--max-disk-cache"); + args.push(this.config.cacheSize.toString()); + } + + const structuredLogFile = `${this.opts.contextStoragePath}/structured-evaluator-log.json`; + await ensureFile(structuredLogFile); + + args.push("--evaluator-log"); + args.push(structuredLogFile); + + if (this.config.debug) { + args.push("--debug", "--tuple-counting"); + } + + if (shouldDebugQueryServer()) { + args.push( + "-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9010,server=y,suspend=y,quiet=y", + ); + } + + if (this.warmOverlayBaseCache) { + args.push( + "--no-evaluate-as-overlay", + "--cache-at-frontier", + "--warm-cache-only", + ); + } + + const queryServerSuffix = this.warmOverlayBaseCache + ? " for warming overlay-base cache" + : ""; + + const child = spawnServer( + this.config.codeQlPath, + `CodeQL query server${queryServerSuffix}`, + ["execute", "query-server2"], + args, + this.logger, + (data) => + this.activeQueryLogger.log(data.toString(), { + trailingNewline: false, + }), + undefined, // no listener for stdout + progressReporter, + ); + progressReporter.report({ + message: `Connecting to CodeQL query server${queryServerSuffix}`, + }); + const connection = createMessageConnection(child.stdout, child.stdin); + connection.onNotification(progress, (res) => { + const callback = this.progressCallbacks[res.id]; + if (callback) { + callback(res); + } + }); + this.serverProcess = new ServerProcess( + child, + connection, + `Query Server 2${queryServerSuffix}`, + this.logger, + ); + // Ensure the server process is disposed together with this client. + this.track(this.serverProcess); + connection.listen(); + progressReporter.report({ + message: `Connected to CodeQL query server${queryServerSuffix} v2`, + }); + this.nextCallback = 0; + this.nextProgress = 0; + this.progressCallbacks = {}; + + // 'exit' may or may not fire after 'error' event, so we want to guard against restarting the + // query server twice if both events fire. + let wasExitOrErrorHandled = false; + child.on("error", (err: Error) => { + if (!wasExitOrErrorHandled) { + void this.logger.log( + `Query server${queryServerSuffix} terminated with error: ${err}.`, + ); + this.restartQueryServerOnFailure(); + wasExitOrErrorHandled = true; + } + }); + child.on("exit", (code: number, signal: string) => { + if (!wasExitOrErrorHandled) { + if (code !== null) { + void this.logger.log( + `Query server${queryServerSuffix} terminated with exit code: ${code}.`, + ); + } + if (signal !== null) { + void this.logger.log( + `Query server${queryServerSuffix} terminated due to receipt of signal: ${signal}.`, + ); + } + this.restartQueryServerOnFailure(); + wasExitOrErrorHandled = true; + } + }); + } + + get serverProcessPid(): number { + return this.serverProcess!.child.pid || 0; + } + + async sendRequest( + type: RequestType, R, E>, + parameter: P, + token?: CancellationToken, + progress?: (res: ProgressMessage) => void, + ): Promise { + const id = this.nextProgress++; + this.progressCallbacks[id] = progress; + + try { + if (this.serverProcess === undefined) { + throw new Error("No query server process found."); + } + return await this.serverProcess.connection.sendRequest( + type, + { body: parameter, progressId: id }, + token, + ); + } finally { + delete this.progressCallbacks[id]; + } + } + + public dispose(disposeHandler?: DisposeHandler): void { + this.progressCallbacks = {}; + this.stopQueryServer(); + super.dispose(disposeHandler); + } +} diff --git a/extensions/ql-vscode/src/query-server/run-queries.ts b/extensions/ql-vscode/src/query-server/run-queries.ts new file mode 100644 index 00000000000..5a35144728f --- /dev/null +++ b/extensions/ql-vscode/src/query-server/run-queries.ts @@ -0,0 +1,182 @@ +import type { CancellationToken } from "vscode"; +import type { ProgressCallback } from "../common/vscode/progress"; +import type { + RunQueryParams, + RunQueryResult, + RunQueriesParams, + RunQueryInputOutput, +} from "./messages"; +import { runQueries, runQuery } from "./messages"; +import type { QueryOutputDir } from "../local-queries/query-output-dir"; +import type { QueryServerClient } from "./query-server-client"; +import type { + CoreQueryResult, + CoreQueryResults, + CoreQueryTarget, +} from "./query-runner"; +import type { BaseLogger } from "../common/logging"; + +/** + * run-queries.ts + * -------------- + * + * Compiling and running QL queries. + */ + +/** + * A collection of evaluation-time information about a query, + * including the query itself, and where we have decided to put + * temporary files associated with it, such as the compiled query + * output and results. + */ + +export async function compileAndRunQueryAgainstDatabaseCore( + qs: QueryServerClient, + dbPath: string, + targets: CoreQueryTarget[], + generateEvalLog: boolean, + additionalPacks: string[], + extensionPacks: string[] | undefined, + additionalRunQueryArgs: Record, + outputDir: QueryOutputDir, + progress: ProgressCallback, + token: CancellationToken, + templates: Record | undefined, + logger: BaseLogger, +): Promise { + if (targets.length > 1) { + // We are running a batch of multiple queries; use the new query server API for that. + if (targets.some((target) => target.quickEvalPosition !== undefined)) { + throw new Error( + "Quick evaluation is not supported when running multiple queries.", + ); + } + return compileAndRunQueriesAgainstDatabaseCore( + qs, + dbPath, + targets, + generateEvalLog, + additionalPacks, + extensionPacks, + additionalRunQueryArgs, + outputDir, + progress, + token, + templates, + logger, + ); + } + + const target = targets[0]; + const compilationTarget = + target.quickEvalPosition !== undefined + ? { + quickEval: { + quickEvalPos: target.quickEvalPosition, + countOnly: target.quickEvalCountOnly, + }, + } + : { query: {} }; + + const evalLogPath = generateEvalLog ? outputDir.evalLogPath : undefined; + const queryToRun: RunQueryParams = { + db: dbPath, + additionalPacks, + externalInputs: {}, + singletonExternalInputs: templates || {}, + queryPath: target.queryPath, + outputPath: outputDir.getBqrsPath(target.outputBaseName), + dilPath: outputDir.getDilPath(target.outputBaseName), + logPath: evalLogPath, + target: compilationTarget, + extensionPacks, + // Add any additional arguments without interpretation. + ...additionalRunQueryArgs, + }; + + // Update the active query logger every time there is a new request to compile. + // This isn't ideal because in situations where there are queries running + // in parallel, each query's log messages are interleaved. Fixing this + // properly will require a change in the query server. + qs.activeQueryLogger = logger; + const result = await qs.sendRequest(runQuery, queryToRun, token, progress); + return { + results: new Map([ + [ + target.queryPath, + { + resultType: result.resultType, + message: result.message, + evaluationTime: result.evaluationTime, + outputBaseName: target.outputBaseName, + }, + ], + ]), + }; +} + +async function compileAndRunQueriesAgainstDatabaseCore( + qs: QueryServerClient, + dbPath: string, + targets: CoreQueryTarget[], + generateEvalLog: boolean, + additionalPacks: string[], + extensionPacks: string[] | undefined, + additionalRunQueryArgs: Record, + outputDir: QueryOutputDir, + progress: ProgressCallback, + token: CancellationToken, + templates: Record | undefined, + logger: BaseLogger, +): Promise { + if (!(await qs.supportsRunQueriesMethod())) { + throw new Error( + "The CodeQL CLI does not support the 'evaluation/runQueries' query-server command. Please update to the latest version.", + ); + } + const inputOutputPaths: RunQueryInputOutput[] = targets.map((target) => { + return { + queryPath: target.queryPath, + outputPath: outputDir.getBqrsPath(target.outputBaseName), + dilPath: outputDir.getDilPath(target.outputBaseName), + }; + }); + + const evalLogPath = generateEvalLog ? outputDir.evalLogPath : undefined; + const queriesToRun: RunQueriesParams = { + db: dbPath, + additionalPacks, + externalInputs: {}, + singletonExternalInputs: templates || {}, + inputOutputPaths, + logPath: evalLogPath, + extensionPacks, + // Add any additional arguments without interpretation. + ...additionalRunQueryArgs, + }; + + // Update the active query logger every time there is a new request to compile. + // This isn't ideal because in situations where there are queries running + // in parallel, each query's log messages are interleaved. Fixing this + // properly will require a change in the query server. + qs.activeQueryLogger = logger; + const queryResults: Record = await qs.sendRequest( + runQueries, + queriesToRun, + token, + progress, + ); + const coreQueryResults = new Map(); + targets.forEach((target) => { + const queryResult = queryResults[target.queryPath]; + coreQueryResults.set(target.queryPath, { + resultType: queryResult.resultType, + message: queryResult.message, + evaluationTime: queryResult.evaluationTime, + outputBaseName: target.outputBaseName, + }); + }); + return { + results: coreQueryResults, + }; +} diff --git a/extensions/ql-vscode/src/query-server/server-process.ts b/extensions/ql-vscode/src/query-server/server-process.ts new file mode 100644 index 00000000000..3a3f549620c --- /dev/null +++ b/extensions/ql-vscode/src/query-server/server-process.ts @@ -0,0 +1,36 @@ +import type { Logger } from "../common/logging"; +import type { ChildProcess } from "child_process"; +import type { Disposable } from "vscode"; +import type { MessageConnection } from "vscode-jsonrpc"; + +/** A running query server process and its associated message connection. */ +export class ServerProcess implements Disposable { + child: ChildProcess; + connection: MessageConnection; + logger: Logger; + + constructor( + child: ChildProcess, + connection: MessageConnection, + private name: string, + logger: Logger, + ) { + this.child = child; + this.connection = connection; + this.logger = logger; + } + + dispose(): void { + void this.logger.log(`Stopping ${this.name}...`); + this.connection.dispose(); + this.connection.end(); + this.child.stdin!.end(); + this.child.stderr!.destroy(); + this.child.removeAllListeners(); + // TODO kill the process if it doesn't terminate after a certain time limit. + + // On Windows, we usually have to terminate the process before closing its stdout. + this.child.stdout!.destroy(); + void this.logger.log(`Stopped ${this.name}.`); + } +} diff --git a/extensions/ql-vscode/src/query-status.ts b/extensions/ql-vscode/src/query-status.ts deleted file mode 100644 index 040454ce623..00000000000 --- a/extensions/ql-vscode/src/query-status.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum QueryStatus { - InProgress = 'InProgress', - Completed = 'Completed', - Failed = 'Failed', -} diff --git a/extensions/ql-vscode/src/query-testing/qltest-discovery.ts b/extensions/ql-vscode/src/query-testing/qltest-discovery.ts new file mode 100644 index 00000000000..cae5b023f21 --- /dev/null +++ b/extensions/ql-vscode/src/query-testing/qltest-discovery.ts @@ -0,0 +1,108 @@ +import { dirname, basename, normalize, relative, extname } from "path"; +import { Discovery } from "../common/discovery"; +import type { Event, Uri, WorkspaceFolder } from "vscode"; +import { EventEmitter, RelativePattern, env } from "vscode"; +import { MultiFileSystemWatcher } from "../common/vscode/multi-file-system-watcher"; +import type { CodeQLCliServer } from "../codeql-cli/cli"; +import { pathExists } from "fs-extra"; +import { FileTreeDirectory, FileTreeLeaf } from "../common/file-tree-nodes"; +import { extLogger } from "../common/logging/vscode"; + +/** + * Discovers all QL tests contained in the QL packs in a given workspace folder. + */ +export class QLTestDiscovery extends Discovery { + private readonly _onDidChangeTests = this.push(new EventEmitter()); + private readonly watcher: MultiFileSystemWatcher = this.push( + new MultiFileSystemWatcher(), + ); + private _testDirectory: FileTreeDirectory | undefined; + + constructor( + private readonly workspaceFolder: WorkspaceFolder, + private readonly cliServer: CodeQLCliServer, + ) { + super("QL Test Discovery", extLogger); + + this.push(this.watcher.onDidChange(this.handleDidChange, this)); + + // Watch for changes to any `.ql` or `.qlref` file in any of the QL packs that contain tests. + this.watcher.addWatch( + new RelativePattern(this.workspaceFolder.uri.fsPath, "**/*.{ql,qlref}"), + ); + // need to explicitly watch for changes to directories themselves. + this.watcher.addWatch( + new RelativePattern(this.workspaceFolder.uri.fsPath, "**/"), + ); + } + + /** + * Event to be fired when the set of discovered tests may have changed. + */ + public get onDidChangeTests(): Event { + return this._onDidChangeTests.event; + } + + /** + * The root directory. There is at least one test in this directory, or + * in a subdirectory of this. + */ + public get testDirectory(): FileTreeDirectory | undefined { + return this._testDirectory; + } + + private handleDidChange(uri: Uri): void { + if (!QLTestDiscovery.ignoreTestPath(uri.fsPath)) { + void this.refresh(); + } + } + protected async discover() { + this._testDirectory = await this.discoverTests(); + + this._onDidChangeTests.fire(undefined); + } + + /** + * Discover all QL tests in the specified directory and its subdirectories. + * @returns A `QLTestDirectory` object describing the contents of the directory, or `undefined` if + * no tests were found. + */ + private async discoverTests(): Promise { + const fullPath = this.workspaceFolder.uri.fsPath; + const name = this.workspaceFolder.name; + const rootDirectory = new FileTreeDirectory(fullPath, name, env); + + // Don't try discovery on workspace folders that don't exist on the filesystem + if (await pathExists(fullPath)) { + const resolvedTests = ( + await this.cliServer.resolveTests(fullPath) + ).filter((testPath) => !QLTestDiscovery.ignoreTestPath(testPath)); + for (const testPath of resolvedTests) { + const relativePath = normalize(relative(fullPath, testPath)); + const dirName = dirname(relativePath); + const parentDirectory = rootDirectory.createDirectory(dirName); + parentDirectory.addChild( + new FileTreeLeaf(testPath, basename(testPath)), + ); + } + + rootDirectory.finish(); + } + return rootDirectory; + } + + /** + * Determine if the specified QL test should be ignored based on its filename. + * @param testPath Path to the test file. + */ + private static ignoreTestPath(testPath: string): boolean { + switch (extname(testPath).toLowerCase()) { + case ".ql": + case ".qlref": + return basename(testPath).startsWith("__"); + + default: + return false; + } + } +} diff --git a/extensions/ql-vscode/src/query-testing/test-manager.ts b/extensions/ql-vscode/src/query-testing/test-manager.ts new file mode 100644 index 00000000000..b7eb7139df7 --- /dev/null +++ b/extensions/ql-vscode/src/query-testing/test-manager.ts @@ -0,0 +1,484 @@ +import { copy, createFile, lstat, pathExists, readFile } from "fs-extra"; +import type { + CancellationToken, + TestController, + TestItem, + TestRun, + TestRunRequest, + TextDocumentShowOptions, + WorkspaceFolder, + WorkspaceFoldersChangeEvent, +} from "vscode"; +import { + Location, + Range, + TestMessage, + TestRunProfileKind, + Uri, + tests, + window, + workspace, +} from "vscode"; +import { DisposableObject } from "../common/disposable-object"; +import { QLTestDiscovery } from "./qltest-discovery"; +import type { CodeQLCliServer, CompilationMessage } from "../codeql-cli/cli"; +import { CompilationMessageSeverity } from "../codeql-cli/cli"; +import { getErrorMessage } from "../common/helpers-pure"; +import type { BaseLogger, LogOptions } from "../common/logging"; +import type { TestRunner } from "./test-runner"; +import type { App } from "../common/app"; +import { isWorkspaceFolderOnDisk } from "../common/vscode/workspace-folders"; +import type { FileTreeNode } from "../common/file-tree-nodes"; +import { FileTreeDirectory, FileTreeLeaf } from "../common/file-tree-nodes"; +import type { TestUICommands } from "../common/commands"; +import { basename, extname } from "path"; + +/** + * Get the full path of the `.expected` file for the specified QL test. + * @param testPath The full path to the test file. + */ +function getExpectedFile(testPath: string): string { + return getTestOutputFile(testPath, ".expected"); +} + +/** + * Get the full path of the `.actual` file for the specified QL test. + * @param testPath The full path to the test file. + */ +function getActualFile(testPath: string): string { + return getTestOutputFile(testPath, ".actual"); +} + +/** + * Gets the the full path to a particular output file of the specified QL test. + * @param testPath The full path to the QL test. + * @param extension The file extension of the output file. + */ +function getTestOutputFile(testPath: string, extension: string): string { + return changeExtension(testPath, extension); +} + +/** + * Change the file extension of the specified path. + * @param p The original file path. + * @param ext The new extension, including the `.`. + */ +function changeExtension(p: string, ext: string): string { + return p.slice(0, -extname(p).length) + ext; +} + +function compilationMessageToTestMessage( + compilationMessage: CompilationMessage, +): TestMessage { + const location = new Location( + Uri.file(compilationMessage.position.fileName), + new Range( + compilationMessage.position.line - 1, + compilationMessage.position.column - 1, + compilationMessage.position.endLine - 1, + compilationMessage.position.endColumn - 1, + ), + ); + const testMessage = new TestMessage(compilationMessage.message); + testMessage.location = location; + return testMessage; +} + +/** + * Returns the complete text content of the specified file. If there is an error reading the file, + * an error message is added to `testMessages` and this function returns undefined. + */ +async function tryReadFileContents( + path: string, + testMessages: TestMessage[], +): Promise { + try { + return await readFile(path, { encoding: "utf-8" }); + } catch (e) { + testMessages.push( + new TestMessage( + `Error reading from file '${path}': ${getErrorMessage(e)}`, + ), + ); + return undefined; + } +} + +function forEachTest(testItem: TestItem, op: (test: TestItem) => void): void { + if (testItem.children.size > 0) { + // This is a directory, so recurse into the children. + for (const [, child] of testItem.children) { + forEachTest(child, op); + } + } else { + // This is a leaf node, so it's a test. + op(testItem); + } +} + +/** + * Implementation of `BaseLogger` that logs to the output of a `TestRun`. + */ +class TestRunLogger implements BaseLogger { + public constructor(private readonly testRun: TestRun) {} + + public async log(message: string, options?: LogOptions): Promise { + // "\r\n" because that's what the test terminal wants. + const lineEnding = options?.trailingNewline === false ? "" : "\r\n"; + this.testRun.appendOutput(message + lineEnding); + } +} + +/** + * Handles test discovery for a specific workspace folder, and reports back to `TestManager`. + */ +class WorkspaceFolderHandler extends DisposableObject { + private readonly testDiscovery: QLTestDiscovery; + + public constructor( + private readonly workspaceFolder: WorkspaceFolder, + private readonly testUI: TestManager, + cliServer: CodeQLCliServer, + ) { + super(); + + this.testDiscovery = new QLTestDiscovery(workspaceFolder, cliServer); + this.push( + this.testDiscovery.onDidChangeTests(this.handleDidChangeTests, this), + ); + void this.testDiscovery.refresh(); + } + + private handleDidChangeTests(): void { + const testDirectory = this.testDiscovery.testDirectory; + + this.testUI.updateTestsForWorkspaceFolder( + this.workspaceFolder, + testDirectory, + ); + } +} + +/** + * Service that populates the VS Code "Test Explorer" panel for CodeQL, and handles running and + * debugging of tests. + */ +export class TestManager extends DisposableObject { + /** + * Maps from each workspace folder being tracked to the `WorkspaceFolderHandler` responsible for + * tracking it. + */ + private readonly workspaceFolderHandlers = new Map< + WorkspaceFolder, + WorkspaceFolderHandler + >(); + + public constructor( + private readonly app: App, + private readonly testRunner: TestRunner, + private readonly cliServer: CodeQLCliServer, + // Having this as a parameter with a default value makes passing in a mock easier. + private readonly testController: TestController = tests.createTestController( + "codeql", + "CodeQL Tests", + ), + ) { + super(); + + this.testController.createRunProfile( + "Run", + TestRunProfileKind.Run, + this.run.bind(this), + ); + + // Start by tracking whatever folders are currently in the workspace. + this.startTrackingWorkspaceFolders(workspace.workspaceFolders ?? []); + + // Listen for changes to the set of workspace folders. + workspace.onDidChangeWorkspaceFolders( + this.handleDidChangeWorkspaceFolders, + this, + ); + } + + public dispose(): void { + this.workspaceFolderHandlers.clear(); // These will be disposed in the `super.dispose()` call. + super.dispose(); + } + + public getCommands(): TestUICommands { + return { + "codeQLTests.showOutputDifferences": + this.showOutputDifferences.bind(this), + "codeQLTests.acceptOutput": this.acceptOutput.bind(this), + "codeQLTests.acceptOutputContextTestItem": this.acceptOutput.bind(this), + }; + } + + protected getTestPath(node: TestItem): string { + if (node.uri === undefined || node.uri.scheme !== "file") { + throw new Error("Selected test is not a CodeQL test."); + } + return node.uri.fsPath; + } + + private async acceptOutput(node: TestItem): Promise { + const testPath = this.getTestPath(node); + const stat = await lstat(testPath); + if (stat.isFile()) { + const expectedPath = getExpectedFile(testPath); + const actualPath = getActualFile(testPath); + await copy(actualPath, expectedPath, { overwrite: true }); + } + } + + private async showOutputDifferences(node: TestItem): Promise { + const testId = this.getTestPath(node); + const stat = await lstat(testId); + if (stat.isFile()) { + const expectedPath = getExpectedFile(testId); + const expectedUri = Uri.file(expectedPath); + const actualPath = getActualFile(testId); + const options: TextDocumentShowOptions = { + preserveFocus: true, + preview: true, + }; + + if (!(await pathExists(expectedPath))) { + // Just create a new file. + await createFile(expectedPath); + } + + if (await pathExists(actualPath)) { + const actualUri = Uri.file(actualPath); + await this.app.commands.execute( + "vscode.diff", + expectedUri, + actualUri, + `Expected vs. Actual for ${basename(testId)}`, + options, + ); + } else { + await window.showTextDocument(expectedUri, options); + } + } + } + + /** Start tracking tests in the specified workspace folders. */ + private startTrackingWorkspaceFolders( + workspaceFolders: readonly WorkspaceFolder[], + ): void { + // Only track on-disk workspace folders, to avoid trying to run the CLI test discovery command + // on random URIs. + workspaceFolders + .filter(isWorkspaceFolderOnDisk) + .forEach((workspaceFolder) => { + const workspaceFolderHandler = new WorkspaceFolderHandler( + workspaceFolder, + this, + this.cliServer, + ); + this.track(workspaceFolderHandler); + this.workspaceFolderHandlers.set( + workspaceFolder, + workspaceFolderHandler, + ); + }); + } + + /** Stop tracking tests in the specified workspace folders. */ + private stopTrackingWorkspaceFolders( + workspaceFolders: readonly WorkspaceFolder[], + ): void { + for (const workspaceFolder of workspaceFolders) { + const workspaceFolderHandler = + this.workspaceFolderHandlers.get(workspaceFolder); + if (workspaceFolderHandler !== undefined) { + // Delete the root item for this workspace folder, if any. + this.testController.items.delete(workspaceFolder.uri.toString()); + this.disposeAndStopTracking(workspaceFolderHandler); + this.workspaceFolderHandlers.delete(workspaceFolder); + } + } + } + + private handleDidChangeWorkspaceFolders( + e: WorkspaceFoldersChangeEvent, + ): void { + this.startTrackingWorkspaceFolders(e.added); + this.stopTrackingWorkspaceFolders(e.removed); + } + + /** + * Update the test controller when we discover changes to the tests in the workspace folder. + */ + public updateTestsForWorkspaceFolder( + workspaceFolder: WorkspaceFolder, + testDirectory: FileTreeDirectory | undefined, + ): void { + if (testDirectory !== undefined) { + // Adding an item with the same ID as an existing item will replace it, which is exactly what + // we want. + // Test discovery returns a root `QLTestDirectory` representing the workspace folder itself, + // named after the `WorkspaceFolder` object's `name` property. We can map this directly to a + // `TestItem`. + this.testController.items.add( + this.createTestItemTree(testDirectory, true), + ); + } else { + // No tests, so delete any existing item. + this.testController.items.delete(workspaceFolder.uri.toString()); + } + } + + /** + * Creates a tree of `TestItem`s from the root `QlTestNode` provided by test discovery. + */ + private createTestItemTree(node: FileTreeNode, isRoot: boolean): TestItem { + // Prefix the ID to identify it as a directory or a test + const itemType = node instanceof FileTreeDirectory ? "dir" : "test"; + const testItem = this.testController.createTestItem( + // For the root of a workspace folder, use the full path as the ID. Otherwise, use the node's + // name as the ID, since it's shorter but still unique. + `${itemType} ${isRoot ? node.path : node.name}`, + node.name, + Uri.file(node.path), + ); + + for (const childNode of node.children) { + const childItem = this.createTestItemTree(childNode, false); + if (childNode instanceof FileTreeLeaf) { + childItem.range = new Range(0, 0, 0, 0); + } + testItem.children.add(childItem); + } + + return testItem; + } + + /** + * Run the tests specified by the `TestRunRequest` parameter. + * + * Public because this is used in unit tests. + */ + public async run( + request: TestRunRequest, + token: CancellationToken, + ): Promise { + const testsToRun = this.computeTestsToRun(request); + const testRun = this.testController.createTestRun(request, undefined, true); + try { + const tests: string[] = []; + testsToRun.forEach((testItem, testPath) => { + testRun.enqueued(testItem); + tests.push(testPath); + }); + + const logger = new TestRunLogger(testRun); + + await this.testRunner.run(tests, logger, token, async (event) => { + // Pass the test path from the event through `Uri` and back via `fsPath` so that it matches + // the canonicalization of the URI that we used to create the `TestItem`. + const testItem = testsToRun.get(Uri.file(event.test).fsPath); + if (testItem === undefined) { + throw new Error( + `Unexpected result from unknown test '${event.test}'.`, + ); + } + + const duration = event.compilationMs + event.evaluationMs; + if (event.pass) { + testRun.passed(testItem, duration); + } else { + // Construct a list of `TestMessage`s to report for the failure. + const testMessages: TestMessage[] = []; + if (event.failureDescription !== undefined) { + testMessages.push(new TestMessage(event.failureDescription)); + } + if (event.diff?.length && event.actual !== undefined) { + // Actual results differ from expected results. Read both sets of results and create a + // diff to put in the message. + const expected = await tryReadFileContents( + event.expected, + testMessages, + ); + const actual = await tryReadFileContents( + event.actual, + testMessages, + ); + if (expected !== undefined && actual !== undefined) { + testMessages.push( + TestMessage.diff( + "Actual output differs from expected", + expected, + actual, + ), + ); + } + } + const errorMessages = event.messages.filter( + (m) => m.severity === CompilationMessageSeverity.Error, + ); + if (errorMessages.length > 0) { + // The test didn't make it far enough to produce results. Transform any error messages + // into `TestMessage`s and report the test as "errored". + const testMessages = event.messages.map( + compilationMessageToTestMessage, + ); + testRun.errored(testItem, testMessages, duration); + } else { + // Results didn't match expectations. Report the test as "failed". + if (testMessages.length === 0) { + // If we managed to get here without creating any `TestMessage`s, create a default one + // here. Any failed test needs at least one message. + testMessages.push(new TestMessage("Test failed")); + } + + // Add any warnings produced by the test to the test messages. + testMessages.push( + ...event.messages.map(compilationMessageToTestMessage), + ); + + testRun.failed(testItem, testMessages, duration); + } + } + }); + } finally { + testRun.end(); + } + } + + /** + * Computes the set of tests to run as specified in the `TestRunRequest` object. + */ + private computeTestsToRun(request: TestRunRequest): Map { + const testsToRun = new Map(); + if (request.include !== undefined) { + // Include these tests, recursively expanding test directories into their list of contained + // tests. + for (const includedTestItem of request.include) { + forEachTest(includedTestItem, (testItem) => + testsToRun.set(testItem.uri!.fsPath, testItem), + ); + } + } else { + // Include all of the tests. + for (const [, includedTestItem] of this.testController.items) { + forEachTest(includedTestItem, (testItem) => + testsToRun.set(testItem.uri!.fsPath, testItem), + ); + } + } + if (request.exclude !== undefined) { + // Exclude the specified tests from the set we've computed so far, again recursively expanding + // test directories into their list of contained tests. + for (const excludedTestItem of request.exclude) { + forEachTest(excludedTestItem, (testItem) => + testsToRun.delete(testItem.uri!.fsPath), + ); + } + } + + return testsToRun; + } +} diff --git a/extensions/ql-vscode/src/query-testing/test-runner.ts b/extensions/ql-vscode/src/query-testing/test-runner.ts new file mode 100644 index 00000000000..8c38fca4ab6 --- /dev/null +++ b/extensions/ql-vscode/src/query-testing/test-runner.ts @@ -0,0 +1,135 @@ +import type { CancellationToken, Uri } from "vscode"; +import type { CodeQLCliServer, TestCompleted } from "../codeql-cli/cli"; +import type { + DatabaseItem, + DatabaseManager, +} from "../databases/local-databases"; +import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; +import { asError, getErrorMessage } from "../common/helpers-pure"; +import { redactableError } from "../common/errors"; +import { access } from "fs-extra"; +import { extLogger } from "../common/logging/vscode"; +import type { BaseLogger } from "../common/logging"; +import { + showAndLogExceptionWithTelemetry, + showAndLogWarningMessage, +} from "../common/logging"; +import { DisposableObject } from "../common/disposable-object"; +import { telemetryListener } from "../common/vscode/telemetry"; + +async function isFileAccessible(uri: Uri): Promise { + try { + await access(uri.fsPath); + return true; + } catch { + return false; + } +} + +export class TestRunner extends DisposableObject { + public constructor( + private readonly databaseManager: DatabaseManager, + private readonly cliServer: CodeQLCliServer, + ) { + super(); + } + + public async run( + tests: string[], + logger: BaseLogger, + token: CancellationToken, + eventHandler: (event: TestCompleted) => Promise, + ): Promise { + const currentDatabaseUri = + this.databaseManager.currentDatabaseItem?.databaseUri; + const databasesUnderTest: DatabaseItem[] = []; + for (const database of this.databaseManager.databaseItems) { + for (const test of tests) { + if (await database.isAffectedByTest(test)) { + databasesUnderTest.push(database); + break; + } + } + } + + await this.removeDatabasesBeforeTests(databasesUnderTest); + try { + const workspacePaths = getOnDiskWorkspaceFolders(); + for await (const event of this.cliServer.runTests(tests, workspacePaths, { + cancellationToken: token, + logger, + })) { + await eventHandler(event); + } + } catch { + // CodeQL testing can throw exception even in normal scenarios. For example, if the test run + // produces no output (which is normal), the testing command would throw an exception on + // unexpected EOF during json parsing. So nothing needs to be done here - all the relevant + // error information (if any) should have already been written to the test logger. + } finally { + await this.reopenDatabasesAfterTests( + databasesUnderTest, + currentDatabaseUri, + ); + } + } + + private async removeDatabasesBeforeTests( + databasesUnderTest: DatabaseItem[], + ): Promise { + for (const database of databasesUnderTest) { + try { + await this.databaseManager.removeDatabaseItem(database); + } catch (e) { + // This method is invoked from Test Explorer UI, and testing indicates that Test + // Explorer UI swallows any thrown exception without reporting it to the user. + // So we need to display the error message ourselves and then rethrow. + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + redactableError(asError(e))`Cannot remove database ${ + database.name + }: ${getErrorMessage(e)}`, + ); + throw e; + } + } + } + + private async reopenDatabasesAfterTests( + databasesUnderTest: DatabaseItem[], + currentDatabaseUri: Uri | undefined, + ): Promise { + for (const closedDatabase of databasesUnderTest) { + const uri = closedDatabase.databaseUri; + if (await isFileAccessible(uri)) { + try { + const reopenedDatabase = await this.databaseManager.openDatabase( + uri, + closedDatabase.origin, + false, + ); + await this.databaseManager.renameDatabaseItem( + reopenedDatabase, + closedDatabase.name, + ); + if (currentDatabaseUri?.toString() === uri.toString()) { + await this.databaseManager.setCurrentDatabaseItem( + reopenedDatabase, + true, + ); + } + } catch (e) { + // This method is invoked from Test Explorer UI, and testing indicates that Test + // Explorer UI swallows any thrown exception without reporting it to the user. + // So we need to display the error message ourselves and then rethrow. + void showAndLogWarningMessage( + extLogger, + `Cannot reopen database ${uri.toString()}: ${getErrorMessage(e)}`, + ); + throw e; + } + } + } + } +} diff --git a/extensions/ql-vscode/src/queryserver-client.ts b/extensions/ql-vscode/src/queryserver-client.ts deleted file mode 100644 index 372f4dcc085..00000000000 --- a/extensions/ql-vscode/src/queryserver-client.ts +++ /dev/null @@ -1,276 +0,0 @@ -import * as cp from 'child_process'; -import * as path from 'path'; -import * as fs from 'fs-extra'; - -import { DisposableObject } from './pure/disposable-object'; -import { Disposable, CancellationToken, commands } from 'vscode'; -import { createMessageConnection, MessageConnection, RequestType } from 'vscode-jsonrpc'; -import * as cli from './cli'; -import { QueryServerConfig } from './config'; -import { Logger, ProgressReporter } from './logging'; -import { completeQuery, EvaluationResult, progress, ProgressMessage, WithProgressId } from './pure/messages'; -import * as messages from './pure/messages'; -import { ProgressCallback, ProgressTask } from './commandRunner'; - -type ServerOpts = { - logger: Logger; - contextStoragePath: string; -} - -/** A running query server process and its associated message connection. */ -class ServerProcess implements Disposable { - child: cp.ChildProcess; - connection: MessageConnection; - logger: Logger; - - constructor(child: cp.ChildProcess, connection: MessageConnection, logger: Logger) { - this.child = child; - this.connection = connection; - this.logger = logger; - } - - dispose(): void { - void this.logger.log('Stopping query server...'); - this.connection.dispose(); - this.child.stdin!.end(); - this.child.stderr!.destroy(); - // TODO kill the process if it doesn't terminate after a certain time limit. - - // On Windows, we usually have to terminate the process before closing its stdout. - this.child.stdout!.destroy(); - void this.logger.log('Stopped query server.'); - } -} - -type WithProgressReporting = (task: (progress: ProgressReporter, token: CancellationToken) => Thenable) => Thenable; - -/** - * Client that manages a query server process. - * The server process is started upon initialization and tracked during its lifetime. - * The server process is disposed when the client is disposed, or if the client asks - * to restart it (which disposes the existing process and starts a new one). - */ -export class QueryServerClient extends DisposableObject { - - serverProcess?: ServerProcess; - evaluationResultCallbacks: { [key: number]: (res: EvaluationResult) => void }; - progressCallbacks: { [key: number]: ((res: ProgressMessage) => void) | undefined }; - nextCallback: number; - nextProgress: number; - withProgressReporting: WithProgressReporting; - - private readonly queryServerStartListeners = [] as ProgressTask[]; - - // Can't use standard vscode EventEmitter here since they do not cause the calling - // function to fail if one of the event handlers fail. This is something that - // we need here. - readonly onDidStartQueryServer = (e: ProgressTask) => { - this.queryServerStartListeners.push(e); - } - - public activeQueryLogFile: string | undefined; - - constructor( - readonly config: QueryServerConfig, - readonly cliServer: cli.CodeQLCliServer, - readonly opts: ServerOpts, - withProgressReporting: WithProgressReporting - ) { - super(); - // When the query server configuration changes, restart the query server. - if (config.onDidChangeConfiguration !== undefined) { - this.push(config.onDidChangeConfiguration(() => - commands.executeCommand('codeQL.restartQueryServer'))); - } - this.withProgressReporting = withProgressReporting; - this.nextCallback = 0; - this.nextProgress = 0; - this.progressCallbacks = {}; - this.evaluationResultCallbacks = {}; - } - - get logger(): Logger { - return this.opts.logger; - } - - /** Stops the query server by disposing of the current server process. */ - private stopQueryServer(): void { - if (this.serverProcess !== undefined) { - this.disposeAndStopTracking(this.serverProcess); - } else { - void this.logger.log('No server process to be stopped.'); - } - } - - /** Restarts the query server by disposing of the current server process and then starting a new one. */ - async restartQueryServer( - progress: ProgressCallback, - token: CancellationToken - ): Promise { - this.stopQueryServer(); - await this.startQueryServer(); - - // Ensure we await all responses from event handlers so that - // errors can be properly reported to the user. - await Promise.all(this.queryServerStartListeners.map(handler => handler( - progress, - token - ))); - } - - showLog(): void { - this.logger.show(); - } - - /** Starts a new query server process, sending progress messages to the status bar. */ - async startQueryServer(): Promise { - // Use an arrow function to preserve the value of `this`. - return this.withProgressReporting((progress, _) => this.startQueryServerImpl(progress)); - } - - /** Starts a new query server process, sending progress messages to the given reporter. */ - private async startQueryServerImpl(progressReporter: ProgressReporter): Promise { - const ramArgs = await this.cliServer.resolveRam(this.config.queryMemoryMb, progressReporter); - const args = ['--threads', this.config.numThreads.toString()].concat(ramArgs); - - if (this.config.saveCache) { - args.push('--save-cache'); - } - - if (this.config.cacheSize > 0) { - args.push('--max-disk-cache'); - args.push(this.config.cacheSize.toString()); - } - - if (await this.cliServer.cliConstraints.supportsDatabaseRegistration()) { - args.push('--require-db-registration'); - } - - if (await this.cliServer.cliConstraints.supportsOldEvalStats() && !(await this.cliServer.cliConstraints.supportsPerQueryEvalLog())) { - args.push('--old-eval-stats'); - } - - if (await this.cliServer.cliConstraints.supportsStructuredEvalLog()) { - const structuredLogFile = `${this.opts.contextStoragePath}/structured-evaluator-log.json`; - await fs.ensureFile(structuredLogFile); - - args.push('--evaluator-log'); - args.push(structuredLogFile); - - // We hard-code the verbosity level to 5 and minify to false. - // This will be the behavior of the per-query structured logging in the CLI after 2.8.3. - args.push('--evaluator-log-level'); - args.push('5'); - } - - if (this.config.debug) { - args.push('--debug', '--tuple-counting'); - } - - if (cli.shouldDebugQueryServer()) { - args.push('-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9010,server=n,suspend=y,quiet=y'); - } - - const child = cli.spawnServer( - this.config.codeQlPath, - 'CodeQL query server', - ['execute', 'query-server'], - args, - this.logger, - data => this.logger.log(data.toString(), { - trailingNewline: false, - additionalLogLocation: this.activeQueryLogFile - }), - undefined, // no listener for stdout - progressReporter - ); - progressReporter.report({ message: 'Connecting to CodeQL query server' }); - const connection = createMessageConnection(child.stdout, child.stdin); - connection.onRequest(completeQuery, res => { - if (!(res.runId in this.evaluationResultCallbacks)) { - void this.logger.log(`No callback associated with run id ${res.runId}, continuing without executing any callback`); - } else { - this.evaluationResultCallbacks[res.runId](res); - } - return {}; - }); - connection.onNotification(progress, res => { - const callback = this.progressCallbacks[res.id]; - if (callback) { - callback(res); - } - }); - this.serverProcess = new ServerProcess(child, connection, this.logger); - // Ensure the server process is disposed together with this client. - this.track(this.serverProcess); - connection.listen(); - progressReporter.report({ message: 'Connected to CodeQL query server' }); - this.nextCallback = 0; - this.nextProgress = 0; - this.progressCallbacks = {}; - this.evaluationResultCallbacks = {}; - } - - registerCallback(callback: (res: EvaluationResult) => void): number { - const id = this.nextCallback++; - this.evaluationResultCallbacks[id] = callback; - return id; - } - - unRegisterCallback(id: number): void { - delete this.evaluationResultCallbacks[id]; - } - - get serverProcessPid(): number { - return this.serverProcess!.child.pid || 0; - } - - async sendRequest(type: RequestType, R, E, RO>, parameter: P, token?: CancellationToken, progress?: (res: ProgressMessage) => void): Promise { - const id = this.nextProgress++; - this.progressCallbacks[id] = progress; - - this.updateActiveQuery(type.method, parameter); - try { - if (this.serverProcess === undefined) { - throw new Error('No query server process found.'); - } - return await this.serverProcess.connection.sendRequest(type, { body: parameter, progressId: id }, token); - } finally { - delete this.progressCallbacks[id]; - } - } - - /** - * Updates the active query every time there is a new request to compile. - * The active query is used to specify the side log. - * - * This isn't ideal because in situations where there are queries running - * in parallel, each query's log messages are interleaved. Fixing this - * properly will require a change in the query server. - */ - private updateActiveQuery(method: string, parameter: any): void { - if (method === messages.compileQuery.method) { - this.activeQueryLogFile = findQueryLogFile(path.dirname(parameter.resultPath)); - } - } -} - -export function findQueryLogFile(resultPath: string): string { - return path.join(resultPath, 'query.log'); -} - -export function findQueryEvalLogFile(resultPath: string): string { - return path.join(resultPath, 'evaluator-log.jsonl'); -} - -export function findQueryEvalLogSummaryFile(resultPath: string): string { - return path.join(resultPath, 'evaluator-log.summary'); -} - -export function findJsonQueryEvalLogSummaryFile(resultPath: string): string { - return path.join(resultPath, 'evaluator-log.summary.jsonl'); -} - -export function findQueryEvalLogEndSummaryFile(resultPath: string): string { - return path.join(resultPath, 'evaluator-log-end.summary'); -} \ No newline at end of file diff --git a/extensions/ql-vscode/src/quick-query.ts b/extensions/ql-vscode/src/quick-query.ts deleted file mode 100644 index 8a30c7dd822..00000000000 --- a/extensions/ql-vscode/src/quick-query.ts +++ /dev/null @@ -1,156 +0,0 @@ -import * as fs from 'fs-extra'; -import * as yaml from 'js-yaml'; -import * as path from 'path'; -import { - CancellationToken, - ExtensionContext, - window as Window, - workspace, - Uri -} from 'vscode'; -import { ErrorCodes, ResponseError } from 'vscode-languageclient'; -import { CodeQLCliServer } from './cli'; -import { DatabaseUI } from './databases-ui'; -import { - getInitialQueryContents, - getPrimaryDbscheme, - getQlPackForDbscheme, - showBinaryChoiceDialog, -} from './helpers'; -import { - ProgressCallback, - UserCancellationException -} from './commandRunner'; -import { getErrorMessage } from './pure/helpers-pure'; - -const QUICK_QUERIES_DIR_NAME = 'quick-queries'; -const QUICK_QUERY_QUERY_NAME = 'quick-query.ql'; -const QUICK_QUERY_WORKSPACE_FOLDER_NAME = 'Quick Queries'; -const QLPACK_FILE_HEADER = '# This is an automatically generated file.\n\n'; - -export function isQuickQueryPath(queryPath: string): boolean { - return path.basename(queryPath) === QUICK_QUERY_QUERY_NAME; -} - -async function getQuickQueriesDir(ctx: ExtensionContext): Promise { - const storagePath = ctx.storagePath; - if (storagePath === undefined) { - throw new Error('Workspace storage path is undefined'); - } - const queriesPath = path.join(storagePath, QUICK_QUERIES_DIR_NAME); - await fs.ensureDir(queriesPath, { mode: 0o700 }); - return queriesPath; -} - -function updateQuickQueryDir(queriesDir: string, index: number, len: number) { - workspace.updateWorkspaceFolders( - index, - len, - { uri: Uri.file(queriesDir), name: QUICK_QUERY_WORKSPACE_FOLDER_NAME } - ); -} - -function findExistingQuickQueryEditor() { - return Window.visibleTextEditors.find(editor => - path.basename(editor.document.uri.fsPath) === QUICK_QUERY_QUERY_NAME - ); -} - -/** - * Show a buffer the user can enter a simple query into. - */ -export async function displayQuickQuery( - ctx: ExtensionContext, - cliServer: CodeQLCliServer, - databaseUI: DatabaseUI, - progress: ProgressCallback, - token: CancellationToken -) { - - try { - // If there is already a quick query open, don't clobber it, just - // show it. - const existing = findExistingQuickQueryEditor(); - if (existing) { - await Window.showTextDocument(existing.document); - return; - } - - const workspaceFolders = workspace.workspaceFolders || []; - const queriesDir = await getQuickQueriesDir(ctx); - - // We need to have a multi-root workspace to make quick query work - // at all. Changing the workspace from single-root to multi-root - // causes a restart of the whole extension host environment, so we - // basically can't do anything that survives that restart. - // - // So if we are currently in a single-root workspace (of which the - // only reliable signal appears to be `workspace.workspaceFile` - // being undefined) just let the user know that they're in for a - // restart. - if (workspace.workspaceFile === undefined) { - const makeMultiRoot = await showBinaryChoiceDialog('Quick query requires multiple folders in the workspace. Reload workspace as multi-folder workspace?'); - if (makeMultiRoot) { - updateQuickQueryDir(queriesDir, workspaceFolders.length, 0); - } - return; - } - - const index = workspaceFolders.findIndex(folder => folder.name === QUICK_QUERY_WORKSPACE_FOLDER_NAME); - if (index === -1) { - updateQuickQueryDir(queriesDir, workspaceFolders.length, 0); - } else { - updateQuickQueryDir(queriesDir, index, 1); - } - - // We're going to infer which qlpack to use from the current database - const dbItem = await databaseUI.getDatabaseItem(progress, token); - if (dbItem === undefined) { - throw new Error('Can\'t start quick query without a selected database'); - } - - const datasetFolder = await dbItem.getDatasetFolder(cliServer); - const dbscheme = await getPrimaryDbscheme(datasetFolder); - const qlpack = (await getQlPackForDbscheme(cliServer, dbscheme)).dbschemePack; - const qlPackFile = path.join(queriesDir, 'qlpack.yml'); - const qlFile = path.join(queriesDir, QUICK_QUERY_QUERY_NAME); - const shouldRewrite = await checkShouldRewrite(qlPackFile, qlpack); - - // Only rewrite the qlpack file if the database has changed - if (shouldRewrite) { - const quickQueryQlpackYaml: any = { - name: 'vscode/quick-query', - version: '1.0.0', - dependencies: { - [qlpack]: '*' - } - }; - await fs.writeFile(qlPackFile, QLPACK_FILE_HEADER + yaml.dump(quickQueryQlpackYaml), 'utf8'); - } - - if (shouldRewrite || !(await fs.pathExists(qlFile))) { - await fs.writeFile(qlFile, getInitialQueryContents(dbItem.language, dbscheme), 'utf8'); - } - - if (shouldRewrite) { - await cliServer.clearCache(); - await cliServer.packInstall(queriesDir, true); - } - - await Window.showTextDocument(await workspace.openTextDocument(qlFile)); - } catch (e) { - if (e instanceof ResponseError && e.code == ErrorCodes.RequestCancelled) { - throw new UserCancellationException(getErrorMessage(e)); - } else { - throw e; - } - } -} - -async function checkShouldRewrite(qlPackFile: string, newDependency: string) { - if (!(await fs.pathExists(qlPackFile))) { - return true; - } - const qlPackContents: any = yaml.load(await fs.readFile(qlPackFile, 'utf8')); - return !qlPackContents.dependencies?.[newDependency]; -} diff --git a/extensions/ql-vscode/src/quickEvalCodeLensProvider.ts b/extensions/ql-vscode/src/quickEvalCodeLensProvider.ts deleted file mode 100644 index dd25ce1fa6b..00000000000 --- a/extensions/ql-vscode/src/quickEvalCodeLensProvider.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - CodeLensProvider, - TextDocument, - CodeLens, - Command, - Range -} from 'vscode'; -import { isQuickEvalCodelensEnabled } from './config'; - -class QuickEvalCodeLensProvider implements CodeLensProvider { - async provideCodeLenses(document: TextDocument): Promise { - - const codeLenses: CodeLens[] = []; - - if (isQuickEvalCodelensEnabled()) { - for (let index = 0; index < document.lineCount; index++) { - const textLine = document.lineAt(index); - - // Match a predicate signature, including predicate name, parameter list, and opening brace. - // This currently does not match predicates that span multiple lines. - const regex = new RegExp(/(\w+)\s*\([^()]*\)\s*\{/); - - const matches = textLine.text.match(regex); - - // Make sure that a code lens is not generated for any predicate that is commented out. - if (matches && !(/^\s*\/\//).test(textLine.text)) { - const range: Range = new Range( - textLine.range.start.line, matches.index!, - textLine.range.end.line, matches.index! + 1 - ); - - const command: Command = { - command: 'codeQL.codeLensQuickEval', - title: `Quick Evaluation: ${matches[1]}`, - arguments: [document.uri, range] - }; - const codeLens = new CodeLens(range, command); - codeLenses.push(codeLens); - } - } - } - return codeLenses; - } -} - -export default QuickEvalCodeLensProvider; diff --git a/extensions/ql-vscode/src/remote-queries/analyses-results-manager.ts b/extensions/ql-vscode/src/remote-queries/analyses-results-manager.ts deleted file mode 100644 index b3a90a30f2d..00000000000 --- a/extensions/ql-vscode/src/remote-queries/analyses-results-manager.ts +++ /dev/null @@ -1,205 +0,0 @@ -import * as fs from 'fs-extra'; -import * as os from 'os'; -import * as path from 'path'; -import { CancellationToken, ExtensionContext } from 'vscode'; - -import { Credentials } from '../authentication'; -import { Logger } from '../logging'; -import { downloadArtifactFromLink } from './gh-actions-api-client'; -import { AnalysisSummary } from './shared/remote-query-result'; -import { AnalysisResults, AnalysisAlert, AnalysisRawResults } from './shared/analysis-result'; -import { UserCancellationException } from '../commandRunner'; -import { sarifParser } from '../sarif-parser'; -import { extractAnalysisAlerts } from './sarif-processing'; -import { CodeQLCliServer } from '../cli'; -import { extractRawResults } from './bqrs-processing'; -import { asyncFilter, getErrorMessage } from '../pure/helpers-pure'; -import { createDownloadPath } from './download-link'; - -export class AnalysesResultsManager { - // Store for the results of various analyses for each remote query. - // The key is the queryId and is also the name of the directory where results are stored. - private readonly analysesResults: Map; - - constructor( - private readonly ctx: ExtensionContext, - private readonly cliServer: CodeQLCliServer, - readonly storagePath: string, - private readonly logger: Logger, - ) { - this.analysesResults = new Map(); - } - - public async downloadAnalysisResults( - analysisSummary: AnalysisSummary, - publishResults: (analysesResults: AnalysisResults[]) => Promise - ): Promise { - if (this.isAnalysisInMemory(analysisSummary)) { - // We already have the results for this analysis in memory, don't download again. - return; - } - - const credentials = await Credentials.initialize(this.ctx); - - void this.logger.log(`Downloading and processing results for ${analysisSummary.nwo}`); - - await this.downloadSingleAnalysisResults(analysisSummary, credentials, publishResults); - } - - /** - * Loads the array analysis results. For each analysis results, if it is not downloaded yet, - * it will be downloaded. If it is already downloaded, it will be loaded into memory. - * If it is already in memory, this will be a no-op. - * - * @param allAnalysesToLoad List of analyses to ensure are downloaded and in memory - * @param token Optional cancellation token - * @param publishResults Optional function to publish the results after loading - */ - public async loadAnalysesResults( - allAnalysesToLoad: AnalysisSummary[], - token?: CancellationToken, - publishResults: (analysesResults: AnalysisResults[]) => Promise = () => Promise.resolve() - ): Promise { - // Filter out analyses that we have already in memory. - const analysesToDownload = allAnalysesToLoad.filter(x => !this.isAnalysisInMemory(x)); - - const credentials = await Credentials.initialize(this.ctx); - - void this.logger.log('Downloading and processing analyses results'); - - const batchSize = 3; - const numOfBatches = Math.ceil(analysesToDownload.length / batchSize); - const allFailures = []; - - for (let i = 0; i < analysesToDownload.length; i += batchSize) { - if (token?.isCancellationRequested) { - throw new UserCancellationException('Downloading of analyses results has been cancelled', true); - } - - const batch = analysesToDownload.slice(i, i + batchSize); - const batchTasks = batch.map(analysis => this.downloadSingleAnalysisResults(analysis, credentials, publishResults)); - - const nwos = batch.map(a => a.nwo).join(', '); - void this.logger.log(`Downloading batch ${Math.floor(i / batchSize) + 1} of ${numOfBatches} (${nwos})`); - - const taskResults = await Promise.allSettled(batchTasks); - const failedTasks = taskResults.filter(x => x.status === 'rejected') as Array; - if (failedTasks.length > 0) { - const failures = failedTasks.map(t => t.reason.message); - failures.forEach(f => void this.logger.log(f)); - allFailures.push(...failures); - } - } - - if (allFailures.length > 0) { - throw Error(allFailures.join(os.EOL)); - } - } - - public getAnalysesResults(queryId: string): AnalysisResults[] { - return [...this.internalGetAnalysesResults(queryId)]; - } - - private internalGetAnalysesResults(queryId: string): AnalysisResults[] { - return this.analysesResults.get(queryId) || []; - } - - public removeAnalysesResults(queryId: string) { - this.analysesResults.delete(queryId); - } - - private async downloadSingleAnalysisResults( - analysis: AnalysisSummary, - credentials: Credentials, - publishResults: (analysesResults: AnalysisResults[]) => Promise - ): Promise { - const analysisResults: AnalysisResults = { - nwo: analysis.nwo, - status: 'InProgress', - interpretedResults: [], - resultCount: analysis.resultCount, - starCount: analysis.starCount, - lastUpdated: analysis.lastUpdated, - }; - const queryId = analysis.downloadLink.queryId; - const resultsForQuery = this.internalGetAnalysesResults(queryId); - resultsForQuery.push(analysisResults); - this.analysesResults.set(queryId, resultsForQuery); - void publishResults([...resultsForQuery]); - const pos = resultsForQuery.length - 1; - - let artifactPath; - try { - artifactPath = await downloadArtifactFromLink(credentials, this.storagePath, analysis.downloadLink); - } - catch (e) { - throw new Error(`Could not download the analysis results for ${analysis.nwo}: ${getErrorMessage(e)}`); - } - - const fileLinkPrefix = this.createGitHubDotcomFileLinkPrefix(analysis.nwo, analysis.databaseSha); - - let newAnaysisResults: AnalysisResults; - const fileExtension = path.extname(artifactPath); - if (fileExtension === '.sarif') { - const queryResults = await this.readSarifResults(artifactPath, fileLinkPrefix); - newAnaysisResults = { - ...analysisResults, - interpretedResults: queryResults, - status: 'Completed' - }; - } else if (fileExtension === '.bqrs') { - const queryResults = await this.readBqrsResults(artifactPath, fileLinkPrefix, analysis.sourceLocationPrefix); - newAnaysisResults = { - ...analysisResults, - rawResults: queryResults, - status: 'Completed' - }; - } else { - void this.logger.log(`Cannot download results. File type '${fileExtension}' not supported.`); - newAnaysisResults = { - ...analysisResults, - status: 'Failed' - }; - } - resultsForQuery[pos] = newAnaysisResults; - void publishResults([...resultsForQuery]); - } - - - public async loadDownloadedAnalyses( - allAnalysesToCheck: AnalysisSummary[] - ) { - - // Find all analyses that are already downloaded. - const allDownloadedAnalyses = await asyncFilter(allAnalysesToCheck, x => this.isAnalysisDownloaded(x)); - // Now, ensure that all of these analyses are in memory. Some may already be in memory. These are ignored. - await this.loadAnalysesResults(allDownloadedAnalyses); - } - - private async isAnalysisDownloaded(analysis: AnalysisSummary): Promise { - return await fs.pathExists(createDownloadPath(this.storagePath, analysis.downloadLink)); - } - - private async readBqrsResults(filePath: string, fileLinkPrefix: string, sourceLocationPrefix: string): Promise { - return await extractRawResults(this.cliServer, this.logger, filePath, fileLinkPrefix, sourceLocationPrefix); - } - - private async readSarifResults(filePath: string, fileLinkPrefix: string): Promise { - const sarifLog = await sarifParser(filePath); - - const processedSarif = extractAnalysisAlerts(sarifLog, fileLinkPrefix); - if (processedSarif.errors.length) { - void this.logger.log(`Error processing SARIF file: ${os.EOL}${processedSarif.errors.join(os.EOL)}`); - } - - return processedSarif.alerts; - } - - private isAnalysisInMemory(analysis: AnalysisSummary): boolean { - return this.internalGetAnalysesResults(analysis.downloadLink.queryId).some(x => x.nwo === analysis.nwo); - } - - private createGitHubDotcomFileLinkPrefix(nwo: string, sha: string): string { - return `https://github.com/${nwo}/blob/${sha}`; - } -} diff --git a/extensions/ql-vscode/src/remote-queries/bqrs-processing.ts b/extensions/ql-vscode/src/remote-queries/bqrs-processing.ts deleted file mode 100644 index 5f70a8f313d..00000000000 --- a/extensions/ql-vscode/src/remote-queries/bqrs-processing.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { CodeQLCliServer } from '../cli'; -import { Logger } from '../logging'; -import { transformBqrsResultSet } from '../pure/bqrs-cli-types'; -import { AnalysisRawResults } from './shared/analysis-result'; -import { MAX_RAW_RESULTS } from './shared/result-limits'; - -export async function extractRawResults( - cliServer: CodeQLCliServer, - logger: Logger, - filePath: string, - fileLinkPrefix: string, - sourceLocationPrefix: string -): Promise { - const bqrsInfo = await cliServer.bqrsInfo(filePath); - const resultSets = bqrsInfo['result-sets']; - - if (resultSets.length < 1) { - throw new Error('No result sets found in results file.'); - } - if (resultSets.length > 1) { - void logger.log('Multiple result sets found in results file. Only the first one will be used.'); - } - - const schema = resultSets[0]; - - const chunk = await cliServer.bqrsDecode( - filePath, - schema.name, - { pageSize: MAX_RAW_RESULTS }); - - const resultSet = transformBqrsResultSet(schema, chunk); - - const capped = !!chunk.next; - - return { schema, resultSet, fileLinkPrefix, sourceLocationPrefix, capped }; -} diff --git a/extensions/ql-vscode/src/remote-queries/download-link.ts b/extensions/ql-vscode/src/remote-queries/download-link.ts deleted file mode 100644 index dffef7b2bd5..00000000000 --- a/extensions/ql-vscode/src/remote-queries/download-link.ts +++ /dev/null @@ -1,40 +0,0 @@ -import * as path from 'path'; - -/** - * Represents a link to an artifact to be downloaded. - */ -export interface DownloadLink { - /** - * A unique id of the artifact being downloaded. - */ - id: string; - - /** - * The URL path to use against the GitHub API to download the - * linked artifact. - */ - urlPath: string; - - /** - * An optional path to follow inside the downloaded archive containing the artifact. - */ - innerFilePath?: string; - - /** - * A unique id of the remote query run. This is used to determine where to store artifacts and data from the run. - */ - queryId: string; -} - -/** - * Converts a downloadLink to the path where the artifact should be stored. - * - * @param storagePath The base directory to store artifacts in. - * @param downloadLink The DownloadLink - * @param extension An optional file extension to append to the artifact (no `.`). - * - * @returns A full path to the download location of the artifact - */ -export function createDownloadPath(storagePath: string, downloadLink: DownloadLink, extension = '') { - return path.join(storagePath, downloadLink.queryId, downloadLink.id + (extension ? `.${extension}` : '')); -} diff --git a/extensions/ql-vscode/src/remote-queries/export-results.ts b/extensions/ql-vscode/src/remote-queries/export-results.ts deleted file mode 100644 index ad3efeeec9d..00000000000 --- a/extensions/ql-vscode/src/remote-queries/export-results.ts +++ /dev/null @@ -1,143 +0,0 @@ -import * as path from 'path'; -import * as fs from 'fs-extra'; - -import { window, commands, Uri, ExtensionContext, QuickPickItem, workspace, ViewColumn } from 'vscode'; -import { Credentials } from '../authentication'; -import { UserCancellationException } from '../commandRunner'; -import { - showInformationMessageWithAction, - pluralize -} from '../helpers'; -import { logger } from '../logging'; -import { QueryHistoryManager } from '../query-history'; -import { createGist } from './gh-actions-api-client'; -import { RemoteQueriesManager } from './remote-queries-manager'; -import { generateMarkdown } from './remote-queries-markdown-generation'; -import { RemoteQuery } from './remote-query'; -import { AnalysisResults, sumAnalysesResults } from './shared/analysis-result'; - -/** - * Exports the results of the currently-selected remote query. - * The user is prompted to select the export format. - */ -export async function exportRemoteQueryResults( - queryHistoryManager: QueryHistoryManager, - remoteQueriesManager: RemoteQueriesManager, - ctx: ExtensionContext, -): Promise { - const queryHistoryItem = queryHistoryManager.getCurrentQueryHistoryItem(); - if (!queryHistoryItem || queryHistoryItem.t !== 'remote') { - throw new Error('No variant analysis results currently open. To open results, click an item in the query history view.'); - } else if (!queryHistoryItem.completed) { - throw new Error('Variant analysis results are not yet available.'); - } - const queryId = queryHistoryItem.queryId; - void logger.log(`Exporting variant analysis results for query: ${queryId}`); - const query = queryHistoryItem.remoteQuery; - const analysesResults = remoteQueriesManager.getAnalysesResults(queryId); - - const gistOption = { - label: '$(ports-open-browser-icon) Create Gist (GitHub)', - }; - const localMarkdownOption = { - label: '$(markdown) Save as markdown', - }; - const exportFormat = await determineExportFormat(gistOption, localMarkdownOption); - - if (exportFormat === gistOption) { - await exportResultsToGist(ctx, query, analysesResults); - } else if (exportFormat === localMarkdownOption) { - const queryDirectoryPath = await queryHistoryManager.getQueryHistoryItemDirectory( - queryHistoryItem - ); - await exportResultsToLocalMarkdown(queryDirectoryPath, query, analysesResults); - } -} - -/** - * Determines the format in which to export the results, from the given export options. - */ -async function determineExportFormat( - ...options: { label: string }[] -): Promise { - const exportFormat = await window.showQuickPick( - options, - { - placeHolder: 'Select export format', - canPickMany: false, - ignoreFocusOut: true, - } - ); - if (!exportFormat || !exportFormat.label) { - throw new UserCancellationException('No export format selected', true); - } - return exportFormat; -} - -/** - * Converts the results of a remote query to markdown and uploads the files as a secret gist. - */ -export async function exportResultsToGist( - ctx: ExtensionContext, - query: RemoteQuery, - analysesResults: AnalysisResults[] -): Promise { - const credentials = await Credentials.initialize(ctx); - const description = buildGistDescription(query, analysesResults); - const markdownFiles = generateMarkdown(query, analysesResults, 'gist'); - // Convert markdownFiles to the appropriate format for uploading to gist - const gistFiles = markdownFiles.reduce((acc, cur) => { - acc[`${cur.fileName}.md`] = { content: cur.content.join('\n') }; - return acc; - }, {} as { [key: string]: { content: string } }); - - const gistUrl = await createGist(credentials, description, gistFiles); - if (gistUrl) { - const shouldOpenGist = await showInformationMessageWithAction( - 'Variant analysis results exported to gist.', - 'Open gist' - ); - if (shouldOpenGist) { - await commands.executeCommand('vscode.open', Uri.parse(gistUrl)); - } - } -} - -/** - * Builds Gist description - * Ex: Empty Block (Go) x results (y repositories) - */ -const buildGistDescription = (query: RemoteQuery, analysesResults: AnalysisResults[]) => { - const resultCount = sumAnalysesResults(analysesResults); - const resultLabel = pluralize(resultCount, 'result', 'results'); - const repositoryLabel = query.repositoryCount ? `(${pluralize(query.repositoryCount, 'repository', 'repositories')})` : ''; - return `${query.queryName} (${query.language}) ${resultLabel} ${repositoryLabel}`; -}; - -/** - * Converts the results of a remote query to markdown and saves the files locally - * in the query directory (where query results and metadata are also saved). - */ -async function exportResultsToLocalMarkdown( - queryDirectoryPath: string, - query: RemoteQuery, - analysesResults: AnalysisResults[] -) { - const markdownFiles = generateMarkdown(query, analysesResults, 'local'); - const exportedResultsPath = path.join(queryDirectoryPath, 'exported-results'); - await fs.ensureDir(exportedResultsPath); - for (const markdownFile of markdownFiles) { - const filePath = path.join(exportedResultsPath, `${markdownFile.fileName}.md`); - await fs.writeFile(filePath, markdownFile.content.join('\n'), 'utf8'); - } - const shouldOpenExportedResults = await showInformationMessageWithAction( - `Variant analysis results exported to \"${exportedResultsPath}\".`, - 'Open exported results' - ); - if (shouldOpenExportedResults) { - const summaryFilePath = path.join(exportedResultsPath, '_summary.md'); - const summaryFile = await workspace.openTextDocument(summaryFilePath); - await window.showTextDocument(summaryFile, ViewColumn.One); - await commands.executeCommand('revealFileInOS', Uri.file(summaryFilePath)); - } -} diff --git a/extensions/ql-vscode/src/remote-queries/gh-actions-api-client.ts b/extensions/ql-vscode/src/remote-queries/gh-actions-api-client.ts deleted file mode 100644 index a0fbfafbf50..00000000000 --- a/extensions/ql-vscode/src/remote-queries/gh-actions-api-client.ts +++ /dev/null @@ -1,413 +0,0 @@ -import * as unzipper from 'unzipper'; -import * as path from 'path'; -import * as fs from 'fs-extra'; -import { showAndLogErrorMessage, showAndLogWarningMessage, tmpDir } from '../helpers'; -import { Credentials } from '../authentication'; -import { logger } from '../logging'; -import { RemoteQueryWorkflowResult } from './remote-query-workflow-result'; -import { DownloadLink, createDownloadPath } from './download-link'; -import { RemoteQuery } from './remote-query'; -import { RemoteQueryFailureIndexItem, RemoteQueryResultIndex, RemoteQuerySuccessIndexItem } from './remote-query-result-index'; -import { getErrorMessage } from '../pure/helpers-pure'; - -interface ApiSuccessIndexItem { - nwo: string; - id: string; - sha?: string; - results_count: number; - bqrs_file_size: number; - sarif_file_size?: number; - source_location_prefix: string; -} - -interface ApiFailureIndexItem { - nwo: string; - id: string; - error: string; -} - -interface ApiResultIndex { - successes: ApiSuccessIndexItem[]; - failures: ApiFailureIndexItem[]; -} - -export async function getRemoteQueryIndex( - credentials: Credentials, - remoteQuery: RemoteQuery -): Promise { - const controllerRepo = remoteQuery.controllerRepository; - const owner = controllerRepo.owner; - const repoName = controllerRepo.name; - const workflowRunId = remoteQuery.actionsWorkflowRunId; - - const workflowUri = `https://github.com/${owner}/${repoName}/actions/runs/${workflowRunId}`; - const artifactsUrlPath = `/repos/${owner}/${repoName}/actions/artifacts`; - - const artifactList = await listWorkflowRunArtifacts(credentials, owner, repoName, workflowRunId); - const resultIndexArtifactId = tryGetArtifactIDfromName('result-index', artifactList); - if (!resultIndexArtifactId) { - return undefined; - } - const resultIndex = await getResultIndex(credentials, owner, repoName, resultIndexArtifactId); - - const successes = resultIndex?.successes.map(item => { - const artifactId = getArtifactIDfromName(item.id, workflowUri, artifactList); - - return { - id: item.id.toString(), - artifactId: artifactId, - nwo: item.nwo, - sha: item.sha, - resultCount: item.results_count, - bqrsFileSize: item.bqrs_file_size, - sarifFileSize: item.sarif_file_size, - sourceLocationPrefix: item.source_location_prefix - } as RemoteQuerySuccessIndexItem; - }); - - const failures = resultIndex?.failures.map(item => { - return { - id: item.id.toString(), - nwo: item.nwo, - error: item.error - } as RemoteQueryFailureIndexItem; - }); - - return { - artifactsUrlPath, - successes: successes || [], - failures: failures || [] - }; -} - -export async function cancelRemoteQuery( - credentials: Credentials, - remoteQuery: RemoteQuery -): Promise { - const octokit = await credentials.getOctokit(); - const { actionsWorkflowRunId, controllerRepository: { owner, name } } = remoteQuery; - const response = await octokit.request(`POST /repos/${owner}/${name}/actions/runs/${actionsWorkflowRunId}/cancel`); - if (response.status >= 300) { - throw new Error(`Error cancelling variant analysis: ${response.status} ${response?.data?.message || ''}`); - } -} - -export async function downloadArtifactFromLink( - credentials: Credentials, - storagePath: string, - downloadLink: DownloadLink -): Promise { - - const octokit = await credentials.getOctokit(); - - const extractedPath = createDownloadPath(storagePath, downloadLink); - - // first check if we already have the artifact - if (!(await fs.pathExists(extractedPath))) { - // Download the zipped artifact. - const response = await octokit.request(`GET ${downloadLink.urlPath}/zip`, {}); - - const zipFilePath = createDownloadPath(storagePath, downloadLink, 'zip'); - await saveFile(`${zipFilePath}`, response.data as ArrayBuffer); - - // Extract the zipped artifact. - await unzipFile(zipFilePath, extractedPath); - } - return path.join(extractedPath, downloadLink.innerFilePath || ''); -} - -/** - * Downloads the result index artifact and extracts the result index items. - * @param credentials Credentials for authenticating to the GitHub API. - * @param owner - * @param repo - * @param workflowRunId The ID of the workflow run to get the result index for. - * @returns An object containing the result index. - */ -async function getResultIndex( - credentials: Credentials, - owner: string, - repo: string, - artifactId: number -): Promise { - const artifactPath = await downloadArtifact(credentials, owner, repo, artifactId); - const indexFilePath = path.join(artifactPath, 'index.json'); - if (!(await fs.pathExists(indexFilePath))) { - void showAndLogWarningMessage('Could not find an `index.json` file in the result artifact.'); - return undefined; - } - const resultIndex = await fs.readFile(path.join(artifactPath, 'index.json'), 'utf8'); - - try { - return JSON.parse(resultIndex); - } catch (error) { - throw new Error(`Invalid result index file: ${error}`); - } -} - -/** - * Gets the status of a workflow run. - * @param credentials Credentials for authenticating to the GitHub API. - * @param owner - * @param repo - * @param workflowRunId The ID of the workflow run to get the result index for. - * @returns The workflow run status. - */ -export async function getWorkflowStatus( - credentials: Credentials, - owner: string, - repo: string, - workflowRunId: number): Promise { - const octokit = await credentials.getOctokit(); - - const workflowRun = await octokit.rest.actions.getWorkflowRun({ - owner, - repo, - run_id: workflowRunId - }); - - if (workflowRun.data.status === 'completed') { - if (workflowRun.data.conclusion === 'success') { - return { status: 'CompletedSuccessfully' }; - } else { - const error = getWorkflowError(workflowRun.data.conclusion); - return { status: 'CompletedUnsuccessfully', error }; - } - } - - return { status: 'InProgress' }; -} - -/** - * Lists the workflow run artifacts for the given workflow run ID. - * @param credentials Credentials for authenticating to the GitHub API. - * @param owner - * @param repo - * @param workflowRunId The ID of the workflow run to list artifacts for. - * @returns An array of artifact details (including artifact name and ID). - */ -async function listWorkflowRunArtifacts( - credentials: Credentials, - owner: string, - repo: string, - workflowRunId: number -) { - const octokit = await credentials.getOctokit(); - - // There are limits on the number of artifacts that are returned by the API - // so we use paging to make sure we retrieve all of them. - let morePages = true; - let pageNum = 1; - const allArtifacts = []; - - while (morePages) { - const response = await octokit.rest.actions.listWorkflowRunArtifacts({ - owner, - repo, - run_id: workflowRunId, - per_page: 100, - page: pageNum - }); - - allArtifacts.push(...response.data.artifacts); - pageNum++; - if (response.data.artifacts.length < 100) { - morePages = false; - } - } - - return allArtifacts; -} - -/** - * @param artifactName The artifact name, as a string. - * @param artifacts An array of artifact details (from the "list workflow run artifacts" API response). - * @returns The artifact ID corresponding to the given artifact name. - */ -function getArtifactIDfromName( - artifactName: string, - workflowUri: string, - artifacts: Array<{ id: number, name: string }> -): number { - const artifactId = tryGetArtifactIDfromName(artifactName, artifacts); - - if (!artifactId) { - const errorMessage = - `Could not find artifact with name ${artifactName} in workflow ${workflowUri}. - Please check whether the workflow run has successfully completed.`; - throw Error(errorMessage); - } - - return artifactId; -} - -/** - * @param artifactName The artifact name, as a string. - * @param artifacts An array of artifact details (from the "list workflow run artifacts" API response). - * @returns The artifact ID corresponding to the given artifact name, if it exists. - */ -function tryGetArtifactIDfromName( - artifactName: string, - artifacts: Array<{ id: number, name: string }> -): number | undefined { - const artifact = artifacts.find(a => a.name === artifactName); - - return artifact?.id; -} - -/** - * Downloads an artifact from a workflow run. - * @param credentials Credentials for authenticating to the GitHub API. - * @param owner - * @param repo - * @param artifactId The ID of the artifact to download. - * @returns The path to the enclosing directory of the unzipped artifact. - */ -async function downloadArtifact( - credentials: Credentials, - owner: string, - repo: string, - artifactId: number -): Promise { - const octokit = await credentials.getOctokit(); - const response = await octokit.rest.actions.downloadArtifact({ - owner, - repo, - artifact_id: artifactId, - archive_format: 'zip', - }); - const artifactPath = path.join(tmpDir.name, `${artifactId}`); - await saveFile(`${artifactPath}.zip`, response.data as ArrayBuffer); - await unzipFile(`${artifactPath}.zip`, artifactPath); - return artifactPath; -} - -async function saveFile(filePath: string, data: ArrayBuffer): Promise { - void logger.log(`Saving file to ${filePath}`); - await fs.writeFile(filePath, Buffer.from(data)); -} - -async function unzipFile(sourcePath: string, destinationPath: string) { - void logger.log(`Unzipping file to ${destinationPath}`); - const file = await unzipper.Open.file(sourcePath); - await file.extract({ path: destinationPath }); -} - -function getWorkflowError(conclusion: string | null): string { - if (!conclusion) { - return 'Workflow finished without a conclusion'; - } - - if (conclusion === 'cancelled') { - return 'Variant analysis execution was cancelled.'; - } - - if (conclusion === 'timed_out') { - return 'Variant analysis execution timed out.'; - } - - if (conclusion === 'failure') { - // TODO: Get the actual error from the workflow or potentially - // from an artifact from the action itself. - return 'Variant analysis execution has failed.'; - } - - return `Unexpected variant analysis execution conclusion: ${conclusion}`; -} - -/** - * Creates a gist with the given description and files. - * Returns the URL of the created gist. - */ -export async function createGist( - credentials: Credentials, - description: string, - files: { [key: string]: { content: string } } -): Promise { - const octokit = await credentials.getOctokit(); - const response = await octokit.request('POST /gists', { - description, - files, - public: false, - }); - if (response.status >= 300) { - throw new Error(`Error exporting variant analysis results: ${response.status} ${response?.data || ''}`); - } - return response.data.html_url; -} - -const repositoriesMetadataQuery = `query Stars($repos: String!, $pageSize: Int!, $cursor: String) { - search( - query: $repos - type: REPOSITORY - first: $pageSize - after: $cursor - ) { - edges { - node { - ... on Repository { - name - owner { - login - } - stargazerCount - updatedAt - } - } - cursor - } - } -}`; - -type RepositoriesMetadataQueryResponse = { - search: { - edges: { - cursor: string; - node: { - name: string; - owner: { - login: string; - }; - stargazerCount: number; - updatedAt: string; // Actually a ISO Date string - } - }[] - } -}; - -export type RepositoriesMetadata = Record - -export async function getRepositoriesMetadata(credentials: Credentials, nwos: string[], pageSize = 100): Promise { - const octokit = await credentials.getOctokit(); - const repos = `repo:${nwos.join(' repo:')} fork:true`; - let cursor = null; - const metadata: RepositoriesMetadata = {}; - try { - do { - const response: RepositoriesMetadataQueryResponse = await octokit.graphql({ - query: repositoriesMetadataQuery, - repos, - pageSize, - cursor - }); - cursor = response.search.edges.length === pageSize ? response.search.edges[pageSize - 1].cursor : null; - - for (const edge of response.search.edges) { - const node = edge.node; - const owner = node.owner.login; - const name = node.name; - const starCount = node.stargazerCount; - // lastUpdated is always negative since it happened in the past. - const lastUpdated = new Date(node.updatedAt).getTime() - Date.now(); - metadata[`${owner}/${name}`] = { - starCount, lastUpdated - }; - } - - } while (cursor); - } catch (e) { - void showAndLogErrorMessage(`Error retrieving repository metadata for variant analysis: ${getErrorMessage(e)}`); - } - - return metadata; -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-queries-interface.ts b/extensions/ql-vscode/src/remote-queries/remote-queries-interface.ts deleted file mode 100644 index efe1613f9a6..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-queries-interface.ts +++ /dev/null @@ -1,317 +0,0 @@ -import { - WebviewPanel, - ExtensionContext, - window as Window, - ViewColumn, - Uri, - workspace, - commands -} from 'vscode'; -import * as path from 'path'; - -import { - ToRemoteQueriesMessage, - FromRemoteQueriesMessage, - RemoteQueryDownloadAnalysisResultsMessage, - RemoteQueryDownloadAllAnalysesResultsMessage -} from '../pure/interface-types'; -import { Logger } from '../logging'; -import { getHtmlForWebview } from '../interface-utils'; -import { assertNever } from '../pure/helpers-pure'; -import { - AnalysisSummary, - RemoteQueryResult, - sumAnalysisSummariesResults -} from './remote-query-result'; -import { RemoteQuery } from './remote-query'; -import { - AnalysisSummary as AnalysisResultViewModel, - RemoteQueryResult as RemoteQueryResultViewModel -} from './shared/remote-query-result'; -import { showAndLogWarningMessage } from '../helpers'; -import { URLSearchParams } from 'url'; -import { SHOW_QUERY_TEXT_MSG } from '../query-history'; -import { AnalysesResultsManager } from './analyses-results-manager'; -import { AnalysisResults } from './shared/analysis-result'; -import { humanizeUnit } from '../pure/time'; - -export class RemoteQueriesInterfaceManager { - private panel: WebviewPanel | undefined; - private panelLoaded = false; - private currentQueryId: string | undefined; - private panelLoadedCallBacks: (() => void)[] = []; - - constructor( - private readonly ctx: ExtensionContext, - private readonly logger: Logger, - private readonly analysesResultsManager: AnalysesResultsManager - ) { - this.panelLoadedCallBacks.push(() => { - void logger.log('Variant analysis results view loaded'); - }); - } - - async showResults(query: RemoteQuery, queryResult: RemoteQueryResult) { - this.getPanel().reveal(undefined, true); - - await this.waitForPanelLoaded(); - const model = this.buildViewModel(query, queryResult); - this.currentQueryId = queryResult.queryId; - - await this.postMessage({ - t: 'setRemoteQueryResult', - queryResult: model - }); - - // Ensure all pre-downloaded artifacts are loaded into memory - await this.analysesResultsManager.loadDownloadedAnalyses(model.analysisSummaries); - - await this.setAnalysisResults(this.analysesResultsManager.getAnalysesResults(queryResult.queryId), queryResult.queryId); - } - - /** - * Builds up a model tailored to the view based on the query and result domain entities. - * The data is cleaned up, sorted where necessary, and transformed to a format that - * the view model can use. - * @param query Information about the query that was run. - * @param queryResult The result of the query. - * @returns A fully created view model. - */ - private buildViewModel(query: RemoteQuery, queryResult: RemoteQueryResult): RemoteQueryResultViewModel { - const queryFileName = path.basename(query.queryFilePath); - const totalResultCount = sumAnalysisSummariesResults(queryResult.analysisSummaries); - const executionDuration = this.getDuration(queryResult.executionEndTime, query.executionStartTime); - const analysisSummaries = this.buildAnalysisSummaries(queryResult.analysisSummaries); - const totalRepositoryCount = queryResult.analysisSummaries.length; - const affectedRepositories = queryResult.analysisSummaries.filter(r => r.resultCount > 0); - - return { - queryId: queryResult.queryId, - queryTitle: query.queryName, - queryFileName: queryFileName, - queryFilePath: query.queryFilePath, - queryText: query.queryText, - language: query.language, - workflowRunUrl: `https://github.com/${query.controllerRepository.owner}/${query.controllerRepository.name}/actions/runs/${query.actionsWorkflowRunId}`, - totalRepositoryCount: totalRepositoryCount, - affectedRepositoryCount: affectedRepositories.length, - totalResultCount: totalResultCount, - executionTimestamp: this.formatDate(query.executionStartTime), - executionDuration: executionDuration, - analysisSummaries: analysisSummaries, - analysisFailures: queryResult.analysisFailures, - }; - } - - getPanel(): WebviewPanel { - if (this.panel == undefined) { - const { ctx } = this; - const panel = (this.panel = Window.createWebviewPanel( - 'remoteQueriesView', - 'CodeQL Query Results', - { viewColumn: ViewColumn.Active, preserveFocus: true }, - { - enableScripts: true, - enableFindWidget: true, - retainContextWhenHidden: true, - localResourceRoots: [ - Uri.file(this.analysesResultsManager.storagePath), - Uri.file(path.join(this.ctx.extensionPath, 'out')), - Uri.file(path.join(this.ctx.extensionPath, 'node_modules/@vscode/codicons/dist')), - ], - } - )); - this.panel.onDidDispose( - () => { - this.panel = undefined; - this.currentQueryId = undefined; - }, - null, - ctx.subscriptions - ); - - const scriptPathOnDisk = Uri.file( - ctx.asAbsolutePath('out/remoteQueriesView.js') - ); - - const baseStylesheetUriOnDisk = Uri.file( - ctx.asAbsolutePath('out/remote-queries/view/baseStyles.css') - ); - - const stylesheetPathOnDisk = Uri.file( - ctx.asAbsolutePath('out/remote-queries/view/remoteQueries.css') - ); - - // Allows use of the VS Code "codicons" icon set. - // See https://github.com/microsoft/vscode-codicons - const codiconsPathOnDisk = Uri.file( - ctx.asAbsolutePath('node_modules/@vscode/codicons/dist/codicon.css') - ); - - panel.webview.html = getHtmlForWebview( - panel.webview, - scriptPathOnDisk, - [baseStylesheetUriOnDisk, stylesheetPathOnDisk, codiconsPathOnDisk], - true - ); - ctx.subscriptions.push( - panel.webview.onDidReceiveMessage( - async (e) => this.handleMsgFromView(e), - undefined, - ctx.subscriptions - ) - ); - } - return this.panel; - } - - private waitForPanelLoaded(): Promise { - return new Promise((resolve) => { - if (this.panelLoaded) { - resolve(); - } else { - this.panelLoadedCallBacks.push(resolve); - } - }); - } - - private async openFile(filePath: string) { - try { - const textDocument = await workspace.openTextDocument(filePath); - await Window.showTextDocument(textDocument, ViewColumn.One); - } catch (error) { - void showAndLogWarningMessage(`Could not open file: ${filePath}`); - } - } - - private async openVirtualFile(text: string) { - try { - const params = new URLSearchParams({ - queryText: encodeURIComponent(SHOW_QUERY_TEXT_MSG + text) - }); - const uri = Uri.parse( - `remote-query:query-text.ql?${params.toString()}`, - true - ); - const doc = await workspace.openTextDocument(uri); - await Window.showTextDocument(doc, { preview: false }); - } catch (error) { - void showAndLogWarningMessage('Could not open query text'); - } - } - - private async handleMsgFromView( - msg: FromRemoteQueriesMessage - ): Promise { - switch (msg.t) { - case 'remoteQueryLoaded': - this.panelLoaded = true; - this.panelLoadedCallBacks.forEach((cb) => cb()); - this.panelLoadedCallBacks = []; - break; - case 'remoteQueryError': - void this.logger.log( - `Variant analysis error: ${msg.error}` - ); - break; - case 'openFile': - await this.openFile(msg.filePath); - break; - case 'openVirtualFile': - await this.openVirtualFile(msg.queryText); - break; - case 'copyRepoList': - await commands.executeCommand('codeQL.copyRepoList', msg.queryId); - break; - case 'remoteQueryDownloadAnalysisResults': - await this.downloadAnalysisResults(msg); - break; - case 'remoteQueryDownloadAllAnalysesResults': - await this.downloadAllAnalysesResults(msg); - break; - case 'remoteQueryExportResults': - await commands.executeCommand('codeQL.exportVariantAnalysisResults'); - break; - default: - assertNever(msg); - } - } - - private async downloadAnalysisResults(msg: RemoteQueryDownloadAnalysisResultsMessage): Promise { - const queryId = this.currentQueryId; - await this.analysesResultsManager.downloadAnalysisResults( - msg.analysisSummary, - results => this.setAnalysisResults(results, queryId)); - } - - private async downloadAllAnalysesResults(msg: RemoteQueryDownloadAllAnalysesResultsMessage): Promise { - const queryId = this.currentQueryId; - await this.analysesResultsManager.loadAnalysesResults( - msg.analysisSummaries, - undefined, - results => this.setAnalysisResults(results, queryId)); - } - - public async setAnalysisResults(analysesResults: AnalysisResults[], queryId: string | undefined): Promise { - if (this.panel?.active && this.currentQueryId === queryId) { - await this.postMessage({ - t: 'setAnalysesResults', - analysesResults - }); - } - } - - private postMessage(msg: ToRemoteQueriesMessage): Thenable { - return this.getPanel().webview.postMessage(msg); - } - - private getDuration(startTime: number, endTime: number): string { - const diffInMs = startTime - endTime; - return humanizeUnit(diffInMs); - } - - private formatDate = (millis: number): string => { - const d = new Date(millis); - const datePart = d.toLocaleDateString(undefined, { day: 'numeric', month: 'short' }); - const timePart = d.toLocaleTimeString(undefined, { hour: 'numeric', minute: 'numeric', hour12: true }); - return `${datePart} at ${timePart}`; - }; - - private formatFileSize(bytes: number): string { - const kb = bytes / 1024; - const mb = kb / 1024; - const gb = mb / 1024; - - if (bytes < 1024) { - return `${bytes} bytes`; - } else if (kb < 1024) { - return `${kb.toFixed(2)} KB`; - } else if (mb < 1024) { - return `${mb.toFixed(2)} MB`; - } else { - return `${gb.toFixed(2)} GB`; - } - } - - /** - * Builds up a list of analysis summaries, in a data structure tailored to the view. - * @param analysisSummaries The summaries of a specific analyses. - * @returns A fully created view model. - */ - private buildAnalysisSummaries(analysisSummaries: AnalysisSummary[]): AnalysisResultViewModel[] { - const filteredAnalysisSummaries = analysisSummaries.filter(r => r.resultCount > 0); - - const sortedAnalysisSummaries = filteredAnalysisSummaries.sort((a, b) => b.resultCount - a.resultCount); - - return sortedAnalysisSummaries.map((analysisResult) => ({ - nwo: analysisResult.nwo, - databaseSha: analysisResult.databaseSha || 'HEAD', - resultCount: analysisResult.resultCount, - downloadLink: analysisResult.downloadLink, - sourceLocationPrefix: analysisResult.sourceLocationPrefix, - fileSize: this.formatFileSize(analysisResult.fileSizeInBytes), - starCount: analysisResult.starCount, - lastUpdated: analysisResult.lastUpdated - })); - } -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-queries-manager.ts b/extensions/ql-vscode/src/remote-queries/remote-queries-manager.ts deleted file mode 100644 index 58f772eef6f..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-queries-manager.ts +++ /dev/null @@ -1,361 +0,0 @@ -import { CancellationToken, commands, EventEmitter, ExtensionContext, Uri, env, window } from 'vscode'; -import { nanoid } from 'nanoid'; -import * as path from 'path'; -import * as fs from 'fs-extra'; -import * as os from 'os'; - -import { Credentials } from '../authentication'; -import { CodeQLCliServer } from '../cli'; -import { ProgressCallback } from '../commandRunner'; -import { createTimestampFile, showAndLogErrorMessage, showAndLogInformationMessage, showInformationMessageWithAction } from '../helpers'; -import { Logger } from '../logging'; -import { runRemoteQuery } from './run-remote-query'; -import { RemoteQueriesInterfaceManager } from './remote-queries-interface'; -import { RemoteQuery } from './remote-query'; -import { RemoteQueriesMonitor } from './remote-queries-monitor'; -import { getRemoteQueryIndex, getRepositoriesMetadata, RepositoriesMetadata } from './gh-actions-api-client'; -import { RemoteQueryResultIndex } from './remote-query-result-index'; -import { RemoteQueryResult, sumAnalysisSummariesResults } from './remote-query-result'; -import { DownloadLink } from './download-link'; -import { AnalysesResultsManager } from './analyses-results-manager'; -import { assertNever } from '../pure/helpers-pure'; -import { QueryStatus } from '../query-status'; -import { DisposableObject } from '../pure/disposable-object'; -import { AnalysisResults } from './shared/analysis-result'; - -const autoDownloadMaxSize = 300 * 1024; -const autoDownloadMaxCount = 100; - -const noop = () => { /* do nothing */ }; - -export interface NewQueryEvent { - queryId: string; - query: RemoteQuery -} - -export interface RemovedQueryEvent { - queryId: string; -} - -export interface UpdatedQueryStatusEvent { - queryId: string; - status: QueryStatus; - failureReason?: string; - repositoryCount?: number; - resultCount?: number; -} - -export class RemoteQueriesManager extends DisposableObject { - public readonly onRemoteQueryAdded; - public readonly onRemoteQueryRemoved; - public readonly onRemoteQueryStatusUpdate; - - private readonly remoteQueryAddedEventEmitter; - private readonly remoteQueryRemovedEventEmitter; - private readonly remoteQueryStatusUpdateEventEmitter; - - private readonly remoteQueriesMonitor: RemoteQueriesMonitor; - private readonly analysesResultsManager: AnalysesResultsManager; - private readonly interfaceManager: RemoteQueriesInterfaceManager; - - constructor( - private readonly ctx: ExtensionContext, - private readonly cliServer: CodeQLCliServer, - private readonly storagePath: string, - logger: Logger, - ) { - super(); - this.analysesResultsManager = new AnalysesResultsManager(ctx, cliServer, storagePath, logger); - this.interfaceManager = new RemoteQueriesInterfaceManager(ctx, logger, this.analysesResultsManager); - this.remoteQueriesMonitor = new RemoteQueriesMonitor(ctx, logger); - - this.remoteQueryAddedEventEmitter = this.push(new EventEmitter()); - this.remoteQueryRemovedEventEmitter = this.push(new EventEmitter()); - this.remoteQueryStatusUpdateEventEmitter = this.push(new EventEmitter()); - this.onRemoteQueryAdded = this.remoteQueryAddedEventEmitter.event; - this.onRemoteQueryRemoved = this.remoteQueryRemovedEventEmitter.event; - this.onRemoteQueryStatusUpdate = this.remoteQueryStatusUpdateEventEmitter.event; - } - - public async rehydrateRemoteQuery(queryId: string, query: RemoteQuery, status: QueryStatus) { - if (!(await this.queryRecordExists(queryId))) { - // In this case, the query was deleted from disk, most likely because it was purged - // by another workspace. - this.remoteQueryRemovedEventEmitter.fire({ queryId }); - } else if (status === QueryStatus.InProgress) { - // In this case, last time we checked, the query was still in progress. - // We need to setup the monitor to check for completion. - await commands.executeCommand('codeQL.monitorRemoteQuery', queryId, query); - } - } - - public async removeRemoteQuery(queryId: string) { - this.analysesResultsManager.removeAnalysesResults(queryId); - await this.removeStorageDirectory(queryId); - } - - public async openRemoteQueryResults(queryId: string) { - try { - const remoteQuery = await this.retrieveJsonFile(queryId, 'query.json') as RemoteQuery; - const remoteQueryResult = await this.retrieveJsonFile(queryId, 'query-result.json') as RemoteQueryResult; - - // Open results in the background - void this.openResults(remoteQuery, remoteQueryResult).then( - noop, - err => void showAndLogErrorMessage(err) - ); - } catch (e) { - void showAndLogErrorMessage(`Could not open query results. ${e}`); - } - } - - public async runRemoteQuery( - uri: Uri | undefined, - progress: ProgressCallback, - token: CancellationToken - ): Promise { - const credentials = await Credentials.initialize(this.ctx); - - const querySubmission = await runRemoteQuery( - this.cliServer, - credentials, uri || window.activeTextEditor?.document.uri, - false, - progress, - token); - - if (querySubmission?.query) { - const query = querySubmission.query; - const queryId = this.createQueryId(query.queryName); - - await this.prepareStorageDirectory(queryId); - await this.storeJsonFile(queryId, 'query.json', query); - - this.remoteQueryAddedEventEmitter.fire({ queryId, query }); - void commands.executeCommand('codeQL.monitorRemoteQuery', queryId, query); - } - } - - public async monitorRemoteQuery( - queryId: string, - remoteQuery: RemoteQuery, - cancellationToken: CancellationToken - ): Promise { - const credentials = await Credentials.initialize(this.ctx); - - const queryWorkflowResult = await this.remoteQueriesMonitor.monitorQuery(remoteQuery, cancellationToken); - - const executionEndTime = Date.now(); - - if (queryWorkflowResult.status === 'CompletedSuccessfully') { - await this.downloadAvailableResults(queryId, remoteQuery, credentials, executionEndTime); - } else if (queryWorkflowResult.status === 'CompletedUnsuccessfully') { - if (queryWorkflowResult.error?.includes('cancelled')) { - // Workflow was cancelled on the server - this.remoteQueryStatusUpdateEventEmitter.fire({ queryId, status: QueryStatus.Failed, failureReason: 'Cancelled' }); - await this.downloadAvailableResults(queryId, remoteQuery, credentials, executionEndTime); - void showAndLogInformationMessage('Variant analysis was cancelled'); - } else { - this.remoteQueryStatusUpdateEventEmitter.fire({ queryId, status: QueryStatus.Failed, failureReason: queryWorkflowResult.error }); - void showAndLogErrorMessage(`Variant analysis execution failed. Error: ${queryWorkflowResult.error}`); - } - } else if (queryWorkflowResult.status === 'Cancelled') { - this.remoteQueryStatusUpdateEventEmitter.fire({ queryId, status: QueryStatus.Failed, failureReason: 'Cancelled' }); - await this.downloadAvailableResults(queryId, remoteQuery, credentials, executionEndTime); - void showAndLogInformationMessage('Variant analysis was cancelled'); - } else if (queryWorkflowResult.status === 'InProgress') { - // Should not get here. Only including this to ensure `assertNever` uses proper type checking. - void showAndLogErrorMessage(`Unexpected status: ${queryWorkflowResult.status}`); - } else { - // Ensure all cases are covered - assertNever(queryWorkflowResult.status); - } - } - - public async autoDownloadRemoteQueryResults( - queryResult: RemoteQueryResult, - token: CancellationToken - ): Promise { - const analysesToDownload = queryResult.analysisSummaries - .filter(a => a.fileSizeInBytes < autoDownloadMaxSize) - .slice(0, autoDownloadMaxCount) - .map(a => ({ - nwo: a.nwo, - databaseSha: a.databaseSha, - resultCount: a.resultCount, - sourceLocationPrefix: a.sourceLocationPrefix, - downloadLink: a.downloadLink, - fileSize: String(a.fileSizeInBytes) - })); - - await this.analysesResultsManager.loadAnalysesResults( - analysesToDownload, - token, - results => this.interfaceManager.setAnalysisResults(results, queryResult.queryId)); - } - - public async copyRemoteQueryRepoListToClipboard(queryId: string) { - const queryResult = await this.getRemoteQueryResult(queryId); - const repos = queryResult.analysisSummaries - .filter(a => a.resultCount > 0) - .map(a => a.nwo); - - if (repos.length > 0) { - const text = [ - '"new-repo-list": [', - ...repos.slice(0, -1).map(repo => ` "${repo}",`), - ` "${repos[repos.length - 1]}"`, - ']' - ]; - - await env.clipboard.writeText(text.join(os.EOL)); - } - } - - private mapQueryResult( - executionEndTime: number, - resultIndex: RemoteQueryResultIndex, - queryId: string, - metadata: RepositoriesMetadata - ): RemoteQueryResult { - const analysisSummaries = resultIndex.successes.map(item => ({ - nwo: item.nwo, - databaseSha: item.sha || 'HEAD', - resultCount: item.resultCount, - sourceLocationPrefix: item.sourceLocationPrefix, - fileSizeInBytes: item.sarifFileSize ? item.sarifFileSize : item.bqrsFileSize, - starCount: metadata[item.nwo]?.starCount, - lastUpdated: metadata[item.nwo]?.lastUpdated, - downloadLink: { - id: item.artifactId.toString(), - urlPath: `${resultIndex.artifactsUrlPath}/${item.artifactId}`, - innerFilePath: item.sarifFileSize ? 'results.sarif' : 'results.bqrs', - queryId - } as DownloadLink - })); - const analysisFailures = resultIndex.failures.map(item => ({ - nwo: item.nwo, - error: item.error - })); - - return { - executionEndTime, - analysisSummaries, - analysisFailures, - queryId - }; - } - - public async openResults(query: RemoteQuery, queryResult: RemoteQueryResult) { - await this.interfaceManager.showResults(query, queryResult); - } - - private async askToOpenResults(query: RemoteQuery, queryResult: RemoteQueryResult): Promise { - const totalResultCount = sumAnalysisSummariesResults(queryResult.analysisSummaries); - const totalRepoCount = queryResult.analysisSummaries.length; - const message = `Query "${query.queryName}" run on ${totalRepoCount} repositories and returned ${totalResultCount} results`; - - const shouldOpenView = await showInformationMessageWithAction(message, 'View'); - if (shouldOpenView) { - await this.openResults(query, queryResult); - } - } - - /** - * Generates a unique id for this query, suitable for determining the storage location for the downloaded query artifacts. - * @param queryName - * @returns - */ - private createQueryId(queryName: string): string { - return `${queryName}-${nanoid()}`; - } - - /** - * Prepares a directory for storing analysis results for a single query run. - * This directory contains a timestamp file, which will be - * used by the query history manager to determine when the directory - * should be deleted. - * - */ - private async prepareStorageDirectory(queryId: string): Promise { - await createTimestampFile(path.join(this.storagePath, queryId)); - } - - private async getRemoteQueryResult(queryId: string): Promise { - return await this.retrieveJsonFile(queryId, 'query-result.json'); - } - - private async storeJsonFile(queryId: string, fileName: string, obj: T): Promise { - const filePath = path.join(this.storagePath, queryId, fileName); - await fs.writeFile(filePath, JSON.stringify(obj, null, 2), 'utf8'); - } - - private async retrieveJsonFile(queryId: string, fileName: string): Promise { - const filePath = path.join(this.storagePath, queryId, fileName); - return JSON.parse(await fs.readFile(filePath, 'utf8')); - } - - private async removeStorageDirectory(queryId: string): Promise { - const filePath = path.join(this.storagePath, queryId); - await fs.remove(filePath); - } - - private async queryRecordExists(queryId: string): Promise { - const filePath = path.join(this.storagePath, queryId); - return await fs.pathExists(filePath); - } - - /** - * Checks whether there's a result index artifact available for the given query. - * If so, set the query status to `Completed` and auto-download the results. - */ - private async downloadAvailableResults( - queryId: string, - remoteQuery: RemoteQuery, - credentials: Credentials, - executionEndTime: number - ): Promise { - const resultIndex = await getRemoteQueryIndex(credentials, remoteQuery); - if (resultIndex) { - const metadata = await this.getRepositoriesMetadata(resultIndex, credentials); - const queryResult = this.mapQueryResult(executionEndTime, resultIndex, queryId, metadata); - const resultCount = sumAnalysisSummariesResults(queryResult.analysisSummaries); - this.remoteQueryStatusUpdateEventEmitter.fire({ - queryId, - status: QueryStatus.Completed, - repositoryCount: queryResult.analysisSummaries.length, - resultCount - }); - - await this.storeJsonFile(queryId, 'query-result.json', queryResult); - - // Kick off auto-download of results in the background. - void commands.executeCommand('codeQL.autoDownloadRemoteQueryResults', queryResult); - - // Ask if the user wants to open the results in the background. - void this.askToOpenResults(remoteQuery, queryResult).then( - noop, - err => { - void showAndLogErrorMessage(err); - } - ); - } else { - const controllerRepo = `${remoteQuery.controllerRepository.owner}/${remoteQuery.controllerRepository.name}`; - const workflowRunUrl = `https://github.com/${controllerRepo}/actions/runs/${remoteQuery.actionsWorkflowRunId}`; - void showAndLogErrorMessage( - `There was an issue retrieving the result for the query [${remoteQuery.queryName}](${workflowRunUrl}).` - ); - this.remoteQueryStatusUpdateEventEmitter.fire({ queryId, status: QueryStatus.Failed }); - } - } - - private async getRepositoriesMetadata(resultIndex: RemoteQueryResultIndex, credentials: Credentials) { - const nwos = resultIndex.successes.map(s => s.nwo); - return await getRepositoriesMetadata(credentials, nwos); - } - - // Pulled from the analysis results manager, so that we can get access to - // analyses results from the "export results" command. - public getAnalysesResults(queryId: string): AnalysisResults[] { - return [...this.analysesResultsManager.getAnalysesResults(queryId)]; - } -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-queries-markdown-generation.ts b/extensions/ql-vscode/src/remote-queries/remote-queries-markdown-generation.ts deleted file mode 100644 index 4a804276af6..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-queries-markdown-generation.ts +++ /dev/null @@ -1,332 +0,0 @@ -import { CellValue } from '../pure/bqrs-cli-types'; -import { tryGetRemoteLocation } from '../pure/bqrs-utils'; -import { createRemoteFileRef } from '../pure/location-link-utils'; -import { parseHighlightedLine, shouldHighlightLine } from '../pure/sarif-utils'; -import { convertNonPrintableChars } from '../text-utils'; -import { RemoteQuery } from './remote-query'; -import { AnalysisAlert, AnalysisRawResults, AnalysisResults, CodeSnippet, FileLink, getAnalysisResultCount, HighlightedRegion } from './shared/analysis-result'; - -export type MarkdownLinkType = 'local' | 'gist'; - -export interface MarkdownFile { - fileName: string; - content: string[]; // Each array item is a line of the markdown file. -} - -/** - * Generates markdown files with variant analysis results. - */ -export function generateMarkdown( - query: RemoteQuery, - analysesResults: AnalysisResults[], - linkType: MarkdownLinkType -): MarkdownFile[] { - const resultsFiles: MarkdownFile[] = []; - // Generate summary file with links to individual files - const summaryFile: MarkdownFile = generateMarkdownSummary(query); - for (const analysisResult of analysesResults) { - const resultsCount = getAnalysisResultCount(analysisResult); - if (resultsCount === 0) { - continue; - } - - // Append nwo and results count to the summary table - const nwo = analysisResult.nwo; - const fileName = createFileName(nwo); - const link = createRelativeLink(fileName, linkType); - summaryFile.content.push(`| ${nwo} | [${resultsCount} result(s)](${link}) |`); - - // Generate individual markdown file for each repository - const resultsFileContent = [ - `### ${analysisResult.nwo}`, - '' - ]; - for (const interpretedResult of analysisResult.interpretedResults) { - const individualResult = generateMarkdownForInterpretedResult(interpretedResult, query.language); - resultsFileContent.push(...individualResult); - } - if (analysisResult.rawResults) { - const rawResultTable = generateMarkdownForRawResults(analysisResult.rawResults); - resultsFileContent.push(...rawResultTable); - } - resultsFiles.push({ - fileName: fileName, - content: resultsFileContent, - }); - } - return [summaryFile, ...resultsFiles]; -} - -export function generateMarkdownSummary(query: RemoteQuery): MarkdownFile { - const lines: string[] = []; - // Title - lines.push( - `### Results for "${query.queryName}"`, - '' - ); - - // Expandable section containing query text - const queryCodeBlock = [ - '```ql', - ...query.queryText.split('\n'), - '```', - ]; - lines.push( - ...buildExpandableMarkdownSection('Query', queryCodeBlock) - ); - - // Padding between sections - lines.push( - '
', - '', - ); - - // Summary table - lines.push( - '### Summary', - '', - '| Repository | Results |', - '| --- | --- |', - ); - // nwo and result count will be appended to this table - return { - fileName: '_summary', - content: lines - }; -} - -function generateMarkdownForInterpretedResult(interpretedResult: AnalysisAlert, language: string): string[] { - const lines: string[] = []; - lines.push(createMarkdownRemoteFileRef( - interpretedResult.fileLink, - interpretedResult.highlightedRegion?.startLine, - interpretedResult.highlightedRegion?.endLine - )); - lines.push(''); - const codeSnippet = interpretedResult.codeSnippet; - const highlightedRegion = interpretedResult.highlightedRegion; - if (codeSnippet) { - lines.push( - ...generateMarkdownForCodeSnippet(codeSnippet, language, highlightedRegion), - ); - } - const alertMessage = generateMarkdownForAlertMessage(interpretedResult); - lines.push(alertMessage, ''); - - // If available, show paths - const hasPathResults = interpretedResult.codeFlows.length > 0; - if (hasPathResults) { - const pathLines = generateMarkdownForPathResults(interpretedResult, language); - lines.push(...pathLines); - } - - // Padding between results - lines.push( - '----------------------------------------', - '', - ); - return lines; -} - -function generateMarkdownForCodeSnippet( - codeSnippet: CodeSnippet, - language: string, - highlightedRegion?: HighlightedRegion -): string[] { - const lines: string[] = []; - const snippetStartLine = codeSnippet.startLine || 0; - const codeLines = codeSnippet.text - .split('\n') - .map((line, index) => - highlightCodeLines(line, index + snippetStartLine, highlightedRegion) - ); - - // Make sure there are no extra newlines before or after the block: - const codeLinesWrapped = [...codeLines]; - codeLinesWrapped[0] = `
${codeLinesWrapped[0]}`;
-  codeLinesWrapped[codeLinesWrapped.length - 1] = `${codeLinesWrapped[codeLinesWrapped.length - 1]}
`; - - lines.push( - ...codeLinesWrapped, - '', - ); - return lines; -} - -function highlightCodeLines( - line: string, - lineNumber: number, - highlightedRegion?: HighlightedRegion -): string { - if (!highlightedRegion || !shouldHighlightLine(lineNumber, highlightedRegion)) { - return line; - } - const partiallyHighlightedLine = parseHighlightedLine( - line, - lineNumber, - highlightedRegion - ); - return `${partiallyHighlightedLine.plainSection1}${partiallyHighlightedLine.highlightedSection}${partiallyHighlightedLine.plainSection2}`; -} - -function generateMarkdownForAlertMessage( - interpretedResult: AnalysisAlert -): string { - let alertMessage = ''; - for (const token of interpretedResult.message.tokens) { - if (token.t === 'text') { - alertMessage += token.text; - } else if (token.t === 'location') { - alertMessage += createMarkdownRemoteFileRef( - token.location.fileLink, - token.location.highlightedRegion?.startLine, - token.location.highlightedRegion?.endLine, - token.text - ); - } - } - // Italicize the alert message - return `*${alertMessage}*`; -} - -function generateMarkdownForPathResults( - interpretedResult: AnalysisAlert, - language: string -): string[] { - const lines: string[] = []; - lines.push('#### Paths', ''); - for (const codeFlow of interpretedResult.codeFlows) { - const pathLines: string[] = []; - const stepCount = codeFlow.threadFlows.length; - const title = `Path with ${stepCount} steps`; - for (let i = 0; i < stepCount; i++) { - const threadFlow = codeFlow.threadFlows[i]; - const link = createMarkdownRemoteFileRef( - threadFlow.fileLink, - threadFlow.highlightedRegion?.startLine, - threadFlow.highlightedRegion?.endLine - ); - const codeSnippet = generateMarkdownForCodeSnippet( - threadFlow.codeSnippet, - language, - threadFlow.highlightedRegion - ); - // Indent the snippet to fit with the numbered list. - const codeSnippetIndented = codeSnippet.map((line) => ` ${line}`); - pathLines.push(`${i + 1}. ${link}`, ...codeSnippetIndented); - } - lines.push( - ...buildExpandableMarkdownSection(title, pathLines) - ); - } - return lines; -} - -function generateMarkdownForRawResults( - analysisRawResults: AnalysisRawResults -): string[] { - const tableRows: string[] = []; - const columnCount = analysisRawResults.schema.columns.length; - // Table headers are the column names if they exist, and empty otherwise - const headers = analysisRawResults.schema.columns.map( - (column) => column.name || '' - ); - const tableHeader = `| ${headers.join(' | ')} |`; - - tableRows.push(tableHeader); - tableRows.push('|' + ' --- |'.repeat(columnCount)); - - for (const row of analysisRawResults.resultSet.rows) { - const cells = row.map((cell) => - generateMarkdownForRawTableCell(cell, analysisRawResults.fileLinkPrefix, analysisRawResults.sourceLocationPrefix) - ); - tableRows.push(`| ${cells.join(' | ')} |`); - } - return tableRows; -} - -function generateMarkdownForRawTableCell( - value: CellValue, - fileLinkPrefix: string, - sourceLocationPrefix: string -) { - let cellValue: string; - switch (typeof value) { - case 'string': - case 'number': - case 'boolean': - cellValue = `\`${convertNonPrintableChars(value.toString())}\``; - break; - case 'object': - { - const url = tryGetRemoteLocation(value.url, fileLinkPrefix, sourceLocationPrefix); - if (url) { - cellValue = `[\`${convertNonPrintableChars(value.label)}\`](${url})`; - } else { - cellValue = `\`${convertNonPrintableChars(value.label)}\``; - } - } - break; - } - // `|` characters break the table, so we need to escape them - return cellValue.replaceAll('|', '\\|'); -} - - -/** - * Creates a markdown link to a remote file. - * If the "link text" is not provided, we use the file path. - */ -export function createMarkdownRemoteFileRef( - fileLink: FileLink, - startLine?: number, - endLine?: number, - linkText?: string, -): string { - const markdownLink = `[${linkText || fileLink.filePath}](${createRemoteFileRef(fileLink, startLine, endLine)})`; - return markdownLink; -} - -/** - * Builds an expandable markdown section of the form: - *
- * title - * - * contents - * - *
- */ -function buildExpandableMarkdownSection(title: string, contents: string[]): string[] { - const expandableLines: string[] = []; - expandableLines.push( - '
', - `${title}`, - '', - ...contents, - '', - '
', - '' - ); - return expandableLines; -} - -function createRelativeLink(fileName: string, linkType: MarkdownLinkType): string { - switch (linkType) { - case 'local': - return `./${fileName}.md`; - - case 'gist': - // Creates an anchor link to a file in the gist. This is of the form: - // '#file--' - return `#file-${fileName}-md`; - } -} - -/** - * Creates the name of the markdown file for a given repository nwo. - * This name doesn't include the file extension. - */ -function createFileName(nwo: string) { - const [owner, repo] = nwo.split('/'); - return `${owner}-${repo}`; -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-queries-monitor.ts b/extensions/ql-vscode/src/remote-queries/remote-queries-monitor.ts deleted file mode 100644 index 38905a31c97..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-queries-monitor.ts +++ /dev/null @@ -1,61 +0,0 @@ -import * as vscode from 'vscode'; -import { Credentials } from '../authentication'; -import { Logger } from '../logging'; -import { getWorkflowStatus } from './gh-actions-api-client'; -import { RemoteQuery } from './remote-query'; -import { RemoteQueryWorkflowResult } from './remote-query-workflow-result'; - -export class RemoteQueriesMonitor { - // With a sleep of 5 seconds, the maximum number of attempts takes - // us to just over 2 days worth of monitoring. - private static readonly maxAttemptCount = 17280; - private static readonly sleepTime = 5000; - - constructor( - private readonly extensionContext: vscode.ExtensionContext, - private readonly logger: Logger - ) { - } - - public async monitorQuery( - remoteQuery: RemoteQuery, - cancellationToken: vscode.CancellationToken - ): Promise { - const credentials = await Credentials.initialize(this.extensionContext); - - if (!credentials) { - throw Error('Error authenticating with GitHub'); - } - - let attemptCount = 0; - - while (attemptCount <= RemoteQueriesMonitor.maxAttemptCount) { - await this.sleep(RemoteQueriesMonitor.sleepTime); - - if (cancellationToken && cancellationToken.isCancellationRequested) { - return { status: 'Cancelled' }; - } - - const workflowStatus = await getWorkflowStatus( - credentials, - remoteQuery.controllerRepository.owner, - remoteQuery.controllerRepository.name, - remoteQuery.actionsWorkflowRunId); - - if (workflowStatus.status !== 'InProgress') { - return workflowStatus; - } - - attemptCount++; - } - - void this.logger.log('Variant analysis monitoring timed out after 2 days'); - return { status: 'Cancelled' }; - } - - private async sleep(ms: number) { - return new Promise(resolve => setTimeout(resolve, ms)); - } -} - - diff --git a/extensions/ql-vscode/src/remote-queries/remote-query-history-item.ts b/extensions/ql-vscode/src/remote-queries/remote-query-history-item.ts deleted file mode 100644 index f132263e1f0..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-query-history-item.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { QueryStatus } from '../query-status'; -import { RemoteQuery } from './remote-query'; - -/** - * Information about a remote query. - */ -export interface RemoteQueryHistoryItem { - readonly t: 'remote'; - failureReason?: string; - resultCount?: number; - status: QueryStatus; - completed: boolean; - readonly queryId: string, - remoteQuery: RemoteQuery; - userSpecifiedLabel?: string; -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-query-result-index.ts b/extensions/ql-vscode/src/remote-queries/remote-query-result-index.ts deleted file mode 100644 index 2f9dc9dc55b..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-query-result-index.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface RemoteQueryResultIndex { - artifactsUrlPath: string; - successes: RemoteQuerySuccessIndexItem[]; - failures: RemoteQueryFailureIndexItem[]; -} - -export interface RemoteQuerySuccessIndexItem { - id: string; - artifactId: number; - nwo: string; - sha?: string; - resultCount: number; - bqrsFileSize: number; - sarifFileSize?: number; - sourceLocationPrefix: string; -} - -export interface RemoteQueryFailureIndexItem { - id: string; - artifactId: number; - nwo: string; - error: string; -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-query-result.ts b/extensions/ql-vscode/src/remote-queries/remote-query-result.ts deleted file mode 100644 index a5cb59cea46..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-query-result.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { DownloadLink } from './download-link'; -import { AnalysisFailure } from './shared/analysis-failure'; - -export interface RemoteQueryResult { - executionEndTime: number, // Can't use a Date here since it needs to be serialized and desserialized. - analysisSummaries: AnalysisSummary[], - analysisFailures: AnalysisFailure[], - queryId: string, -} - -export interface AnalysisSummary { - nwo: string, - databaseSha: string, - resultCount: number, - sourceLocationPrefix: string, - downloadLink: DownloadLink, - fileSizeInBytes: number, - starCount?: number, - lastUpdated?: number, -} - -/** - * Sums up the number of results for all repos queried via a remote query. - */ -export const sumAnalysisSummariesResults = (analysisSummaries: AnalysisSummary[]): number => { - return analysisSummaries.reduce((acc, cur) => acc + cur.resultCount, 0); -}; diff --git a/extensions/ql-vscode/src/remote-queries/remote-query-submission-result.ts b/extensions/ql-vscode/src/remote-queries/remote-query-submission-result.ts deleted file mode 100644 index 14dab6c9653..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-query-submission-result.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { RemoteQuery } from './remote-query'; - -export interface RemoteQuerySubmissionResult { - queryDirPath?: string; - query?: RemoteQuery; -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-query-workflow-result.ts b/extensions/ql-vscode/src/remote-queries/remote-query-workflow-result.ts deleted file mode 100644 index 7507221f29c..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-query-workflow-result.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type RemoteQueryWorkflowStatus = - | 'InProgress' - | 'CompletedSuccessfully' - | 'CompletedUnsuccessfully' - | 'Cancelled'; - -export interface RemoteQueryWorkflowResult { - status: RemoteQueryWorkflowStatus; - error?: string; -} diff --git a/extensions/ql-vscode/src/remote-queries/remote-query.ts b/extensions/ql-vscode/src/remote-queries/remote-query.ts deleted file mode 100644 index db838bec96b..00000000000 --- a/extensions/ql-vscode/src/remote-queries/remote-query.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Repository } from './repository'; - -export interface RemoteQuery { - queryName: string; - queryFilePath: string; - queryText: string; - language: string; - controllerRepository: Repository; - executionStartTime: number; // Use number here since it needs to be serialized and desserialized. - actionsWorkflowRunId: number; - repositoryCount: number; -} diff --git a/extensions/ql-vscode/src/remote-queries/repository-selection.ts b/extensions/ql-vscode/src/remote-queries/repository-selection.ts deleted file mode 100644 index cf0c5f488f9..00000000000 --- a/extensions/ql-vscode/src/remote-queries/repository-selection.ts +++ /dev/null @@ -1,210 +0,0 @@ -import * as fs from 'fs-extra'; -import { QuickPickItem, window } from 'vscode'; -import { logger } from '../logging'; -import { getRemoteRepositoryLists, getRemoteRepositoryListsPath } from '../config'; -import { OWNER_REGEX, REPO_REGEX } from '../pure/helpers-pure'; -import { UserCancellationException } from '../commandRunner'; - -export interface RepositorySelection { - repositories?: string[]; - repositoryLists?: string[]; - owners?: string[]; -} - -interface RepoListQuickPickItem extends QuickPickItem { - repositories?: string[]; - repositoryList?: string; - useCustomRepo?: boolean; - useAllReposOfOwner?: boolean; -} - -interface RepoList { - label: string; - repositories: string[]; -} - -/** - * Gets the repositories or repository lists to run the query against. - * @returns The user selection. - */ -export async function getRepositorySelection(): Promise { - const quickPickItems = [ - createCustomRepoQuickPickItem(), - createAllReposOfOwnerQuickPickItem(), - ...createSystemDefinedRepoListsQuickPickItems(), - ...(await createUserDefinedRepoListsQuickPickItems()), - ]; - - const options = { - placeHolder: 'Select a repository list. You can define repository lists in the `codeQL.variantAnalysis.repositoryLists` setting.', - ignoreFocusOut: true, - }; - - const quickpick = await window.showQuickPick( - quickPickItems, - options); - - if (quickpick?.repositories?.length) { - void logger.log(`Selected repositories: ${quickpick.repositories.join(', ')}`); - return { repositories: quickpick.repositories }; - } else if (quickpick?.repositoryList) { - void logger.log(`Selected repository list: ${quickpick.repositoryList}`); - return { repositoryLists: [quickpick.repositoryList] }; - } else if (quickpick?.useCustomRepo) { - const customRepo = await getCustomRepo(); - if (customRepo === undefined) { - // The user cancelled, do nothing. - throw new UserCancellationException('No repositories selected', true); - } - if (!customRepo || !REPO_REGEX.test(customRepo)) { - throw new UserCancellationException('Invalid repository format. Please enter a valid repository in the format / (e.g. github/codeql)'); - } - void logger.log(`Entered repository: ${customRepo}`); - return { repositories: [customRepo] }; - } else if (quickpick?.useAllReposOfOwner) { - const owner = await getOwner(); - if (owner === undefined) { - // The user cancelled, do nothing. - throw new UserCancellationException('No repositories selected', true); - } - if (!owner || !OWNER_REGEX.test(owner)) { - throw new Error(`Invalid user or organization: ${owner}`); - } - void logger.log(`Entered owner: ${owner}`); - return { owners: [owner] }; - } else { - // We don't need to display a warning pop-up in this case, since the user just escaped out of the operation. - // We set 'true' to make this a silent exception. - throw new UserCancellationException('No repositories selected', true); - } -} - -/** - * Checks if the selection is valid or not. - * @param repoSelection The selection to check. - * @returns A boolean flag indicating if the selection is valid or not. - */ -export function isValidSelection(repoSelection: RepositorySelection): boolean { - const repositories = repoSelection.repositories || []; - const repositoryLists = repoSelection.repositoryLists || []; - const owners = repoSelection.owners || []; - - return (repositories.length > 0 || repositoryLists.length > 0 || owners.length > 0); -} - -function createSystemDefinedRepoListsQuickPickItems(): RepoListQuickPickItem[] { - const topNs = [10, 100, 1000]; - - return topNs.map(n => ({ - label: '$(star) Top ' + n, - repositoryList: `top_${n}`, - alwaysShow: true - } as RepoListQuickPickItem)); -} - -async function readExternalRepoLists(): Promise { - const repoLists: RepoList[] = []; - - const path = getRemoteRepositoryListsPath(); - if (!path) { - return repoLists; - } - - await validateExternalRepoListsFile(path); - const json = await readExternalRepoListsJson(path); - - for (const [repoListName, repositories] of Object.entries(json)) { - if (!Array.isArray(repositories)) { - throw Error('Invalid repository lists file. It should contain an array of repositories for each list.'); - } - - repoLists.push({ - label: repoListName, - repositories - }); - } - - return repoLists; -} - -async function validateExternalRepoListsFile(path: string): Promise { - const pathExists = await fs.pathExists(path); - if (!pathExists) { - throw Error(`External repository lists file does not exist at ${path}`); - } - - const pathStat = await fs.stat(path); - if (pathStat.isDirectory()) { - throw Error('External repository lists path should not point to a directory'); - } -} - -async function readExternalRepoListsJson(path: string): Promise> { - let json; - - try { - const fileContents = await fs.readFile(path, 'utf8'); - json = await JSON.parse(fileContents); - } catch (error) { - throw Error('Invalid repository lists file. It should contain valid JSON.'); - } - - if (Array.isArray(json)) { - throw Error('Invalid repository lists file. It should be an object mapping names to a list of repositories.'); - } - - return json; -} - -function readRepoListsFromSettings(): RepoList[] { - const repoLists = getRemoteRepositoryLists(); - if (!repoLists) { - return []; - } - - return Object.entries(repoLists).map(([label, repositories]) => ( - { - label, - repositories - } - )); -} - -async function createUserDefinedRepoListsQuickPickItems(): Promise { - const repoListsFromSetings = readRepoListsFromSettings(); - const repoListsFromExternalFile = await readExternalRepoLists(); - - return [...repoListsFromSetings, ...repoListsFromExternalFile]; -} - -function createCustomRepoQuickPickItem(): RepoListQuickPickItem { - return { - label: '$(edit) Enter a GitHub repository', - useCustomRepo: true, - alwaysShow: true, - }; -} - -function createAllReposOfOwnerQuickPickItem(): RepoListQuickPickItem { - return { - label: '$(edit) Enter a GitHub user or organization', - useAllReposOfOwner: true, - alwaysShow: true - }; -} - -async function getCustomRepo(): Promise { - return await window.showInputBox({ - title: 'Enter a GitHub repository in the format / (e.g. github/codeql)', - placeHolder: '/', - prompt: 'Tip: you can save frequently used repositories in the `codeQL.variantAnalysis.repositoryLists` setting', - ignoreFocusOut: true, - }); -} - -async function getOwner(): Promise { - return await window.showInputBox({ - title: 'Enter a GitHub user or organization', - ignoreFocusOut: true - }); -} diff --git a/extensions/ql-vscode/src/remote-queries/repository.ts b/extensions/ql-vscode/src/remote-queries/repository.ts deleted file mode 100644 index f277b58af74..00000000000 --- a/extensions/ql-vscode/src/remote-queries/repository.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Repository { - owner: string; - name: string; -} diff --git a/extensions/ql-vscode/src/remote-queries/run-remote-query.ts b/extensions/ql-vscode/src/remote-queries/run-remote-query.ts deleted file mode 100644 index dadef8a9b68..00000000000 --- a/extensions/ql-vscode/src/remote-queries/run-remote-query.ts +++ /dev/null @@ -1,453 +0,0 @@ -import { CancellationToken, Uri, window } from 'vscode'; -import * as path from 'path'; -import * as yaml from 'js-yaml'; -import * as fs from 'fs-extra'; -import * as os from 'os'; -import * as tmp from 'tmp-promise'; -import { - askForLanguage, - findLanguage, - getOnDiskWorkspaceFolders, - showAndLogErrorMessage, - showAndLogInformationMessage, - tryGetQueryMetadata, - pluralize, - tmpDir -} from '../helpers'; -import { Credentials } from '../authentication'; -import * as cli from '../cli'; -import { logger } from '../logging'; -import { getActionBranch, getRemoteControllerRepo, setRemoteControllerRepo } from '../config'; -import { ProgressCallback, UserCancellationException } from '../commandRunner'; -import { OctokitResponse } from '@octokit/types/dist-types'; -import { RemoteQuery } from './remote-query'; -import { RemoteQuerySubmissionResult } from './remote-query-submission-result'; -import { QueryMetadata } from '../pure/interface-types'; -import { getErrorMessage, REPO_REGEX } from '../pure/helpers-pure'; -import { getRepositorySelection, isValidSelection, RepositorySelection } from './repository-selection'; - -export interface QlPack { - name: string; - version: string; - dependencies: { [key: string]: string }; - defaultSuite?: Record[]; - defaultSuiteFile?: string; -} - -interface QueriesResponse { - workflow_run_id: number, - errors?: { - invalid_repositories?: string[], - repositories_without_database?: string[], - private_repositories?: string[], - cutoff_repositories?: string[], - cutoff_repositories_count?: number, - }, - repositories_queried: string[], -} - -/** - * Well-known names for the query pack used by the server. - */ -const QUERY_PACK_NAME = 'codeql-remote/query'; - -/** - * Two possibilities: - * 1. There is no qlpack.yml in this directory. Assume this is a lone query and generate a synthetic qlpack for it. - * 2. There is a qlpack.yml in this directory. Assume this is a query pack and use the yml to pack the query before uploading it. - * - * @returns the entire qlpack as a base64 string. - */ -async function generateQueryPack(cliServer: cli.CodeQLCliServer, queryFile: string, queryPackDir: string): Promise<{ - base64Pack: string, - language: string -}> { - const originalPackRoot = await findPackRoot(queryFile); - const packRelativePath = path.relative(originalPackRoot, queryFile); - const targetQueryFileName = path.join(queryPackDir, packRelativePath); - - let language: string | undefined; - if (await fs.pathExists(path.join(originalPackRoot, 'qlpack.yml'))) { - // don't include ql files. We only want the queryFile to be copied. - const toCopy = await cliServer.packPacklist(originalPackRoot, false); - - // also copy the lock file (either new name or old name) and the query file itself. These are not included in the packlist. - [path.join(originalPackRoot, 'qlpack.lock.yml'), path.join(originalPackRoot, 'codeql-pack.lock.yml'), queryFile] - .forEach(absolutePath => { - if (absolutePath) { - toCopy.push(absolutePath); - } - }); - - let copiedCount = 0; - await fs.copy(originalPackRoot, queryPackDir, { - filter: (file: string) => - // copy file if it is in the packlist, or it is a parent directory of a file in the packlist - !!toCopy.find(f => { - // Normalized paths ensure that Windows drive letters are capitalized consistently. - const normalizedPath = Uri.file(f).fsPath; - const matches = normalizedPath === file || normalizedPath.startsWith(file + path.sep); - if (matches) { - copiedCount++; - } - return matches; - }) - }); - - void logger.log(`Copied ${copiedCount} files to ${queryPackDir}`); - - language = await findLanguage(cliServer, Uri.file(targetQueryFileName)); - - } else { - // open popup to ask for language if not already hardcoded - language = await askForLanguage(cliServer); - - // copy only the query file to the query pack directory - // and generate a synthetic query pack - void logger.log(`Copying ${queryFile} to ${queryPackDir}`); - await fs.copy(queryFile, targetQueryFileName); - void logger.log('Generating synthetic query pack'); - const syntheticQueryPack = { - name: QUERY_PACK_NAME, - version: '0.0.0', - dependencies: { - [`codeql/${language}-all`]: '*', - } - }; - await fs.writeFile(path.join(queryPackDir, 'qlpack.yml'), yaml.dump(syntheticQueryPack)); - } - if (!language) { - throw new UserCancellationException('Could not determine language.'); - } - - await ensureNameAndSuite(queryPackDir, packRelativePath); - - // Clear the cliServer cache so that the previous qlpack text is purged from the CLI. - await cliServer.clearCache(); - - const bundlePath = await getPackedBundlePath(queryPackDir); - void logger.log(`Compiling and bundling query pack from ${queryPackDir} to ${bundlePath}. (This may take a while.)`); - await cliServer.packInstall(queryPackDir); - const workspaceFolders = getOnDiskWorkspaceFolders(); - await cliServer.packBundle(queryPackDir, workspaceFolders, bundlePath, false); - const base64Pack = (await fs.readFile(bundlePath)).toString('base64'); - return { - base64Pack, - language - }; -} - -async function findPackRoot(queryFile: string): Promise { - // recursively find the directory containing qlpack.yml - let dir = path.dirname(queryFile); - while (!(await fs.pathExists(path.join(dir, 'qlpack.yml')))) { - dir = path.dirname(dir); - if (isFileSystemRoot(dir)) { - // there is no qlpack.yml in this directory or any parent directory. - // just use the query file's directory as the pack root. - return path.dirname(queryFile); - } - } - - return dir; -} - -function isFileSystemRoot(dir: string): boolean { - const pathObj = path.parse(dir); - return pathObj.root === dir && pathObj.base === ''; -} - -async function createRemoteQueriesTempDirectory() { - const remoteQueryDir = await tmp.dir({ dir: tmpDir.name, unsafeCleanup: true }); - const queryPackDir = path.join(remoteQueryDir.path, 'query-pack'); - await fs.mkdirp(queryPackDir); - return { remoteQueryDir, queryPackDir }; -} - -async function getPackedBundlePath(queryPackDir: string) { - return tmp.tmpName({ - dir: path.dirname(queryPackDir), - postfix: 'generated.tgz', - prefix: 'qlpack', - }); -} - -export async function runRemoteQuery( - cliServer: cli.CodeQLCliServer, - credentials: Credentials, - uri: Uri | undefined, - dryRun: boolean, - progress: ProgressCallback, - token: CancellationToken -): Promise { - if (!(await cliServer.cliConstraints.supportsRemoteQueries())) { - throw new Error(`Variant analysis is not supported by this version of CodeQL. Please upgrade to v${cli.CliVersionConstraint.CLI_VERSION_REMOTE_QUERIES - } or later.`); - } - - const { remoteQueryDir, queryPackDir } = await createRemoteQueriesTempDirectory(); - try { - if (!uri?.fsPath.endsWith('.ql')) { - throw new UserCancellationException('Not a CodeQL query file.'); - } - - const queryFile = uri.fsPath; - - progress({ - maxStep: 4, - step: 1, - message: 'Determining query target language' - }); - - const repoSelection = await getRepositorySelection(); - if (!isValidSelection(repoSelection)) { - throw new UserCancellationException('No repositories to query.'); - } - - progress({ - maxStep: 4, - step: 2, - message: 'Determining controller repo' - }); - - // Get the controller repo from the config, if it exists. - // If it doesn't exist, prompt the user to enter it, and save that value to the config. - let controllerRepo: string | undefined; - controllerRepo = getRemoteControllerRepo(); - if (!controllerRepo || !REPO_REGEX.test(controllerRepo)) { - void logger.log(controllerRepo ? 'Invalid controller repository name.' : 'No controller repository defined.'); - controllerRepo = await window.showInputBox({ - title: 'Controller repository in which to display progress and results of variant analysis', - placeHolder: '/', - prompt: 'Enter the name of a GitHub repository in the format /', - ignoreFocusOut: true, - }); - if (!controllerRepo) { - void showAndLogErrorMessage('No controller repository entered.'); - return; - } else if (!REPO_REGEX.test(controllerRepo)) { // Check if user entered invalid input - void showAndLogErrorMessage('Invalid repository format. Must be a valid GitHub repository in the format /.'); - return; - } - void logger.log(`Setting the controller repository as: ${controllerRepo}`); - await setRemoteControllerRepo(controllerRepo); - } - - void logger.log(`Using controller repository: ${controllerRepo}`); - const [owner, repo] = controllerRepo.split('/'); - - progress({ - maxStep: 4, - step: 3, - message: 'Bundling the query pack' - }); - - if (token.isCancellationRequested) { - throw new UserCancellationException('Cancelled'); - } - - const { base64Pack, language } = await generateQueryPack(cliServer, queryFile, queryPackDir); - - if (token.isCancellationRequested) { - throw new UserCancellationException('Cancelled'); - } - - progress({ - maxStep: 4, - step: 4, - message: 'Sending request' - }); - - const actionBranch = getActionBranch(); - const apiResponse = await runRemoteQueriesApiRequest(credentials, actionBranch, language, repoSelection, owner, repo, base64Pack, dryRun); - const queryStartTime = Date.now(); - const queryMetadata = await tryGetQueryMetadata(cliServer, queryFile); - - if (dryRun) { - return { queryDirPath: remoteQueryDir.path }; - } else { - if (!apiResponse) { - return; - } - - const workflowRunId = apiResponse.workflow_run_id; - const repositoryCount = apiResponse.repositories_queried.length; - const remoteQuery = await buildRemoteQueryEntity( - queryFile, - queryMetadata, - owner, - repo, - queryStartTime, - workflowRunId, - language, - repositoryCount); - - // don't return the path because it has been deleted - return { query: remoteQuery }; - } - - } finally { - if (dryRun) { - // If we are in a dry run keep the data around for debugging purposes. - void logger.log(`[DRY RUN] Not deleting ${queryPackDir}.`); - } else { - await remoteQueryDir.cleanup(); - } - } -} - -async function runRemoteQueriesApiRequest( - credentials: Credentials, - ref: string, - language: string, - repoSelection: RepositorySelection, - owner: string, - repo: string, - queryPackBase64: string, - dryRun = false -): Promise { - const data = { - ref, - language, - repositories: repoSelection.repositories ?? undefined, - repository_lists: repoSelection.repositoryLists ?? undefined, - repository_owners: repoSelection.owners ?? undefined, - query_pack: queryPackBase64, - }; - - if (dryRun) { - void showAndLogInformationMessage('[DRY RUN] Would have sent request. See extension log for the payload.'); - void logger.log(JSON.stringify({ - owner, - repo, - data: { - ...data, - queryPackBase64: queryPackBase64.substring(0, 100) + '... ' + queryPackBase64.length + ' bytes' - } - })); - return; - } - - try { - const octokit = await credentials.getOctokit(); - const response: OctokitResponse = await octokit.request( - 'POST /repos/:owner/:repo/code-scanning/codeql/queries', - { - owner, - repo, - data - } - ); - const { popupMessage, logMessage } = parseResponse(owner, repo, response.data); - void showAndLogInformationMessage(popupMessage, { fullMessage: logMessage }); - return response.data; - } catch (error: any) { - if (error.status === 404) { - void showAndLogErrorMessage(`Controller repository was not found. Please make sure it's a valid repo name.${eol}`); - } else { - void showAndLogErrorMessage(getErrorMessage(error)); - } - } -} - -const eol = os.EOL; -const eol2 = os.EOL + os.EOL; - -// exported for testing only -export function parseResponse(owner: string, repo: string, response: QueriesResponse) { - const repositoriesQueried = response.repositories_queried; - const repositoryCount = repositoriesQueried.length; - - const popupMessage = `Successfully scheduled runs on ${pluralize(repositoryCount, 'repository', 'repositories')}. [Click here to see the progress](https://github.com/${owner}/${repo}/actions/runs/${response.workflow_run_id}).` - + (response.errors ? `${eol2}Some repositories could not be scheduled. See extension log for details.` : ''); - - let logMessage = `Successfully scheduled runs on ${pluralize(repositoryCount, 'repository', 'repositories')}. See https://github.com/${owner}/${repo}/actions/runs/${response.workflow_run_id}.`; - logMessage += `${eol2}Repositories queried:${eol}${repositoriesQueried.join(', ')}`; - if (response.errors) { - const { invalid_repositories, repositories_without_database, private_repositories, cutoff_repositories, cutoff_repositories_count } = response.errors; - logMessage += `${eol2}Some repositories could not be scheduled.`; - if (invalid_repositories?.length) { - logMessage += `${eol2}${pluralize(invalid_repositories.length, 'repository', 'repositories')} invalid and could not be found:${eol}${invalid_repositories.join(', ')}`; - } - if (repositories_without_database?.length) { - logMessage += `${eol2}${pluralize(repositories_without_database.length, 'repository', 'repositories')} did not have a CodeQL database available:${eol}${repositories_without_database.join(', ')}`; - logMessage += `${eol}For each public repository that has not yet been added to the database service, we will try to create a database next time the store is updated.`; - } - if (private_repositories?.length) { - logMessage += `${eol2}${pluralize(private_repositories.length, 'repository', 'repositories')} not public:${eol}${private_repositories.join(', ')}`; - logMessage += `${eol}When using a public controller repository, only public repositories can be queried.`; - } - if (cutoff_repositories_count) { - logMessage += `${eol2}${pluralize(cutoff_repositories_count, 'repository', 'repositories')} over the limit for a single request`; - if (cutoff_repositories) { - logMessage += `:${eol}${cutoff_repositories.join(', ')}`; - if (cutoff_repositories_count !== cutoff_repositories.length) { - const moreRepositories = cutoff_repositories_count - cutoff_repositories.length; - logMessage += `${eol}...${eol}And another ${pluralize(moreRepositories, 'repository', 'repositories')}.`; - } - } else { - logMessage += '.'; - } - logMessage += `${eol}Repositories were selected based on how recently they had been updated.`; - } - } - - return { - popupMessage, - logMessage - }; -} - -/** - * Updates the default suite of the query pack. This is used to ensure - * only the specified query is run. - * - * Also, ensure the query pack name is set to the name expected by the server. - * - * @param queryPackDir The directory containing the query pack - * @param packRelativePath The relative path to the query pack from the root of the query pack - */ -async function ensureNameAndSuite(queryPackDir: string, packRelativePath: string): Promise { - const packPath = path.join(queryPackDir, 'qlpack.yml'); - const qlpack = yaml.load(await fs.readFile(packPath, 'utf8')) as QlPack; - delete qlpack.defaultSuiteFile; - - qlpack.name = QUERY_PACK_NAME; - - qlpack.defaultSuite = [{ - description: 'Query suite for variant analysis' - }, { - query: packRelativePath.replace(/\\/g, '/') - }]; - await fs.writeFile(packPath, yaml.dump(qlpack)); -} - -async function buildRemoteQueryEntity( - queryFilePath: string, - queryMetadata: QueryMetadata | undefined, - controllerRepoOwner: string, - controllerRepoName: string, - queryStartTime: number, - workflowRunId: number, - language: string, - repositoryCount: number -): Promise { - // The query name is either the name as specified in the query metadata, or the file name. - const queryName = queryMetadata?.name ?? path.basename(queryFilePath); - - const queryText = await fs.readFile(queryFilePath, 'utf8'); - - return { - queryName, - queryFilePath, - queryText, - language, - controllerRepository: { - owner: controllerRepoOwner, - name: controllerRepoName, - }, - executionStartTime: queryStartTime, - actionsWorkflowRunId: workflowRunId, - repositoryCount, - }; -} diff --git a/extensions/ql-vscode/src/remote-queries/sarif-processing.ts b/extensions/ql-vscode/src/remote-queries/sarif-processing.ts deleted file mode 100644 index 65e7729465f..00000000000 --- a/extensions/ql-vscode/src/remote-queries/sarif-processing.ts +++ /dev/null @@ -1,253 +0,0 @@ -import * as sarif from 'sarif'; -import { parseSarifPlainTextMessage, parseSarifRegion } from '../pure/sarif-utils'; - -import { - AnalysisAlert, - CodeFlow, - AnalysisMessage, - AnalysisMessageToken, - ResultSeverity, - ThreadFlow, - CodeSnippet, - HighlightedRegion -} from './shared/analysis-result'; - -const defaultSeverity = 'Warning'; - -export function extractAnalysisAlerts( - sarifLog: sarif.Log, - fileLinkPrefix: string -): { - alerts: AnalysisAlert[], - errors: string[] -} { - const alerts: AnalysisAlert[] = []; - const errors: string[] = []; - - for (const run of sarifLog.runs ?? []) { - for (const result of run.results ?? []) { - try { - alerts.push(...extractResultAlerts(run, result, fileLinkPrefix)); - } catch (e) { - errors.push(`Error when processing SARIF result: ${e}`); - continue; - } - } - } - - return { alerts, errors }; -} - -function extractResultAlerts( - run: sarif.Run, - result: sarif.Result, - fileLinkPrefix: string -): AnalysisAlert[] { - const alerts: AnalysisAlert[] = []; - - const message = getMessage(result, fileLinkPrefix); - const rule = tryGetRule(run, result); - const severity = tryGetSeverity(run, result, rule) || defaultSeverity; - const codeFlows = getCodeFlows(result, fileLinkPrefix); - const shortDescription = getShortDescription(rule, message!); - - for (const location of result.locations ?? []) { - const physicalLocation = location.physicalLocation!; - const filePath = physicalLocation.artifactLocation!.uri!; - const codeSnippet = getCodeSnippet(physicalLocation.contextRegion, physicalLocation.region); - const highlightedRegion = physicalLocation.region - ? getHighlightedRegion(physicalLocation.region) - : undefined; - - const analysisAlert: AnalysisAlert = { - message, - shortDescription, - fileLink: { - fileLinkPrefix, - filePath, - }, - severity, - codeSnippet, - highlightedRegion, - codeFlows: codeFlows - }; - - alerts.push(analysisAlert); - } - - return alerts; -} - -function getShortDescription( - rule: sarif.ReportingDescriptor | undefined, - message: AnalysisMessage, -): string { - if (rule?.shortDescription?.text) { - return rule.shortDescription.text; - } - - return message.tokens.map(token => token.text).join(''); -} - -export function tryGetSeverity( - sarifRun: sarif.Run, - result: sarif.Result, - rule: sarif.ReportingDescriptor | undefined -): ResultSeverity | undefined { - if (!sarifRun || !result || !rule) { - return undefined; - } - - const severity = rule.properties?.['problem.severity']; - if (!severity) { - return undefined; - } - - switch (severity.toLowerCase()) { - case 'recommendation': - return 'Recommendation'; - case 'warning': - return 'Warning'; - case 'error': - return 'Error'; - } - - return undefined; -} - -export function tryGetRule( - sarifRun: sarif.Run, - result: sarif.Result -): sarif.ReportingDescriptor | undefined { - if (!sarifRun || !result) { - return undefined; - } - - const resultRule = result.rule; - if (!resultRule) { - return undefined; - } - - // The rule can found in two places: - // - Either in the run's tool driver tool component - // - Or in the run's tool extensions tool component - - const ruleId = resultRule.id; - if (ruleId) { - const rule = sarifRun.tool.driver.rules?.find(r => r.id === ruleId); - if (rule) { - return rule; - } - } - - const ruleIndex = resultRule.index; - if (ruleIndex != undefined) { - const toolComponentIndex = result.rule?.toolComponent?.index; - const toolExtensions = sarifRun.tool.extensions; - if (toolComponentIndex !== undefined && toolExtensions !== undefined) { - const toolComponent = toolExtensions[toolComponentIndex]; - if (toolComponent?.rules !== undefined) { - return toolComponent.rules[ruleIndex]; - } - } - } - - // Couldn't find the rule. - return undefined; -} - -function getCodeSnippet(region?: sarif.Region, alternateRegion?: sarif.Region): CodeSnippet | undefined { - region = region ?? alternateRegion; - - if (!region) { - return undefined; - } - - const text = region.snippet?.text || ''; - const { startLine, endLine } = parseSarifRegion(region); - - return { - startLine, - endLine, - text - }; -} - -function getHighlightedRegion(region: sarif.Region): HighlightedRegion { - const { startLine, startColumn, endLine, endColumn } = parseSarifRegion(region); - - return { - startLine, - startColumn, - endLine, - - // parseSarifRegion currently shifts the end column by 1 to account - // for the way vscode counts columns so we need to shift it back. - endColumn: endColumn + 1 - }; -} - -function getCodeFlows( - result: sarif.Result, - fileLinkPrefix: string -): CodeFlow[] { - const codeFlows = []; - - if (result.codeFlows) { - for (const codeFlow of result.codeFlows) { - const threadFlows = []; - - for (const threadFlow of codeFlow.threadFlows) { - for (const threadFlowLocation of threadFlow.locations) { - const physicalLocation = threadFlowLocation!.location!.physicalLocation!; - const filePath = physicalLocation!.artifactLocation!.uri!; - const codeSnippet = getCodeSnippet(physicalLocation.contextRegion, physicalLocation.region); - const highlightedRegion = physicalLocation.region - ? getHighlightedRegion(physicalLocation.region) - : undefined; - - threadFlows.push({ - fileLink: { - fileLinkPrefix, - filePath, - }, - codeSnippet, - highlightedRegion - } as ThreadFlow); - } - } - - codeFlows.push({ threadFlows } as CodeFlow); - } - } - - return codeFlows; -} - -function getMessage(result: sarif.Result, fileLinkPrefix: string): AnalysisMessage { - const tokens: AnalysisMessageToken[] = []; - - const messageText = result.message!.text!; - const messageParts = parseSarifPlainTextMessage(messageText); - - for (const messagePart of messageParts) { - if (typeof messagePart === 'string') { - tokens.push({ t: 'text', text: messagePart }); - } else { - const relatedLocation = result.relatedLocations!.find(rl => rl.id === messagePart.dest); - tokens.push({ - t: 'location', - text: messagePart.text, - location: { - fileLink: { - fileLinkPrefix: fileLinkPrefix, - filePath: relatedLocation!.physicalLocation!.artifactLocation!.uri!, - }, - highlightedRegion: getHighlightedRegion(relatedLocation!.physicalLocation!.region!), - } - }); - } - } - - return { tokens }; -} diff --git a/extensions/ql-vscode/src/remote-queries/shared/analysis-failure.ts b/extensions/ql-vscode/src/remote-queries/shared/analysis-failure.ts deleted file mode 100644 index 8e6c3764802..00000000000 --- a/extensions/ql-vscode/src/remote-queries/shared/analysis-failure.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface AnalysisFailure { - nwo: string, - error: string -} diff --git a/extensions/ql-vscode/src/remote-queries/shared/analysis-result.ts b/extensions/ql-vscode/src/remote-queries/shared/analysis-result.ts deleted file mode 100644 index ce4825fc839..00000000000 --- a/extensions/ql-vscode/src/remote-queries/shared/analysis-result.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { RawResultSet, ResultSetSchema } from '../../pure/bqrs-cli-types'; - -export type AnalysisResultStatus = 'InProgress' | 'Completed' | 'Failed'; - -export interface AnalysisResults { - nwo: string; - status: AnalysisResultStatus; - interpretedResults: AnalysisAlert[]; - rawResults?: AnalysisRawResults; - resultCount: number, - starCount?: number, - lastUpdated?: number, -} - -export interface AnalysisRawResults { - schema: ResultSetSchema; - resultSet: RawResultSet; - fileLinkPrefix: string; - sourceLocationPrefix: string; - capped: boolean; -} - -export interface AnalysisAlert { - message: AnalysisMessage; - shortDescription: string; - severity: ResultSeverity; - fileLink: FileLink; - codeSnippet?: CodeSnippet; - highlightedRegion?: HighlightedRegion; - codeFlows: CodeFlow[]; -} - -export interface FileLink { - fileLinkPrefix: string; - filePath: string; -} - -export interface CodeSnippet { - startLine: number; - endLine: number; - text: string; -} - -export interface HighlightedRegion { - startLine: number; - startColumn: number; - endLine: number; - endColumn: number; -} - -export interface CodeFlow { - threadFlows: ThreadFlow[]; -} - -export interface ThreadFlow { - fileLink: FileLink; - codeSnippet: CodeSnippet; - highlightedRegion?: HighlightedRegion; - message?: AnalysisMessage; -} - -export interface AnalysisMessage { - tokens: AnalysisMessageToken[] -} - -export type AnalysisMessageToken = - | AnalysisMessageTextToken - | AnalysisMessageLocationToken; - -export interface AnalysisMessageTextToken { - t: 'text'; - text: string; -} - -export interface AnalysisMessageLocationToken { - t: 'location'; - text: string; - location: { - fileLink: FileLink; - highlightedRegion?: HighlightedRegion; - }; -} - -export type ResultSeverity = 'Recommendation' | 'Warning' | 'Error'; - -/** - * Returns the number of (raw + interpreted) results for an analysis. - */ -export const getAnalysisResultCount = (analysisResults: AnalysisResults): number => { - const rawResultCount = analysisResults.rawResults?.resultSet.rows.length || 0; - return analysisResults.interpretedResults.length + rawResultCount; -}; - -/** - * Returns the total number of results for an analysis by adding all individual repo results. - */ -export const sumAnalysesResults = (analysesResults: AnalysisResults[]) => - analysesResults.reduce((acc, curr) => acc + getAnalysisResultCount(curr), 0); diff --git a/extensions/ql-vscode/src/remote-queries/shared/remote-query-result.ts b/extensions/ql-vscode/src/remote-queries/shared/remote-query-result.ts deleted file mode 100644 index f473d99dec6..00000000000 --- a/extensions/ql-vscode/src/remote-queries/shared/remote-query-result.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { DownloadLink } from '../download-link'; -import { AnalysisFailure } from './analysis-failure'; - -export interface RemoteQueryResult { - queryId: string, - queryTitle: string, - queryFileName: string, - queryFilePath: string, - queryText: string, - language: string, - workflowRunUrl: string, - totalRepositoryCount: number, - affectedRepositoryCount: number, - totalResultCount: number, - executionTimestamp: string, - executionDuration: string, - analysisSummaries: AnalysisSummary[], - analysisFailures: AnalysisFailure[], -} - -export interface AnalysisSummary { - nwo: string, - databaseSha: string, - resultCount: number, - sourceLocationPrefix: string, - downloadLink: DownloadLink, - fileSize: string, - starCount?: number, - lastUpdated?: number, -} diff --git a/extensions/ql-vscode/src/remote-queries/view/.eslintrc.js b/extensions/ql-vscode/src/remote-queries/view/.eslintrc.js deleted file mode 100644 index 2068719172e..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - env: { - browser: true - }, - extends: [ - "plugin:react/recommended" - ], - settings: { - react: { - version: 'detect' - } - } -} diff --git a/extensions/ql-vscode/src/remote-queries/view/AnalysisAlertResult.tsx b/extensions/ql-vscode/src/remote-queries/view/AnalysisAlertResult.tsx deleted file mode 100644 index 736fe49c350..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/AnalysisAlertResult.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import * as React from 'react'; -import { AnalysisAlert } from '../shared/analysis-result'; -import CodePaths from './CodePaths'; -import FileCodeSnippet from './FileCodeSnippet'; - -const AnalysisAlertResult = ({ alert }: { alert: AnalysisAlert }) => { - const showPathsLink = alert.codeFlows.length > 0; - - return - } - />; -}; - -export default AnalysisAlertResult; diff --git a/extensions/ql-vscode/src/remote-queries/view/CodePaths.tsx b/extensions/ql-vscode/src/remote-queries/view/CodePaths.tsx deleted file mode 100644 index 1f892c16297..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/CodePaths.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { XCircleIcon } from '@primer/octicons-react'; -import { Overlay } from '@primer/react'; -import { VSCodeDropdown, VSCodeLink, VSCodeOption, VSCodeTag } from '@vscode/webview-ui-toolkit/react'; -import * as React from 'react'; -import { ChangeEvent, useRef, useState } from 'react'; -import styled from 'styled-components'; -import { CodeFlow, AnalysisMessage, ResultSeverity } from '../shared/analysis-result'; -import FileCodeSnippet from './FileCodeSnippet'; -import SectionTitle from './SectionTitle'; -import VerticalSpace from './VerticalSpace'; - -const StyledCloseButton = styled.button` - position: absolute; - top: 1em; - right: 4em; - background-color: var(--vscode-editor-background); - color: var(--vscode-editor-foreground); - border: none; - &:focus-visible { - outline: none - } -`; - -const OverlayContainer = styled.div` - padding: 1em; - height: 100%; - width: 100%; - padding: 2em; - position: fixed; - top: 0; - left: 0; - background-color: var(--vscode-editor-background); - color: var(--vscode-editor-foreground); - overflow-y: scroll; -`; - -const CloseButton = ({ onClick }: { onClick: () => void }) => ( - - - -); - -const CodePath = ({ - codeFlow, - message, - severity -}: { - codeFlow: CodeFlow; - message: AnalysisMessage; - severity: ResultSeverity; -}) => { - return <> - {codeFlow.threadFlows.map((threadFlow, index) => -
- {index !== 0 && } - -
-
- Step {index + 1} -
- {index === 0 && -
- Source -
- } - {index === codeFlow.threadFlows.length - 1 && -
- Sink -
- } -
- - - -
- )} - ; -}; - -const getCodeFlowName = (codeFlow: CodeFlow) => { - const filePath = codeFlow.threadFlows[codeFlow.threadFlows.length - 1].fileLink.filePath; - return filePath.substring(filePath.lastIndexOf('/') + 1); -}; - -const Menu = ({ - codeFlows, - setSelectedCodeFlow -}: { - codeFlows: CodeFlow[], - setSelectedCodeFlow: (value: React.SetStateAction) => void -}) => { - return ) => { - const selectedOption = event.target; - const selectedIndex = selectedOption.value as unknown as number; - setSelectedCodeFlow(codeFlows[selectedIndex]); - }} - > - {codeFlows.map((codeFlow, index) => - - {getCodeFlowName(codeFlow)} - - )} - ; -}; - -const CodePaths = ({ - codeFlows, - ruleDescription, - message, - severity -}: { - codeFlows: CodeFlow[], - ruleDescription: string, - message: AnalysisMessage, - severity: ResultSeverity -}) => { - const [isOpen, setIsOpen] = useState(false); - const [selectedCodeFlow, setSelectedCodeFlow] = useState(codeFlows[0]); - - const anchorRef = useRef(null); - const linkRef = useRef(null); - - const closeOverlay = () => setIsOpen(false); - - return ( -
- setIsOpen(true)} - ref={linkRef} - sx={{ cursor: 'pointer' }}> - Show paths - - {isOpen && ( - - - - - {ruleDescription} - - -
-
- {codeFlows.length} paths available: {selectedCodeFlow.threadFlows.length} steps in -
-
- -
-
- - - - - - -
-
- )} -
- ); -}; - -export default CodePaths; diff --git a/extensions/ql-vscode/src/remote-queries/view/CollapsibleItem.tsx b/extensions/ql-vscode/src/remote-queries/view/CollapsibleItem.tsx deleted file mode 100644 index c7d8b04ee56..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/CollapsibleItem.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import * as React from 'react'; -import styled from 'styled-components'; -import { ChevronDownIcon, ChevronRightIcon } from '@primer/octicons-react'; -import { useState } from 'react'; - -const Container = styled.div` - display: block; - vertical-align: middle; - cursor: pointer; -`; - -const TitleContainer = styled.span` - display: inline-block; -`; - -const Button = styled.button` - display: inline-block; - background-color: transparent; - color: var(--vscode-editor-foreground); - border: none; - padding-left: 0; - padding-right: 0.1em; -`; - -const CollapsibleItem = ({ - title, - children -}: { - title: React.ReactNode; - children: React.ReactNode -}) => { - const [isExpanded, setExpanded] = useState(false); - return ( - <> - setExpanded(!isExpanded)}> - - {title} - - {isExpanded && children} - - ); -}; - -export default CollapsibleItem; diff --git a/extensions/ql-vscode/src/remote-queries/view/DownloadButton.tsx b/extensions/ql-vscode/src/remote-queries/view/DownloadButton.tsx deleted file mode 100644 index 23386056451..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/DownloadButton.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import * as React from 'react'; -import styled from 'styled-components'; -import { DownloadIcon } from '@primer/octicons-react'; - -const ButtonLink = styled.a` - display: inline-block; - font-size: x-small; - text-decoration: none; - cursor: pointer; - vertical-align: middle; - - svg { - fill: var(--vscode-textLink-foreground); - } -`; - -const DownloadButton = ({ text, onClick }: { text: string, onClick: () => void }) => ( - - {text} - -); - -export default DownloadButton; diff --git a/extensions/ql-vscode/src/remote-queries/view/DownloadSpinner.tsx b/extensions/ql-vscode/src/remote-queries/view/DownloadSpinner.tsx deleted file mode 100644 index 3d8dbed1897..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/DownloadSpinner.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { VSCodeProgressRing } from '@vscode/webview-ui-toolkit/react'; -import * as React from 'react'; -import styled from 'styled-components'; - -const SpinnerContainer = styled.span` - vertical-align: middle; - display: inline-block; -`; - -const DownloadSpinner = () => ( - - - -); - -export default DownloadSpinner; diff --git a/extensions/ql-vscode/src/remote-queries/view/FileCodeSnippet.tsx b/extensions/ql-vscode/src/remote-queries/view/FileCodeSnippet.tsx deleted file mode 100644 index 33e049c9048..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/FileCodeSnippet.tsx +++ /dev/null @@ -1,261 +0,0 @@ -import * as React from 'react'; -import styled from 'styled-components'; -import { CodeSnippet, FileLink, HighlightedRegion, AnalysisMessage, ResultSeverity } from '../shared/analysis-result'; -import VerticalSpace from './VerticalSpace'; -import { createRemoteFileRef } from '../../pure/location-link-utils'; -import { parseHighlightedLine, shouldHighlightLine } from '../../pure/sarif-utils'; -import { VSCodeLink } from '@vscode/webview-ui-toolkit/react'; - -const borderColor = 'var(--vscode-editor-snippetFinalTabstopHighlightBorder)'; -const warningColor = '#966C23'; -const highlightColor = 'var(--vscode-editor-findMatchHighlightBackground)'; - -const getSeverityColor = (severity: ResultSeverity) => { - switch (severity) { - case 'Recommendation': - return 'blue'; - case 'Warning': - return warningColor; - case 'Error': - return 'red'; - } -}; - -const replaceSpaceAndTabChar = (text: string) => text.replaceAll(' ', '\u00a0').replaceAll('\t', '\u00a0\u00a0\u00a0\u00a0'); - -const Container = styled.div` - font-family: var(--vscode-editor-font-family); - font-size: small; -`; - -const TitleContainer = styled.div` - border: 0.1em solid ${borderColor}; - border-top-left-radius: 0.2em; - border-top-right-radius: 0.2em; - padding: 0.5em; -`; - -const CodeContainer = styled.div` - border-left: 0.1em solid ${borderColor}; - border-right: 0.1em solid ${borderColor}; - border-bottom: 0.1em solid ${borderColor}; - border-bottom-left-radius: 0.2em; - border-bottom-right-radius: 0.2em; - padding-top: 1em; - padding-bottom: 1em; -`; - -const MessageText = styled.div` - font-size: small; - padding-left: 0.5em; -`; - -const MessageContainer = styled.div` - padding-top: 0.5em; - padding-bottom: 0.5em; -`; - -const PlainCode = ({ text }: { text: string }) => { - return {replaceSpaceAndTabChar(text)}; -}; - -const HighlightedCode = ({ text }: { text: string }) => { - return {replaceSpaceAndTabChar(text)}; -}; - -const Message = ({ - message, - borderLeftColor, - children -}: { - message: AnalysisMessage, - borderLeftColor: string, - children: React.ReactNode -}) => { - return
- - {message.tokens.map((token, index) => { - switch (token.t) { - case 'text': - return {token.text}; - case 'location': - return - {token.text} - ; - default: - return <>; - } - })} - {children && <> - - {children} - - } - -
; -}; - -const Code = ({ - line, - lineNumber, - highlightedRegion -}: { - line: string, - lineNumber: number, - highlightedRegion?: HighlightedRegion -}) => { - if (!highlightedRegion || !shouldHighlightLine(lineNumber, highlightedRegion)) { - return ; - } - - const partiallyHighlightedLine = parseHighlightedLine(line, lineNumber, highlightedRegion); - - return ( - <> - - - - - ); -}; - -const Line = ({ - line, - lineIndex, - startingLineIndex, - highlightedRegion, - severity, - message, - messageChildren -}: { - line: string, - lineIndex: number, - startingLineIndex: number, - highlightedRegion?: HighlightedRegion, - severity?: ResultSeverity, - message?: AnalysisMessage, - messageChildren?: React.ReactNode, -}) => { - const shouldShowMessage = message && - severity && - highlightedRegion && - highlightedRegion.endLine == startingLineIndex + lineIndex; - - return
-
-
- {startingLineIndex + lineIndex} -
-
- -
-
- {shouldShowMessage && - - - {messageChildren} - - - } -
; -}; - -const FileCodeSnippet = ({ - fileLink, - codeSnippet, - highlightedRegion, - severity, - message, - messageChildren, -}: { - fileLink: FileLink, - codeSnippet?: CodeSnippet, - highlightedRegion?: HighlightedRegion, - severity?: ResultSeverity, - message?: AnalysisMessage, - messageChildren?: React.ReactNode, -}) => { - - const startingLine = codeSnippet?.startLine || 0; - const endingLine = codeSnippet?.endLine || 0; - - const titleFileUri = createRemoteFileRef( - fileLink, - highlightedRegion?.startLine || startingLine, - highlightedRegion?.endLine || endingLine); - - if (!codeSnippet) { - return ( - - - {fileLink.filePath} - - {message && severity && - - {messageChildren} - } - - ); - } - - const code = codeSnippet.text.split('\n'); - - return ( - - - {fileLink.filePath} - - - {code.map((line, index) => ( - - ))} - - - ); -}; - -export default FileCodeSnippet; diff --git a/extensions/ql-vscode/src/remote-queries/view/FullScreenModal.tsx b/extensions/ql-vscode/src/remote-queries/view/FullScreenModal.tsx deleted file mode 100644 index 3806b1d15ff..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/FullScreenModal.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from 'react'; -import * as ReactDOM from 'react-dom'; -import styled from 'styled-components'; -import { XCircleIcon } from '@primer/octicons-react'; - -const Container = styled.div` - position: fixed; - top: 0; - left: 0; - height: 100%; - width: 100%; - opacity: 1; - background-color: var(--vscode-editor-background); - z-index: 5000; - padding-top: 1em; -`; - -const CloseButton = styled.button` - position: absolute; - top: 1em; - right: 1em; - background-color: var(--vscode-editor-background); - border: none; -`; - -const FullScreenModal = ({ - setOpen, - containerElementId, - children -}: { - setOpen: (open: boolean) => void; - containerElementId: string; - children: React.ReactNode -}) => { - const containerElement = document.getElementById(containerElementId); - if (!containerElement) { - throw Error(`Could not find container element. Id: ${containerElementId}`); - } - - return ReactDOM.createPortal( - <> - - setOpen(false)}> - - - {children} - - , - containerElement - ); -}; - -export default FullScreenModal; diff --git a/extensions/ql-vscode/src/remote-queries/view/HorizontalSpace.tsx b/extensions/ql-vscode/src/remote-queries/view/HorizontalSpace.tsx deleted file mode 100644 index 77d1b4b7dc7..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/HorizontalSpace.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import styled from 'styled-components'; - -const HorizontalSpace = styled.div<{ size: 1 | 2 | 3 }>` - flex: 0 0 auto; - display: inline-block; - width: ${props => 0.2 * props.size}em; -`; - -export default HorizontalSpace; diff --git a/extensions/ql-vscode/src/remote-queries/view/LastUpdated.tsx b/extensions/ql-vscode/src/remote-queries/view/LastUpdated.tsx deleted file mode 100644 index 6d4a83760b1..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/LastUpdated.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import * as React from 'react'; -import { RepoPushIcon } from '@primer/octicons-react'; -import styled from 'styled-components'; - -import { humanizeRelativeTime } from '../../pure/time'; - -const IconContainer = styled.span` - flex-grow: 0; - text-align: right; - margin-right: 0; -`; - -const Duration = styled.span` - text-align: left; - width: 8em; - margin-left: 0.5em; -`; - -type Props = { lastUpdated?: number }; - -const LastUpdated = ({ lastUpdated }: Props) => ( - // lastUpdated will be undefined for older results that were - // created before the lastUpdated field was added. - Number.isFinite(lastUpdated) ? ( - <> - - - - - {humanizeRelativeTime(lastUpdated)} - - - ) : ( - <> - ) -); - -export default LastUpdated; diff --git a/extensions/ql-vscode/src/remote-queries/view/RawResultsTable.tsx b/extensions/ql-vscode/src/remote-queries/view/RawResultsTable.tsx deleted file mode 100644 index 4a0bf26a6cb..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/RawResultsTable.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import * as React from 'react'; -import { VSCodeLink } from '@vscode/webview-ui-toolkit/react'; -import { CellValue, RawResultSet, ResultSetSchema } from '../../pure/bqrs-cli-types'; -import { tryGetRemoteLocation } from '../../pure/bqrs-utils'; -import { useState } from 'react'; -import TextButton from './TextButton'; -import { convertNonPrintableChars } from '../../text-utils'; - -const borderColor = 'var(--vscode-editor-snippetFinalTabstopHighlightBorder)'; - -const numOfResultsInContractedMode = 5; - -const Row = ({ - row, - fileLinkPrefix, - sourceLocationPrefix -}: { - row: CellValue[], - fileLinkPrefix: string, - sourceLocationPrefix: string -}) => ( - <> - {row.map((cell, cellIndex) => ( -
- -
- ))} - -); - -const Cell = ({ - value, - fileLinkPrefix, - sourceLocationPrefix -}: { - value: CellValue, - fileLinkPrefix: string - sourceLocationPrefix: string -}) => { - switch (typeof value) { - case 'string': - case 'number': - case 'boolean': - return {convertNonPrintableChars(value.toString())}; - case 'object': { - const url = tryGetRemoteLocation(value.url, fileLinkPrefix, sourceLocationPrefix); - const safeLabel = convertNonPrintableChars(value.label); - if (url) { - return {safeLabel}; - } else { - return {safeLabel}; - } - } - } -}; - -const RawResultsTable = ({ - schema, - results, - fileLinkPrefix, - sourceLocationPrefix -}: { - schema: ResultSetSchema, - results: RawResultSet, - fileLinkPrefix: string, - sourceLocationPrefix: string -}) => { - const [tableExpanded, setTableExpanded] = useState(false); - const numOfResultsToShow = tableExpanded ? results.rows.length : numOfResultsInContractedMode; - const showButton = results.rows.length > numOfResultsInContractedMode; - - // Create n equal size columns. We use minmax(0, 1fr) because the - // minimum width of 1fr is auto, not 0. - // https://css-tricks.com/equal-width-columns-in-css-grid-are-kinda-weird/ - const gridTemplateColumns = `repeat(${schema.columns.length}, minmax(0, 1fr))`; - - return ( - <> -
- {results.rows.slice(0, numOfResultsToShow).map((row, rowIndex) => ( - - ))} -
- { - showButton && - setTableExpanded(!tableExpanded)}> - {tableExpanded ? (View less) : (View all)} - - } - - ); -}; - -export default RawResultsTable; diff --git a/extensions/ql-vscode/src/remote-queries/view/RemoteQueries.tsx b/extensions/ql-vscode/src/remote-queries/view/RemoteQueries.tsx deleted file mode 100644 index 43e534536b9..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/RemoteQueries.tsx +++ /dev/null @@ -1,449 +0,0 @@ -import * as React from 'react'; -import { useEffect, useState } from 'react'; -import * as Rdom from 'react-dom'; -import { Flash, ThemeProvider } from '@primer/react'; -import { ToRemoteQueriesMessage } from '../../pure/interface-types'; -import { AnalysisSummary, RemoteQueryResult } from '../shared/remote-query-result'; -import { MAX_RAW_RESULTS } from '../shared/result-limits'; -import { vscode } from '../../view/vscode-api'; -import { VSCodeBadge, VSCodeButton } from '@vscode/webview-ui-toolkit/react'; -import SectionTitle from './SectionTitle'; -import VerticalSpace from './VerticalSpace'; -import HorizontalSpace from './HorizontalSpace'; -import ViewTitle from './ViewTitle'; -import DownloadButton from './DownloadButton'; -import { AnalysisResults, getAnalysisResultCount } from '../shared/analysis-result'; -import DownloadSpinner from './DownloadSpinner'; -import CollapsibleItem from './CollapsibleItem'; -import { AlertIcon, CodeSquareIcon, FileCodeIcon, RepoIcon, TerminalIcon } from '@primer/octicons-react'; -import AnalysisAlertResult from './AnalysisAlertResult'; -import RawResultsTable from './RawResultsTable'; -import RepositoriesSearch from './RepositoriesSearch'; -import StarCount from './StarCount'; -import SortRepoFilter, { Sort, sorter } from './SortRepoFilter'; -import LastUpdated from './LastUpdated'; -import RepoListCopyButton from './RepoListCopyButton'; - -const numOfReposInContractedMode = 10; - -const emptyQueryResult: RemoteQueryResult = { - queryId: '', - queryTitle: '', - queryFileName: '', - queryFilePath: '', - queryText: '', - language: '', - workflowRunUrl: '', - totalRepositoryCount: 0, - affectedRepositoryCount: 0, - totalResultCount: 0, - executionTimestamp: '', - executionDuration: '', - analysisSummaries: [], - analysisFailures: [], -}; - -const downloadAnalysisResults = (analysisSummary: AnalysisSummary) => { - vscode.postMessage({ - t: 'remoteQueryDownloadAnalysisResults', - analysisSummary - }); -}; - -const downloadAllAnalysesResults = (query: RemoteQueryResult) => { - vscode.postMessage({ - t: 'remoteQueryDownloadAllAnalysesResults', - analysisSummaries: query.analysisSummaries - }); -}; - -const openQueryFile = (queryResult: RemoteQueryResult) => { - vscode.postMessage({ - t: 'openFile', - filePath: queryResult.queryFilePath - }); -}; - -const openQueryTextVirtualFile = (queryResult: RemoteQueryResult) => { - vscode.postMessage({ - t: 'openVirtualFile', - queryText: queryResult.queryText - }); -}; - -function createResultsDescription(queryResult: RemoteQueryResult) { - const reposCount = `${queryResult.totalRepositoryCount} ${queryResult.totalRepositoryCount === 1 ? 'repository' : 'repositories'}`; - return `${queryResult.totalResultCount} results from running against ${reposCount} (${queryResult.executionDuration}), ${queryResult.executionTimestamp}`; -} - -const sumAnalysesResults = (analysesResults: AnalysisResults[]) => - analysesResults.reduce((acc, curr) => acc + getAnalysisResultCount(curr), 0); - -const QueryInfo = (queryResult: RemoteQueryResult) => ( - <> - - {createResultsDescription(queryResult)} - - - openQueryFile(queryResult)}> - - {queryResult.queryFileName} - - - - openQueryTextVirtualFile(queryResult)}> - - Query - - - - - - Logs - - - -); - -const Failures = (queryResult: RemoteQueryResult) => { - if (queryResult.analysisFailures.length === 0) { - return <>; - } - return ( - <> - - - {queryResult.analysisFailures.map((f, i) => ( -
-

- - {f.nwo}: - {f.error} -

- { - i === queryResult.analysisFailures.length - 1 ? <> : - } -
- ))} -
- - ); -}; - -const SummaryTitleWithResults = ({ - queryResult, - analysesResults, - sort, - setSort -}: { - queryResult: RemoteQueryResult, - analysesResults: AnalysisResults[], - sort: Sort, - setSort: (sort: Sort) => void -}) => { - const showDownloadButton = queryResult.totalResultCount !== sumAnalysesResults(analysesResults); - - return ( -
- Repositories with results ({queryResult.affectedRepositoryCount}): - { - showDownloadButton && downloadAllAnalysesResults(queryResult)} /> - } -
- - - -
-
- ); -}; - -const SummaryTitleNoResults = () => ( -
- No results found -
-); - -const SummaryItemDownload = ({ - analysisSummary, - analysisResults -}: { - analysisSummary: AnalysisSummary, - analysisResults: AnalysisResults | undefined -}) => { - if (!analysisResults || analysisResults.status === 'Failed') { - return downloadAnalysisResults(analysisSummary)} />; - } - - if (analysisResults.status === 'InProgress') { - return <> - - - ; - } - - return <>; -}; - -const SummaryItem = ({ - analysisSummary, - analysisResults -}: { - analysisSummary: AnalysisSummary, - analysisResults: AnalysisResults | undefined -}) => ( - <> - - {analysisSummary.nwo} - - - {analysisSummary.resultCount.toString()} - - - - - - - -); - -const Summary = ({ - queryResult, - analysesResults, - sort, - setSort -}: { - queryResult: RemoteQueryResult, - analysesResults: AnalysisResults[], - sort: Sort, - setSort: (sort: Sort) => void -}) => { - const [repoListExpanded, setRepoListExpanded] = useState(false); - const numOfReposToShow = repoListExpanded ? queryResult.analysisSummaries.length : numOfReposInContractedMode; - - return ( - <> - { - queryResult.affectedRepositoryCount === 0 - ? - : - } - -
    - {queryResult.analysisSummaries.slice(0, numOfReposToShow) - .sort(sorter(sort)) - .map((summary, i) => -
  • - a.nwo === summary.nwo)} /> -
  • - )} -
- { - queryResult.analysisSummaries.length > numOfReposInContractedMode && - - } - - ); -}; - -const AnalysesResultsTitle = ({ totalAnalysesResults, totalResults }: { totalAnalysesResults: number, totalResults: number }) => { - if (totalAnalysesResults === totalResults) { - return {totalAnalysesResults} results; - } - - return {totalAnalysesResults}/{totalResults} results; -}; - -const exportResults = () => { - vscode.postMessage({ - t: 'remoteQueryExportResults', - }); -}; - -const AnalysesResultsDescription = ({ - queryResult, - analysesResults, -}: { - queryResult: RemoteQueryResult - analysesResults: AnalysisResults[], -}) => { - const showDownloadsMessage = queryResult.analysisSummaries.some( - s => !analysesResults.some(a => a.nwo === s.nwo && a.status === 'Completed')); - const downloadsMessage = <> - - Some results haven't been downloaded automatically because of their size or because enough were downloaded already. - Download them manually from the list above if you want to see them here. - ; - - const showMaxResultsMessage = analysesResults.some(a => a.rawResults?.capped); - const maxRawResultsMessage = <> - - Some repositories have more than {MAX_RAW_RESULTS} results. We will only show you up to  - {MAX_RAW_RESULTS} results for each repository. - ; - - return ( - <> - {showDownloadsMessage && downloadsMessage} - {showMaxResultsMessage && maxRawResultsMessage} - - ); -}; - -const RepoAnalysisResults = (analysisResults: AnalysisResults) => { - const numOfResults = getAnalysisResultCount(analysisResults); - const title = <> - {analysisResults.nwo} - - {numOfResults.toString()} - ; - - return ( - -
    - {analysisResults.interpretedResults.map((r, i) => -
  • - - -
  • )} -
- {analysisResults.rawResults && - - } -
- ); -}; - -const AnalysesResults = ({ - queryResult, - analysesResults, - totalResults, - sort, -}: { - queryResult: RemoteQueryResult, - analysesResults: AnalysisResults[], - totalResults: number, - sort: Sort -}) => { - const totalAnalysesResults = sumAnalysesResults(analysesResults); - const [filterValue, setFilterValue] = React.useState(''); - - if (totalResults === 0) { - return <>; - } - - return ( - <> - -
-
- -
-
- Export all -
-
- - - - - -
    - {analysesResults - .filter(a => a.interpretedResults.length > 0 || a.rawResults) - .filter(a => a.nwo.toLowerCase().includes(filterValue.toLowerCase())) - .sort(sorter(sort)) - .map(r => -
  • - -
  • )} -
- - ); -}; - -export function RemoteQueries(): JSX.Element { - const [queryResult, setQueryResult] = useState(emptyQueryResult); - const [analysesResults, setAnalysesResults] = useState([]); - const [sort, setSort] = useState('name'); - - useEffect(() => { - window.addEventListener('message', (evt: MessageEvent) => { - if (evt.origin === window.origin) { - const msg: ToRemoteQueriesMessage = evt.data; - if (msg.t === 'setRemoteQueryResult') { - setQueryResult(msg.queryResult); - } else if (msg.t === 'setAnalysesResults') { - setAnalysesResults(msg.analysesResults); - } - } else { - // sanitize origin - const origin = evt.origin.replace(/\n|\r/g, ''); - console.error(`Invalid event origin ${origin}`); - } - }); - }); - - if (!queryResult) { - return
Waiting for results to load.
; - } - - try { - return ( -
- - {queryResult.queryTitle} - - - - - -
- ); - } catch (err) { - console.error(err); - return
There was an error displaying the view.
; - } -} - -Rdom.render( - , - document.getElementById('root'), - // Post a message to the extension when fully loaded. - () => vscode.postMessage({ t: 'remoteQueryLoaded' }) -); diff --git a/extensions/ql-vscode/src/remote-queries/view/RepoListCopyButton.tsx b/extensions/ql-vscode/src/remote-queries/view/RepoListCopyButton.tsx deleted file mode 100644 index a959bf598a5..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/RepoListCopyButton.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react'; -import { vscode } from '../../view/vscode-api'; -import { RemoteQueryResult } from '../shared/remote-query-result'; -import { CopyIcon } from '@primer/octicons-react'; -import { IconButton } from '@primer/react'; - -const copyRepositoryList = (queryResult: RemoteQueryResult) => { - vscode.postMessage({ - t: 'copyRepoList', - queryId: queryResult.queryId - }); -}; - -const RepoListCopyButton = ({ queryResult }: { queryResult: RemoteQueryResult }) => ( - copyRepositoryList(queryResult)} /> -); - -export default RepoListCopyButton; diff --git a/extensions/ql-vscode/src/remote-queries/view/RepositoriesSearch.tsx b/extensions/ql-vscode/src/remote-queries/view/RepositoriesSearch.tsx deleted file mode 100644 index 4209cb4cd3d..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/RepositoriesSearch.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react'; -import { VSCodeTextField } from '@vscode/webview-ui-toolkit/react'; - -interface RepositoriesSearchProps { - filterValue: string; - setFilterValue: (value: string) => void; -} - -const RepositoriesSearch = ({ filterValue, setFilterValue }: RepositoriesSearchProps) => { - return <> - setFilterValue((e.target as HTMLInputElement).value)} - > - - - ; -}; - -export default RepositoriesSearch; diff --git a/extensions/ql-vscode/src/remote-queries/view/SectionTitle.tsx b/extensions/ql-vscode/src/remote-queries/view/SectionTitle.tsx deleted file mode 100644 index f4245c5bff1..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/SectionTitle.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import styled from 'styled-components'; - -const SectionTitle = styled.h2` - font-size: medium; - font-weight: 500; - padding: 0 0.5em 0 0; - margin: 0; - display: inline-block; - vertical-align: middle; -`; - -export default SectionTitle; diff --git a/extensions/ql-vscode/src/remote-queries/view/SortRepoFilter.tsx b/extensions/ql-vscode/src/remote-queries/view/SortRepoFilter.tsx deleted file mode 100644 index dfd9cd32d0e..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/SortRepoFilter.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import * as React from 'react'; -import { FilterIcon } from '@primer/octicons-react'; -import { ActionList, ActionMenu, IconButton } from '@primer/react'; -import styled from 'styled-components'; - -const SortWrapper = styled.span` - flex-grow: 2; - text-align: right; - margin-right: 0; -`; - -export type Sort = 'name' | 'stars' | 'results' | 'lastUpdated'; -type Props = { - sort: Sort; - setSort: (sort: Sort) => void; -}; - -type Sortable = { - nwo: string; - starCount?: number; - resultCount?: number; - lastUpdated?: number; -}; - -const sortBy = [ - { name: 'Sort by Name', sort: 'name' }, - { name: 'Sort by Results', sort: 'results' }, - { name: 'Sort by Stars', sort: 'stars' }, - { name: 'Sort by Last Updated', sort: 'lastUpdated' }, -]; - -export function sorter(sort: Sort): (left: Sortable, right: Sortable) => number { - // stars and results are highest to lowest - // name is alphabetical - return (left: Sortable, right: Sortable) => { - if (sort === 'stars') { - const stars = (right.starCount || 0) - (left.starCount || 0); - if (stars !== 0) { - return stars; - } - } - if (sort === 'lastUpdated') { - const lastUpdated = (right.lastUpdated || 0) - (left.lastUpdated || 0); - if (lastUpdated !== 0) { - return lastUpdated; - } - } - if (sort === 'results') { - const results = (right.resultCount || 0) - (left.resultCount || 0); - if (results !== 0) { - return results; - } - } - - // Fall back on name compare if results, stars, or lastUpdated are equal - return left.nwo.localeCompare(right.nwo, undefined, { sensitivity: 'base' }); - }; -} - -const SortRepoFilter = ({ sort, setSort }: Props) => { - return - - - - - - - - {sortBy.map((type, index) => ( - setSort(type.sort as Sort)} - > - {type.name} - - ))} - - - - ; -}; - -export default SortRepoFilter; diff --git a/extensions/ql-vscode/src/remote-queries/view/StarCount.tsx b/extensions/ql-vscode/src/remote-queries/view/StarCount.tsx deleted file mode 100644 index 4aff25a3ef3..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/StarCount.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import * as React from 'react'; -import { StarIcon } from '@primer/octicons-react'; -import styled from 'styled-components'; - -const Star = styled.span` - flex-grow: 2; - text-align: right; - margin-right: 0; -`; - -const Count = styled.span` - text-align: left; - width: 2em; - margin-left: 0.5em; - margin-right: 1.5em; -`; - -type Props = { starCount?: number }; - -const StarCount = ({ starCount }: Props) => ( - Number.isFinite(starCount) ? ( - <> - - - - - {displayStars(starCount!)} - - - ) : ( - <> - ) -); - -function displayStars(starCount: number) { - if (starCount > 10000) { - return `${(starCount / 1000).toFixed(0)}k`; - } - if (starCount > 1000) { - return `${(starCount / 1000).toFixed(1)}k`; - } - return starCount.toFixed(0); -} - -export default StarCount; diff --git a/extensions/ql-vscode/src/remote-queries/view/TextButton.tsx b/extensions/ql-vscode/src/remote-queries/view/TextButton.tsx deleted file mode 100644 index e7394464584..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/TextButton.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import * as React from 'react'; -import styled from 'styled-components'; - -type Size = 'x-small' | 'small' | 'medium' | 'large' | 'x-large'; - -const StyledButton = styled.button<{ size: Size }>` - background: none; - color: var(--vscode-textLink-foreground); - border: none; - cursor: pointer; - font-size: ${props => props.size}; -`; - -const TextButton = ({ - size, - onClick, - children -}: { - size: Size, - onClick: () => void, - children: React.ReactNode -}) => ( - - {children} - -); - -export default TextButton; diff --git a/extensions/ql-vscode/src/remote-queries/view/VerticalSpace.tsx b/extensions/ql-vscode/src/remote-queries/view/VerticalSpace.tsx deleted file mode 100644 index bd01ccfc91c..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/VerticalSpace.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import styled from 'styled-components'; - -const VerticalSpace = styled.div<{ size: 1 | 2 | 3 }>` - flex: 0 0 auto; - height: ${props => 0.5 * props.size}em; -`; - -export default VerticalSpace; diff --git a/extensions/ql-vscode/src/remote-queries/view/ViewTitle.tsx b/extensions/ql-vscode/src/remote-queries/view/ViewTitle.tsx deleted file mode 100644 index db14cdade28..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/ViewTitle.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import styled from 'styled-components'; - -const ViewTitle = styled.h1` - font-size: large; - margin-bottom: 0.5em; - font-weight: 500; -`; - -export default ViewTitle; diff --git a/extensions/ql-vscode/src/remote-queries/view/baseStyles.css b/extensions/ql-vscode/src/remote-queries/view/baseStyles.css deleted file mode 100644 index 4d3d4d543a3..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/baseStyles.css +++ /dev/null @@ -1,4 +0,0 @@ -body { - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, - sans-serif, Apple Color Emoji, Segoe UI Emoji; -} diff --git a/extensions/ql-vscode/src/remote-queries/view/remoteQueries.css b/extensions/ql-vscode/src/remote-queries/view/remoteQueries.css deleted file mode 100644 index 943de24f482..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/remoteQueries.css +++ /dev/null @@ -1,53 +0,0 @@ -.vscode-codeql__remote-queries { - max-width: 55em; -} - -.vscode-codeql__query-info-link { - text-decoration: none; - padding-right: 1em; - color: var(--vscode-editor-foreground); -} - -.vscode-codeql__query-info-link:hover { - color: var(--vscode-editor-foreground); -} - -.vscode-codeql__query-summary-container { - padding-top: 1.5em; - display: flex; -} - -.vscode-codeql__analysis-summaries-list-item { - margin-top: 0.5em; - display: flex; -} - -.vscode-codeql__analyses-results-list-item { - padding-top: 0.5em; -} - -.vscode-codeql__analysis-item { - padding-right: 0.1em; -} - -.vscode-codeql__expand-button { - background: none; - color: var(--vscode-textLink-foreground); - border: none; - cursor: pointer; - padding-top: 1em; - font-size: x-small; -} - -.vscode-codeql__analysis-failure { - margin: 0; - font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, - Liberation Mono, monospace; - color: var(--vscode-editor-foreground); -} - -.vscode-codeql__flat-list { - list-style-type: none; - margin: 0; - padding: 0.5em 0 0 0; -} diff --git a/extensions/ql-vscode/src/remote-queries/view/tsconfig.json b/extensions/ql-vscode/src/remote-queries/view/tsconfig.json deleted file mode 100644 index 8350f8cfbe7..00000000000 --- a/extensions/ql-vscode/src/remote-queries/view/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "module": "esnext", - "moduleResolution": "node", - "target": "es6", - "outDir": "out", - "lib": ["ES2021", "dom"], - "jsx": "react", - "sourceMap": true, - "rootDir": "..", - "strict": true, - "noUnusedLocals": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "experimentalDecorators": true - }, - "exclude": ["node_modules"] -} diff --git a/extensions/ql-vscode/src/run-queries-shared.ts b/extensions/ql-vscode/src/run-queries-shared.ts new file mode 100644 index 00000000000..03e25df46dc --- /dev/null +++ b/extensions/ql-vscode/src/run-queries-shared.ts @@ -0,0 +1,644 @@ +import type { Position } from "./query-server/messages-shared"; +import type { DatabaseInfo, QueryMetadata } from "./common/interface-types"; +import { join, parse, dirname, basename } from "path"; +import type { Range, TextEditor } from "vscode"; +import { Uri, window, workspace } from "vscode"; +import { isCanary, VSCODE_SAVE_BEFORE_START_SETTING } from "./config"; +import { + pathExists, + readFile, + createWriteStream, + remove, + readdir, + ensureDir, + writeFile, +} from "fs-extra"; +import type { InitialQueryInfo } from "./query-results"; +import { ensureMetadataIsComplete } from "./query-results"; +import { isQuickQueryPath } from "./local-queries/quick-query"; +import { nanoid } from "nanoid"; +import type { CodeQLCliServer } from "./codeql-cli/cli"; +import { SELECT_QUERY_NAME } from "./language-support"; +import type { DatabaseManager } from "./databases/local-databases"; +import type { + DecodedBqrsChunk, + BqrsEntityValue, +} from "./common/bqrs-cli-types"; +import type { BaseLogger } from "./common/logging"; +import { showAndLogWarningMessage } from "./common/logging"; +import { extLogger } from "./common/logging/vscode"; +import { getErrorMessage } from "./common/helpers-pure"; +import { createHash } from "crypto"; +import { QueryOutputDir } from "./local-queries/query-output-dir"; +import { progressUpdate } from "./common/vscode/progress"; +import type { ProgressCallback } from "./common/vscode/progress"; + +/** + * run-queries.ts + * -------------- + * + * Compiling and running QL queries. + */ + +/** + * Holds the paths to the various structured log summary files generated for a query evaluation. + */ +export interface EvaluatorLogPaths { + log: string; + humanReadableSummary: string | undefined; + endSummary: string | undefined; + jsonSummary: string | undefined; + summarySymbols: string | undefined; +} + +export class QueryEvaluationInfo extends QueryOutputDir { + // We extend `QueryOutputDir`, rather than having it as a property, because we need + // `QueryOutputDir`'s `querySaveDir` property to be a property of `QueryEvaluationInfo`. This is + // because `QueryEvaluationInfo` is serialized directly as JSON, and before we hoisted + // `QueryOutputDir` out into a base class, `querySaveDir` was a property on `QueryEvaluationInfo` + // itself. + + /** + * Note that in the {@link readQueryHistoryFromFile} method, we create a QueryEvaluationInfo instance + * by explicitly setting the prototype in order to avoid calling this constructor. + */ + constructor( + querySaveDir: string, + public readonly outputBaseName: string, + public readonly dbItemPath: string, + public readonly databaseHasMetadataFile: boolean, + public readonly quickEvalPosition?: Position, + public readonly metadata?: QueryMetadata, + ) { + super(querySaveDir); + } + + get resultsPath() { + return this.getBqrsPath(this.outputBaseName); + } + + get interpretedResultsPath() { + return this.getInterpretedResultsPath( + this.metadata?.kind, + this.outputBaseName, + ); + } + + get csvPath() { + return this.getCsvPath(this.outputBaseName); + } + + get dilPath() { + return this.getDilPath(this.outputBaseName); + } + + getSortedResultSetPath(resultSetName: string) { + const hasher = createHash("sha256"); + hasher.update(resultSetName); + return this.getBqrsPath( + `${this.outputBaseName}-sorted-${hasher.digest("hex")}`, + ); + } + + /** + * Holds if this query can in principle produce interpreted results. + */ + canHaveInterpretedResults(): boolean { + if (!this.databaseHasMetadataFile) { + void extLogger.log( + "Cannot produce interpreted results since the database does not have a .dbinfo or codeql-database.yml file.", + ); + return false; + } + + const kind = this.metadata?.kind; + const hasKind = !!kind; + if (!hasKind) { + void extLogger.log( + "Cannot produce interpreted results since the query does not have @kind metadata.", + ); + return false; + } + + // Graph queries only return interpreted results if we are in canary mode. + if (kind === "graph") { + return isCanary(); + } + + // table is the default query kind. It does not produce interpreted results. + // any query kind that is not table can, in principle, produce interpreted results. + return kind !== "table"; + } + + /** + * Holds if this query actually has produced interpreted results. + */ + async hasInterpretedResults(): Promise { + return pathExists(this.interpretedResultsPath); + } + + /** + * Holds if this query already has DIL produced + */ + async hasDil(): Promise { + return pathExists(this.dilPath); + } + + /** + * Holds if this query already has CSV results produced + */ + async hasCsv(): Promise { + return pathExists(this.csvPath); + } + + /** + * Returns the path to the DIL file produced by this query. If the query has not yet produced DIL, + * this will return first create the DIL file and then return the path to the DIL file. + */ + async ensureDilPath(cliServer: CodeQLCliServer): Promise { + if (await this.hasDil()) { + return this.dilPath; + } + const compiledQuery = this.compileQueryPath; + if (!(await pathExists(compiledQuery))) { + // We expect the qlo to be missing so we should ignore it + throw new Error( + `DIL was not found. Expected location: '${this.dilPath}'`, + ); + } + + await cliServer.generateDil(compiledQuery, this.dilPath); + return this.dilPath; + } + + /** + * Holds if this query already has a completed structured evaluator log + */ + async hasEvalLog(): Promise { + return pathExists(this.evalLogPath); + } + + /** + * Creates the CSV file containing the results of this query. This will only be called if the query + * does not have interpreted results and the CSV file does not already exist. + * + * @return Promise if the operation creates the file. Promise if the operation does + * not create the file. + * + * @throws Error if the operation fails. + */ + async exportCsvResults( + cliServer: CodeQLCliServer, + csvPath: string, + ): Promise { + const resultSet = await this.chooseResultSet(cliServer); + if (!resultSet) { + void showAndLogWarningMessage(extLogger, "Query has no result set."); + return false; + } + let stopDecoding = false; + const out = createWriteStream(csvPath); + + const promise: Promise = new Promise((resolve, reject) => { + out.on("finish", () => resolve(true)); + out.on("error", () => { + if (!stopDecoding) { + stopDecoding = true; + reject(new Error(`Failed to write CSV results to ${csvPath}`)); + } + }); + }); + + let nextOffset: number | undefined = 0; + do { + const chunk: DecodedBqrsChunk = await cliServer.bqrsDecode( + this.resultsPath, + resultSet, + { + pageSize: 100, + offset: nextOffset, + }, + ); + chunk.tuples.forEach((tuple) => { + out.write( + `${tuple + .map((v, i) => { + if (chunk.columns[i].kind === "String") { + return `"${ + typeof v === "string" ? v.replaceAll('"', '""') : v.toString() + }"`; + } else if (chunk.columns[i].kind === "Entity") { + return (v as BqrsEntityValue).label; + } else { + return v; + } + }) + .join(",")}\n`, + ); + }); + nextOffset = chunk.next; + } while (nextOffset && !stopDecoding); + out.end(); + + return promise; + } + + /** + * Choose the name of the result set to run. If the `#select` set exists, use that. Otherwise, + * arbitrarily choose the first set. Most of the time, this will be correct. + * + * If the query has no result sets, then return undefined. + */ + async chooseResultSet(cliServer: CodeQLCliServer) { + const resultSets = (await cliServer.bqrsInfo(this.resultsPath))[ + "result-sets" + ]; + if (!resultSets.length) { + return undefined; + } + if (resultSets.find((r) => r.name === SELECT_QUERY_NAME)) { + return SELECT_QUERY_NAME; + } + return resultSets[0].name; + } + /** + * Returns the path to the CSV alerts interpretation of this query results. If CSV results have + * not yet been produced, this will return first create the CSV results and then return the path. + * + * This method only works for queries with interpreted results. + */ + async ensureCsvAlerts( + cliServer: CodeQLCliServer, + dbm: DatabaseManager, + ): Promise { + if (await this.hasCsv()) { + return this.csvPath; + } + + const dbItem = dbm.findDatabaseItem(Uri.file(this.dbItemPath)); + if (!dbItem) { + throw new Error( + `Cannot produce CSV results because database is missing. ${this.dbItemPath}`, + ); + } + + let sourceInfo; + if (dbItem.sourceArchive !== undefined) { + sourceInfo = { + sourceArchive: dbItem.sourceArchive.fsPath, + sourceLocationPrefix: await dbItem.getSourceLocationPrefix(cliServer), + }; + } + await cliServer.generateResultsCsv( + ensureMetadataIsComplete(this.metadata), + this.resultsPath, + this.csvPath, + sourceInfo, + ); + return this.csvPath; + } + + /** + * Cleans this query's results directory. + */ + async deleteQuery(): Promise { + await remove(this.querySaveDir); + } +} + +export interface QueryWithResults { + readonly query: QueryEvaluationInfo; + readonly logFileLocation?: string; + readonly successful: boolean; + readonly message: string; +} + +/** + * Validates that the specified URI represents a QL query, and returns the file system path to that + * query. + * + * If `allowLibraryFiles` is set, ".qll" files will also be allowed as query files. + */ +export function validateQueryUri( + queryUri: Uri, + allowLibraryFiles: boolean, +): string { + if (queryUri.scheme !== "file") { + throw new Error("Can only run queries that are on disk."); + } + const queryPath = queryUri.fsPath; + validateQueryPath(queryPath, allowLibraryFiles); + return queryPath; +} + +/** + * Validates that the specified path represents a QL query + * + * If `allowLibraryFiles` is set, ".qll" files will also be allowed as query files. + */ +export function validateQueryPath( + queryPath: string, + allowLibraryFiles: boolean, +): void { + if (allowLibraryFiles) { + if (!(queryPath.endsWith(".ql") || queryPath.endsWith(".qll"))) { + throw new Error( + 'The selected resource is not a CodeQL file; It should have the extension ".ql" or ".qll".', + ); + } + } else { + if (!queryPath.endsWith(".ql")) { + throw new Error( + 'The selected resource is not a CodeQL query file; It should have the extension ".ql".', + ); + } + } +} + +/** + * Validates that the specified URI represents a QL query suite (QLS), and returns the file system + * path to that suite. + */ +export function validateQuerySuiteUri(suiteUri: Uri): string { + if (suiteUri.scheme !== "file") { + throw new Error("Can only run queries that are on disk."); + } + const suitePath = suiteUri.fsPath; + if (!suitePath.endsWith(".qls")) { + throw new Error( + 'The selected resource is not a CodeQL query suite; It should have the extension ".qls".', + ); + } + return suitePath; +} + +export interface QuickEvalContext { + quickEvalPosition: Position; + quickEvalText: string; + quickEvalCount: boolean; +} + +/** + * Gets the selection to be used for quick evaluation. + * + * If `range` is specified, then that range will be used. Otherwise, the current selection will be + * used. + */ +export async function getQuickEvalContext( + range: Range | undefined, + isCountOnly: boolean, +): Promise { + const editor = window.activeTextEditor; + if (editor === undefined) { + throw new Error("Can't run quick evaluation without an active editor."); + } + // For Quick Evaluation, the selected position comes from the active editor, but it's possible + // that query itself was a different file. We need to validate the path of the file we're using + // for the QuickEval selection in case it was different. + validateQueryUri(editor.document.uri, true); + const quickEvalPosition = await getSelectedPosition(editor, range); + let quickEvalText: string; + if (!editor.selection?.isEmpty) { + quickEvalText = editor.document.getText(editor.selection).trim(); + } else { + // capture the entire line if the user didn't select anything + const line = editor.document.lineAt(editor.selection.active.line); + quickEvalText = line.text.trim(); + } + + return { + quickEvalPosition, + quickEvalText, + quickEvalCount: isCountOnly, + }; +} + +/** + * Information about which query will be to be run, optionally including a QuickEval selection. + */ +export interface SelectedQuery { + queryPath: string; + quickEval?: QuickEvalContext; +} + +/** Gets the selected position within the given editor. */ +async function getSelectedPosition( + editor: TextEditor, + range?: Range, +): Promise { + const selectedRange = range || editor.selection; + const pos = selectedRange.start; + const posEnd = selectedRange.end; + // Convert from 0-based to 1-based line and column numbers. + return { + fileName: await convertToQlPath(editor.document.fileName), + line: pos.line + 1, + column: pos.character + 1, + endLine: posEnd.line + 1, + endColumn: posEnd.character + 1, + }; +} + +type SaveBeforeStartMode = + | "nonUntitledEditorsInActiveGroup" + | "allEditorsInActiveGroup" + | "none"; + +/** + * Saves dirty files before running queries, based on the user's settings. + */ +export async function saveBeforeStart(): Promise { + const mode: SaveBeforeStartMode = + (VSCODE_SAVE_BEFORE_START_SETTING.getValue({ + languageId: "ql", + }) as SaveBeforeStartMode) ?? "nonUntitledEditorsInActiveGroup"; + + // Despite the names of the modes, the VS Code implementation doesn't restrict itself to the + // current tab group. It saves all dirty files in all groups. We'll do the same. + switch (mode) { + case "nonUntitledEditorsInActiveGroup": + await workspace.saveAll(false); + break; + + case "allEditorsInActiveGroup": + // The VS Code implementation of this mode only saves an untitled file if it is the document + // in the active editor. That's too much work for us, so we'll just live with the inconsistency. + await workspace.saveAll(true); + break; + + case "none": + break; + + default: + // Unexpected value. Fall back to the default behavior. + await workspace.saveAll(false); + break; + } +} + +/** + * @param filePath This needs to be equivalent to Java's `Path.toRealPath(NO_FOLLOW_LINKS)` + */ +async function convertToQlPath(filePath: string): Promise { + if (process.platform === "win32") { + if (parse(filePath).root === filePath) { + // Java assumes uppercase drive letters are canonical. + return filePath.toUpperCase(); + } else { + const dir = await convertToQlPath(dirname(filePath)); + const fileName = basename(filePath); + const fileNames = await readdir(dir); + for (const name of fileNames) { + // Leave the locale argument empty so that the default OS locale is used. + // We do this because this operation works on filesystem entities, which + // use the os locale, regardless of the locale of the running VS Code instance. + if ( + fileName.localeCompare(name, undefined, { sensitivity: "accent" }) === + 0 + ) { + return join(dir, name); + } + } + } + throw new Error(`Can't convert path to form suitable for QL: ${filePath}`); + } else { + return filePath; + } +} + +/** + * Determines the initial information for a query. This is everything of interest + * we know about this query that is available before it is run. + * + * @param selectedQuery The query to run, including any quickeval info. + * @param databaseInfo The database to run the query against. + * @param outputDir The output directory for this query. + * @returns The initial information for the query to be run. + */ +export async function createInitialQueryInfo( + selectedQuery: SelectedQuery, + databaseInfo: DatabaseInfo, + outputDir: QueryOutputDir, +): Promise { + const isQuickEval = selectedQuery.quickEval !== undefined; + const isQuickEvalCount = selectedQuery.quickEval?.quickEvalCount; + return { + queryPath: selectedQuery.queryPath, + isQuickEval, + isQuickEvalCount, + isQuickQuery: isQuickQueryPath(selectedQuery.queryPath), + databaseInfo, + id: `${basename(selectedQuery.queryPath)}-${nanoid()}`, + start: new Date(), + ...(selectedQuery.quickEval !== undefined + ? { + queryText: selectedQuery.quickEval.quickEvalText, + quickEvalPosition: selectedQuery.quickEval.quickEvalPosition, + } + : { + queryText: await readFile(selectedQuery.queryPath, "utf8"), + }), + outputDir, + }; +} + +export async function generateEvalLogSummaries( + cliServer: CodeQLCliServer, + outputDir: QueryOutputDir, + progress: ProgressCallback, +): Promise { + const log = outputDir.evalLogPath; + if (!(await pathExists(log))) { + // No raw JSON log, so we can't generate any summaries. + return undefined; + } + let humanReadableSummary: string | undefined = undefined; + let endSummary: string | undefined = undefined; + progress(progressUpdate(1, 3, "Generating evaluator log summary")); + if (await generateHumanReadableLogSummary(cliServer, outputDir)) { + humanReadableSummary = outputDir.evalLogSummaryPath; + endSummary = outputDir.evalLogEndSummaryPath; + } + let jsonSummary: string | undefined = undefined; + let summarySymbols: string | undefined = undefined; + if (isCanary()) { + // Generate JSON summary for viewer. + progress(progressUpdate(2, 3, "Generating JSON log summary")); + jsonSummary = outputDir.jsonEvalLogSummaryPath; + await cliServer.generateJsonLogSummary(log, jsonSummary); + + if (humanReadableSummary !== undefined) { + summarySymbols = outputDir.evalLogSummarySymbolsPath; + } + } + + return { + log, + humanReadableSummary, + endSummary, + jsonSummary, + summarySymbols, + }; +} + +/** + * Calls the appropriate CLI command to generate a human-readable log summary. + * @param cliServer The cli server client. + * @param outputDir The query's output directory, where all of the logs are located. + * @returns True if the summary and end summary were generated, or false if not. + */ +async function generateHumanReadableLogSummary( + cliServer: CodeQLCliServer, + outputDir: QueryOutputDir, +): Promise { + try { + await cliServer.generateLogSummary( + outputDir.evalLogPath, + outputDir.evalLogSummaryPath, + outputDir.evalLogEndSummaryPath, + ); + return true; + } catch (e) { + void showAndLogWarningMessage( + extLogger, + `Failed to generate human-readable structured evaluator log summary. Reason: ${getErrorMessage( + e, + )}`, + ); + return false; + } +} + +/** + * Logs the end summary to the Output window and log file. + * @param logSummaryPath Path to the human-readable log summary + * @param qs The query server client. + */ +export async function logEndSummary( + endSummary: string, + logger: BaseLogger, +): Promise { + try { + const endSummaryContent = await readFile(endSummary, "utf-8"); + void logger.log(" --- Evaluator Log Summary --- "); + void logger.log(endSummaryContent); + } catch { + void showAndLogWarningMessage( + extLogger, + `Could not read structured evaluator log end of summary file at ${endSummary}.`, + ); + } +} + +/** + * Creates a file in the query directory that indicates when this query was created. + * This is important for keeping track of when queries should be removed. + * + * @param storagePath The directory that will contain all files relevant to a query result. + * It does not need to exist. + */ +export async function createTimestampFile(storagePath: string) { + const timestampPath = join(storagePath, "timestamp"); + await ensureDir(storagePath); + await writeFile(timestampPath, Date.now().toString(), "utf8"); +} diff --git a/extensions/ql-vscode/src/run-queries.ts b/extensions/ql-vscode/src/run-queries.ts deleted file mode 100644 index 814af7684da..00000000000 --- a/extensions/ql-vscode/src/run-queries.ts +++ /dev/null @@ -1,972 +0,0 @@ -import * as crypto from 'crypto'; -import * as fs from 'fs-extra'; -import * as tmp from 'tmp-promise'; -import * as path from 'path'; -import { nanoid } from 'nanoid'; -import { - CancellationToken, - ConfigurationTarget, - Range, - TextDocument, - TextEditor, - Uri, - window -} from 'vscode'; -import { ErrorCodes, ResponseError } from 'vscode-languageclient'; - -import * as cli from './cli'; -import * as config from './config'; -import { DatabaseItem, DatabaseManager } from './databases'; -import { - createTimestampFile, - getOnDiskWorkspaceFolders, - showAndLogErrorMessage, - showAndLogWarningMessage, - tryGetQueryMetadata, - upgradesTmpDir -} from './helpers'; -import { ProgressCallback, UserCancellationException } from './commandRunner'; -import { DatabaseInfo, QueryMetadata } from './pure/interface-types'; -import { logger } from './logging'; -import * as messages from './pure/messages'; -import { InitialQueryInfo, LocalQueryInfo } from './query-results'; -import * as qsClient from './queryserver-client'; -import { isQuickQueryPath } from './quick-query'; -import { compileDatabaseUpgradeSequence, hasNondestructiveUpgradeCapabilities, upgradeDatabaseExplicit } from './upgrades'; -import { ensureMetadataIsComplete } from './query-results'; -import { SELECT_QUERY_NAME } from './contextual/locationFinder'; -import { DecodedBqrsChunk } from './pure/bqrs-cli-types'; -import { getErrorMessage } from './pure/helpers-pure'; - -/** - * run-queries.ts - * -------------- - * - * Compiling and running QL queries. - */ - -/** - * Information about which query will be to be run. `quickEvalPosition` and `quickEvalText` - * is only filled in if the query is a quick query. - */ -interface SelectedQuery { - queryPath: string; - quickEvalPosition?: messages.Position; - quickEvalText?: string; -} - -/** - * A collection of evaluation-time information about a query, - * including the query itself, and where we have decided to put - * temporary files associated with it, such as the compiled query - * output and results. - */ -export class QueryEvaluationInfo { - - /** - * Note that in the {@link FullQueryInfo.slurp} method, we create a QueryEvaluationInfo instance - * by explicitly setting the prototype in order to avoid calling this constructor. - */ - constructor( - public readonly querySaveDir: string, - public readonly dbItemPath: string, - private readonly databaseHasMetadataFile: boolean, - public readonly queryDbscheme: string, // the dbscheme file the query expects, based on library path resolution - public readonly quickEvalPosition?: messages.Position, - public readonly metadata?: QueryMetadata, - public readonly templates?: messages.TemplateDefinitions - ) { - /**/ - } - - get dilPath() { - return path.join(this.querySaveDir, 'results.dil'); - } - - get csvPath() { - return path.join(this.querySaveDir, 'results.csv'); - } - - get compiledQueryPath() { - return path.join(this.querySaveDir, 'compiledQuery.qlo'); - } - - get logPath() { - return qsClient.findQueryLogFile(this.querySaveDir); - } - - get evalLogPath() { - return qsClient.findQueryEvalLogFile(this.querySaveDir); - } - - get evalLogSummaryPath() { - return qsClient.findQueryEvalLogSummaryFile(this.querySaveDir); - } - - get jsonEvalLogSummaryPath() { - return qsClient.findJsonQueryEvalLogSummaryFile(this.querySaveDir); - } - - get evalLogEndSummaryPath() { - return qsClient.findQueryEvalLogEndSummaryFile(this.querySaveDir); - } - - get resultsPaths() { - return { - resultsPath: path.join(this.querySaveDir, 'results.bqrs'), - interpretedResultsPath: path.join(this.querySaveDir, - this.metadata?.kind === 'graph' - ? 'graphResults' - : 'interpretedResults.sarif' - ), - }; - } - - getSortedResultSetPath(resultSetName: string) { - return path.join(this.querySaveDir, `sortedResults-${resultSetName}.bqrs`); - } - - /** - * Creates a file in the query directory that indicates when this query was created. - * This is important for keeping track of when queries should be removed. - */ - async createTimestampFile() { - await createTimestampFile(this.querySaveDir); - } - - async run( - qs: qsClient.QueryServerClient, - upgradeQlo: string | undefined, - availableMlModels: cli.MlModelInfo[], - dbItem: DatabaseItem, - progress: ProgressCallback, - token: CancellationToken, - queryInfo?: LocalQueryInfo, - ): Promise { - if (!dbItem.contents || dbItem.error) { - throw new Error('Can\'t run query on invalid database.'); - } - - let result: messages.EvaluationResult | null = null; - - const callbackId = qs.registerCallback(res => { - result = { - ...res, - logFileLocation: this.logPath - }; - }); - - const availableMlModelUris: messages.MlModel[] = availableMlModels.map(model => ({ uri: Uri.file(model.path).toString(true) })); - - const queryToRun: messages.QueryToRun = { - resultsPath: this.resultsPaths.resultsPath, - qlo: Uri.file(this.compiledQueryPath).toString(), - compiledUpgrade: upgradeQlo && Uri.file(upgradeQlo).toString(), - allowUnknownTemplates: true, - templateValues: this.templates, - availableMlModels: availableMlModelUris, - id: callbackId, - timeoutSecs: qs.config.timeoutSecs, - }; - - const dataset: messages.Dataset = { - dbDir: dbItem.contents.datasetUri.fsPath, - workingSet: 'default' - }; - if (queryInfo && await qs.cliServer.cliConstraints.supportsPerQueryEvalLog()) { - await qs.sendRequest(messages.startLog, { - db: dataset, - logPath: this.evalLogPath, - }); - - } - const params: messages.EvaluateQueriesParams = { - db: dataset, - evaluateId: callbackId, - queries: [queryToRun], - stopOnError: false, - useSequenceHint: false - }; - try { - await qs.sendRequest(messages.runQueries, params, token, progress); - if (qs.config.customLogDirectory) { - void showAndLogWarningMessage( - `Custom log directories are no longer supported. The "codeQL.runningQueries.customLogDirectory" setting is deprecated. Unset the setting to stop seeing this message. Query logs saved to ${this.logPath}.` - ); - } - } finally { - qs.unRegisterCallback(callbackId); - if (queryInfo && await qs.cliServer.cliConstraints.supportsPerQueryEvalLog()) { - await qs.sendRequest(messages.endLog, { - db: dataset, - logPath: this.evalLogPath, - }); - if (await this.hasEvalLog()) { - this.displayHumanReadableLogSummary(queryInfo, qs); - if (config.isCanary()) { // Generate JSON summary for viewer. - await qs.cliServer.generateJsonLogSummary(this.evalLogPath, this.jsonEvalLogSummaryPath); - queryInfo.jsonEvalLogSummaryLocation = this.jsonEvalLogSummaryPath; - } - } else { - void showAndLogWarningMessage(`Failed to write structured evaluator log to ${this.evalLogPath}.`); - } - } - } - return result || { - evaluationTime: 0, - message: 'No result from server', - queryId: -1, - runId: callbackId, - resultType: messages.QueryResultType.OTHER_ERROR - }; - } - - async compile( - qs: qsClient.QueryServerClient, - program: messages.QlProgram, - progress: ProgressCallback, - token: CancellationToken, - ): Promise { - let compiled: messages.CheckQueryResult | undefined; - try { - const target = this.quickEvalPosition ? { - quickEval: { quickEvalPos: this.quickEvalPosition } - } : { query: {} }; - const params: messages.CompileQueryParams = { - compilationOptions: { - computeNoLocationUrls: true, - failOnWarnings: false, - fastCompilation: false, - includeDilInQlo: true, - localChecking: false, - noComputeGetUrl: false, - noComputeToString: false, - computeDefaultStrings: true, - emitDebugInfo: true - }, - extraOptions: { - timeoutSecs: qs.config.timeoutSecs - }, - queryToCheck: program, - resultPath: this.compiledQueryPath, - target, - }; - - compiled = await qs.sendRequest(messages.compileQuery, params, token, progress); - } finally { - void qs.logger.log(' - - - COMPILATION DONE - - - ', { additionalLogLocation: this.logPath }); - } - return (compiled?.messages || []).filter(msg => msg.severity === messages.Severity.ERROR); - } - - /** - * Holds if this query can in principle produce interpreted results. - */ - canHaveInterpretedResults(): boolean { - if (!this.databaseHasMetadataFile) { - void logger.log('Cannot produce interpreted results since the database does not have a .dbinfo or codeql-database.yml file.'); - return false; - } - - const kind = this.metadata?.kind; - const hasKind = !!kind; - if (!hasKind) { - void logger.log('Cannot produce interpreted results since the query does not have @kind metadata.'); - return false; - } - - // Graph queries only return interpreted results if we are in canary mode. - if (kind === 'graph') { - return config.isCanary(); - } - - // table is the default query kind. It does not produce interpreted results. - // any query kind that is not table can, in principle, produce interpreted results. - return kind !== 'table'; - } - - /** - * Holds if this query actually has produced interpreted results. - */ - async hasInterpretedResults(): Promise { - return fs.pathExists(this.resultsPaths.interpretedResultsPath); - } - - /** - * Holds if this query already has DIL produced - */ - async hasDil(): Promise { - return fs.pathExists(this.dilPath); - } - - /** - * Holds if this query already has CSV results produced - */ - async hasCsv(): Promise { - return fs.pathExists(this.csvPath); - } - - /** - * Returns the path to the DIL file produced by this query. If the query has not yet produced DIL, - * this will return first create the DIL file and then return the path to the DIL file. - */ - async ensureDilPath(qs: qsClient.QueryServerClient): Promise { - if (await this.hasDil()) { - return this.dilPath; - } - - if (!(await fs.pathExists(this.compiledQueryPath))) { - throw new Error( - `Cannot create DIL because compiled query is missing. ${this.compiledQueryPath}` - ); - } - - await qs.cliServer.generateDil(this.compiledQueryPath, this.dilPath); - return this.dilPath; - } - - /** - * Holds if this query already has a completed structured evaluator log - */ - async hasEvalLog(): Promise { - return fs.pathExists(this.evalLogPath); - } - - /** - * Calls the appropriate CLI command to generate a human-readable log summary - * and logs to the Query Server console and query log file. - */ - displayHumanReadableLogSummary(queryInfo: LocalQueryInfo, qs: qsClient.QueryServerClient): void { - queryInfo.evalLogLocation = this.evalLogPath; - void qs.cliServer.generateLogSummary(this.evalLogPath, this.evalLogSummaryPath, this.evalLogEndSummaryPath) - .then(() => { - queryInfo.evalLogSummaryLocation = this.evalLogSummaryPath; - fs.readFile(this.evalLogEndSummaryPath, (err, buffer) => { - if (err) { - throw new Error(`Could not read structured evaluator log end of summary file at ${this.evalLogEndSummaryPath}.`); - } - void qs.logger.log(' --- Evaluator Log Summary --- ', { additionalLogLocation: this.logPath }); - void qs.logger.log(buffer.toString(), { additionalLogLocation: this.logPath }); - }); - }) - .catch(err => { - void showAndLogWarningMessage(`Failed to generate human-readable structured evaluator log summary. Reason: ${err.message}`); - }); - } - - /** - * Creates the CSV file containing the results of this query. This will only be called if the query - * does not have interpreted results and the CSV file does not already exist. - * - * @return Promise if the operation creates the file. Promise if the operation does - * not create the file. - * - * @throws Error if the operation fails. - */ - async exportCsvResults(qs: qsClient.QueryServerClient, csvPath: string): Promise { - const resultSet = await this.chooseResultSet(qs); - if (!resultSet) { - void showAndLogWarningMessage('Query has no result set.'); - return false; - } - let stopDecoding = false; - const out = fs.createWriteStream(csvPath); - - const promise: Promise = new Promise((resolve, reject) => { - out.on('finish', () => resolve(true)); - out.on('error', () => { - if (!stopDecoding) { - stopDecoding = true; - reject(new Error(`Failed to write CSV results to ${csvPath}`)); - } - }); - }); - - let nextOffset: number | undefined = 0; - do { - const chunk: DecodedBqrsChunk = await qs.cliServer.bqrsDecode(this.resultsPaths.resultsPath, resultSet, { - pageSize: 100, - offset: nextOffset, - }); - chunk.tuples.forEach((tuple) => { - out.write(tuple.map((v, i) => - chunk.columns[i].kind === 'String' - ? `"${typeof v === 'string' ? v.replaceAll('"', '""') : v}"` - : v - ).join(',') + '\n'); - }); - nextOffset = chunk.next; - } while (nextOffset && !stopDecoding); - out.end(); - - return promise; - } - - /** - * Choose the name of the result set to run. If the `#select` set exists, use that. Otherwise, - * arbitrarily choose the first set. Most of the time, this will be correct. - * - * If the query has no result sets, then return undefined. - */ - async chooseResultSet(qs: qsClient.QueryServerClient) { - const resultSets = (await qs.cliServer.bqrsInfo(this.resultsPaths.resultsPath, 0))['result-sets']; - if (!resultSets.length) { - return undefined; - } - if (resultSets.find(r => r.name === SELECT_QUERY_NAME)) { - return SELECT_QUERY_NAME; - } - return resultSets[0].name; - } - /** - * Returns the path to the CSV alerts interpretation of this query results. If CSV results have - * not yet been produced, this will return first create the CSV results and then return the path. - * - * This method only works for queries with interpreted results. - */ - async ensureCsvAlerts(qs: qsClient.QueryServerClient, dbm: DatabaseManager): Promise { - if (await this.hasCsv()) { - return this.csvPath; - } - - const dbItem = dbm.findDatabaseItem(Uri.file(this.dbItemPath)); - if (!dbItem) { - throw new Error(`Cannot produce CSV results because database is missing. ${this.dbItemPath}`); - } - - let sourceInfo; - if (dbItem.sourceArchive !== undefined) { - sourceInfo = { - sourceArchive: dbItem.sourceArchive.fsPath, - sourceLocationPrefix: await dbItem.getSourceLocationPrefix( - qs.cliServer - ), - }; - } - - await qs.cliServer.generateResultsCsv(ensureMetadataIsComplete(this.metadata), this.resultsPaths.resultsPath, this.csvPath, sourceInfo); - return this.csvPath; - } - - /** - * Cleans this query's results directory. - */ - async deleteQuery(): Promise { - await fs.remove(this.querySaveDir); - } -} - -export interface QueryWithResults { - readonly query: QueryEvaluationInfo; - readonly result: messages.EvaluationResult; - readonly logFileLocation?: string; - readonly dispose: () => void; -} - -export async function clearCacheInDatabase( - qs: qsClient.QueryServerClient, - dbItem: DatabaseItem, - progress: ProgressCallback, - token: CancellationToken, -): Promise { - if (dbItem.contents === undefined) { - throw new Error('Can\'t clear the cache in an invalid database.'); - } - - const db: messages.Dataset = { - dbDir: dbItem.contents.datasetUri.fsPath, - workingSet: 'default', - }; - - const params: messages.ClearCacheParams = { - dryRun: false, - db, - }; - - return qs.sendRequest(messages.clearCache, params, token, progress); -} - -/** - * @param filePath This needs to be equivalent to Java's `Path.toRealPath(NO_FOLLOW_LINKS)` - */ -async function convertToQlPath(filePath: string): Promise { - if (process.platform === 'win32') { - - if (path.parse(filePath).root === filePath) { - // Java assumes uppercase drive letters are canonical. - return filePath.toUpperCase(); - } else { - const dir = await convertToQlPath(path.dirname(filePath)); - const fileName = path.basename(filePath); - const fileNames = await fs.readdir(dir); - for (const name of fileNames) { - // Leave the locale argument empty so that the default OS locale is used. - // We do this because this operation works on filesystem entities, which - // use the os locale, regardless of the locale of the running VS Code instance. - if (fileName.localeCompare(name, undefined, { sensitivity: 'accent' }) === 0) { - return path.join(dir, name); - } - } - } - throw new Error('Can\'t convert path to form suitable for QL:' + filePath); - } else { - return filePath; - } -} - - - -/** Gets the selected position within the given editor. */ -async function getSelectedPosition(editor: TextEditor, range?: Range): Promise { - const selectedRange = range || editor.selection; - const pos = selectedRange.start; - const posEnd = selectedRange.end; - // Convert from 0-based to 1-based line and column numbers. - return { - fileName: await convertToQlPath(editor.document.fileName), - line: pos.line + 1, - column: pos.character + 1, - endLine: posEnd.line + 1, - endColumn: posEnd.character + 1 - }; -} - -/** - * Compare the dbscheme implied by the query `query` and that of the current database. - * - If they are compatible, do nothing. - * - If they are incompatible but the database can be upgraded, suggest that upgrade. - * - If they are incompatible and the database cannot be upgraded, throw an error. - */ -async function checkDbschemeCompatibility( - cliServer: cli.CodeQLCliServer, - qs: qsClient.QueryServerClient, - query: QueryEvaluationInfo, - qlProgram: messages.QlProgram, - dbItem: DatabaseItem, - progress: ProgressCallback, - token: CancellationToken, -): Promise { - const searchPath = getOnDiskWorkspaceFolders(); - - if (dbItem.contents?.dbSchemeUri !== undefined) { - const { finalDbscheme } = await cliServer.resolveUpgrades(dbItem.contents.dbSchemeUri.fsPath, searchPath, false); - const hash = async function(filename: string): Promise { - return crypto.createHash('sha256').update(await fs.readFile(filename)).digest('hex'); - }; - - // At this point, we have learned about three dbschemes: - - // the dbscheme of the actual database we're querying. - const dbschemeOfDb = await hash(dbItem.contents.dbSchemeUri.fsPath); - - // the dbscheme of the query we're running, including the library we've resolved it to use. - const dbschemeOfLib = await hash(query.queryDbscheme); - - // the database we're able to upgrade to - const upgradableTo = await hash(finalDbscheme); - - if (upgradableTo != dbschemeOfLib) { - reportNoUpgradePath(qlProgram, query); - } - - if (upgradableTo == dbschemeOfLib && - dbschemeOfDb != dbschemeOfLib) { - // Try to upgrade the database - await upgradeDatabaseExplicit( - qs, - dbItem, - progress, - token - ); - } - } -} - -function reportNoUpgradePath(qlProgram: messages.QlProgram, query: QueryEvaluationInfo): void { - throw new Error( - `Query ${qlProgram.queryPath} expects database scheme ${query.queryDbscheme}, but the current database has a different scheme, and no database upgrades are available. The current database scheme may be newer than the CodeQL query libraries in your workspace.\n\nPlease try using a newer version of the query libraries.` - ); -} - -/** - * Compile a non-destructive upgrade. - */ -async function compileNonDestructiveUpgrade( - qs: qsClient.QueryServerClient, - upgradeTemp: tmp.DirectoryResult, - query: QueryEvaluationInfo, - qlProgram: messages.QlProgram, - dbItem: DatabaseItem, - progress: ProgressCallback, - token: CancellationToken, -): Promise { - - if (!dbItem?.contents?.dbSchemeUri) { - throw new Error('Database is invalid, and cannot be upgraded.'); - } - - // When packaging is used, dependencies may exist outside of the workspace and they are always on the resolved search path. - // When packaging is not used, all dependencies are in the workspace. - const upgradesPath = (await qs.cliServer.cliConstraints.supportsPackaging()) - ? qlProgram.libraryPath - : getOnDiskWorkspaceFolders(); - - const { scripts, matchesTarget } = await qs.cliServer.resolveUpgrades( - dbItem.contents.dbSchemeUri.fsPath, - upgradesPath, - true, - query.queryDbscheme - ); - - if (!matchesTarget) { - reportNoUpgradePath(qlProgram, query); - } - const result = await compileDatabaseUpgradeSequence(qs, dbItem, scripts, upgradeTemp, progress, token); - if (result.compiledUpgrade === undefined) { - const error = result.error || '[no error message available]'; - throw new Error(error); - } - // We can upgrade to the actual target - qlProgram.dbschemePath = query.queryDbscheme; - // We are new enough that we will always support single file upgrades. - return result.compiledUpgrade; -} - -/** - * Prompts the user to save `document` if it has unsaved changes. - * - * @param document The document to save. - * - * @returns true if we should save changes and false if we should continue without saving changes. - * @throws UserCancellationException if we should abort whatever operation triggered this prompt - */ -async function promptUserToSaveChanges(document: TextDocument): Promise { - if (document.isDirty) { - if (config.AUTOSAVE_SETTING.getValue()) { - return true; - } - else { - const yesItem = { title: 'Yes', isCloseAffordance: false }; - const alwaysItem = { title: 'Always Save', isCloseAffordance: false }; - const noItem = { title: 'No (run version on disk)', isCloseAffordance: false }; - const cancelItem = { title: 'Cancel', isCloseAffordance: true }; - const message = 'Query file has unsaved changes. Save now?'; - const chosenItem = await window.showInformationMessage( - message, - { modal: true }, - yesItem, alwaysItem, noItem, cancelItem - ); - - if (chosenItem === alwaysItem) { - await config.AUTOSAVE_SETTING.updateValue(true, ConfigurationTarget.Workspace); - return true; - } - - if (chosenItem === yesItem) { - return true; - } - - if (chosenItem === cancelItem) { - throw new UserCancellationException('Query run cancelled.', true); - } - } - } - return false; -} - -/** - * Determines which QL file to run during an invocation of `Run Query` or `Quick Evaluation`, as follows: - * - If the command was called by clicking on a file, then use that file. - * - Otherwise, use the file open in the current editor. - * - In either case, prompt the user to save the file if it is open with unsaved changes. - * - For `Quick Evaluation`, ensure the selected file is also the one open in the editor, - * and use the selected region. - * @param selectedResourceUri The selected resource when the command was run. - * @param quickEval Whether the command being run is `Quick Evaluation`. -*/ -export async function determineSelectedQuery( - selectedResourceUri: Uri | undefined, - quickEval: boolean, - range?: Range -): Promise { - const editor = window.activeTextEditor; - - // Choose which QL file to use. - let queryUri: Uri; - if (selectedResourceUri) { - // A resource was passed to the command handler, so use it. - queryUri = selectedResourceUri; - } else { - // No resource was passed to the command handler, so obtain it from the active editor. - // This usually happens when the command is called from the Command Palette. - if (editor === undefined) { - throw new Error('No query was selected. Please select a query and try again.'); - } else { - queryUri = editor.document.uri; - } - } - - if (queryUri.scheme !== 'file') { - throw new Error('Can only run queries that are on disk.'); - } - const queryPath = queryUri.fsPath; - - if (quickEval) { - if (!(queryPath.endsWith('.ql') || queryPath.endsWith('.qll'))) { - throw new Error('The selected resource is not a CodeQL file; It should have the extension ".ql" or ".qll".'); - } - } else { - if (!(queryPath.endsWith('.ql'))) { - throw new Error('The selected resource is not a CodeQL query file; It should have the extension ".ql".'); - } - } - - // Whether we chose the file from the active editor or from a context menu, - // if the same file is open with unsaved changes in the active editor, - // then prompt the user to save it first. - if (editor !== undefined && editor.document.uri.fsPath === queryPath) { - if (await promptUserToSaveChanges(editor.document)) { - await editor.document.save(); - } - } - - let quickEvalPosition: messages.Position | undefined = undefined; - let quickEvalText: string | undefined = undefined; - if (quickEval) { - if (editor == undefined) { - throw new Error('Can\'t run quick evaluation without an active editor.'); - } - if (editor.document.fileName !== queryPath) { - // For Quick Evaluation we expect these to be the same. - // Report an error if we end up in this (hopefully unlikely) situation. - throw new Error('The selected resource for quick evaluation should match the active editor.'); - } - quickEvalPosition = await getSelectedPosition(editor, range); - if (!editor.selection?.isEmpty) { - quickEvalText = editor.document.getText(editor.selection); - } else { - // capture the entire line if the user didn't select anything - const line = editor.document.lineAt(editor.selection.active.line); - quickEvalText = line.text.trim(); - } - } - - return { queryPath, quickEvalPosition, quickEvalText }; -} - -export async function compileAndRunQueryAgainstDatabase( - cliServer: cli.CodeQLCliServer, - qs: qsClient.QueryServerClient, - dbItem: DatabaseItem, - initialInfo: InitialQueryInfo, - queryStorageDir: string, - progress: ProgressCallback, - token: CancellationToken, - templates?: messages.TemplateDefinitions, - queryInfo?: LocalQueryInfo, // May be omitted for queries not initiated by the user. If omitted we won't create a structured log for the query. -): Promise { - if (!dbItem.contents || !dbItem.contents.dbSchemeUri) { - throw new Error(`Database ${dbItem.databaseUri} does not have a CodeQL database scheme.`); - } - - // Get the workspace folder paths. - const diskWorkspaceFolders = getOnDiskWorkspaceFolders(); - // Figure out the library path for the query. - const packConfig = await cliServer.resolveLibraryPath(diskWorkspaceFolders, initialInfo.queryPath); - - if (!packConfig.dbscheme) { - throw new Error('Could not find a database scheme for this query. Please check that you have a valid qlpack.yml file for this query, which refers to a database scheme either in the `dbscheme` field or through one of its dependencies.'); - } - - // Check whether the query has an entirely different schema from the - // database. (Queries that merely need the database to be upgraded - // won't trigger this check) - // This test will produce confusing results if we ever change the name of the database schema files. - const querySchemaName = path.basename(packConfig.dbscheme); - const dbSchemaName = path.basename(dbItem.contents.dbSchemeUri.fsPath); - if (querySchemaName != dbSchemaName) { - void logger.log(`Query schema was ${querySchemaName}, but database schema was ${dbSchemaName}.`); - throw new Error(`The query ${path.basename(initialInfo.queryPath)} cannot be run against the selected database (${dbItem.name}): their target languages are different. Please select a different database and try again.`); - } - - const qlProgram: messages.QlProgram = { - // The project of the current document determines which library path - // we use. The `libraryPath` field in this server message is relative - // to the workspace root, not to the project root. - libraryPath: packConfig.libraryPath, - // Since we are compiling and running a query against a database, - // we use the database's DB scheme here instead of the DB scheme - // from the current document's project. - dbschemePath: dbItem.contents.dbSchemeUri.fsPath, - queryPath: initialInfo.queryPath - }; - - // Read the query metadata if possible, to use in the UI. - const metadata = await tryGetQueryMetadata(cliServer, qlProgram.queryPath); - - let availableMlModels: cli.MlModelInfo[] = []; - if (!await cliServer.cliConstraints.supportsResolveMlModels()) { - void logger.log('Resolving ML models is unsupported by this version of the CLI. Running the query without any ML models.'); - } else { - try { - availableMlModels = (await cliServer.resolveMlModels(diskWorkspaceFolders, initialInfo.queryPath)).models; - if (availableMlModels.length) { - void logger.log(`Found available ML models at the following paths: ${availableMlModels.map(x => `'${x.path}'`).join(', ')}.`); - } else { - void logger.log('Did not find any available ML models.'); - } - } catch (e) { - const message = `Couldn't resolve available ML models for ${qlProgram.queryPath}. Running the ` + - `query without any ML models: ${e}.`; - void showAndLogErrorMessage(message); - } - } - - const hasMetadataFile = (await dbItem.hasMetadataFile()); - const query = new QueryEvaluationInfo( - path.join(queryStorageDir, initialInfo.id), - dbItem.databaseUri.fsPath, - hasMetadataFile, - packConfig.dbscheme, - initialInfo.quickEvalPosition, - metadata, - templates - ); - await query.createTimestampFile(); - - let upgradeDir: tmp.DirectoryResult | undefined; - try { - let upgradeQlo; - if (await hasNondestructiveUpgradeCapabilities(qs)) { - upgradeDir = await tmp.dir({ dir: upgradesTmpDir, unsafeCleanup: true }); - upgradeQlo = await compileNonDestructiveUpgrade(qs, upgradeDir, query, qlProgram, dbItem, progress, token); - } else { - await checkDbschemeCompatibility(cliServer, qs, query, qlProgram, dbItem, progress, token); - } - let errors; - try { - errors = await query.compile(qs, qlProgram, progress, token); - } catch (e) { - if (e instanceof ResponseError && e.code == ErrorCodes.RequestCancelled) { - return createSyntheticResult(query, 'Query cancelled', messages.QueryResultType.CANCELLATION); - } else { - throw e; - } - } - - if (errors.length === 0) { - const result = await query.run(qs, upgradeQlo, availableMlModels, dbItem, progress, token, queryInfo); - if (result.resultType !== messages.QueryResultType.SUCCESS) { - const message = result.message || 'Failed to run query'; - void logger.log(message); - void showAndLogErrorMessage(message); - } - return { - query, - result, - logFileLocation: result.logFileLocation, - dispose: () => { - qs.logger.removeAdditionalLogLocation(result.logFileLocation); - } - }; - } else { - // Error dialogs are limited in size and scrollability, - // so we include a general description of the problem, - // and direct the user to the output window for the detailed compilation messages. - // However we don't show quick eval errors there so we need to display them anyway. - void qs.logger.log( - `Failed to compile query ${initialInfo.queryPath} against database scheme ${qlProgram.dbschemePath}:`, - { additionalLogLocation: query.logPath } - ); - - const formattedMessages: string[] = []; - - for (const error of errors) { - const message = error.message || '[no error message available]'; - const formatted = `ERROR: ${message} (${error.position.fileName}:${error.position.line}:${error.position.column}:${error.position.endLine}:${error.position.endColumn})`; - formattedMessages.push(formatted); - void qs.logger.log(formatted, { additionalLogLocation: query.logPath }); - } - if (initialInfo.isQuickEval && formattedMessages.length <= 2) { - // If there are more than 2 error messages, they will not be displayed well in a popup - // and will be trimmed by the function displaying the error popup. Accordingly, we only - // try to show the errors if there are 2 or less, otherwise we direct the user to the log. - void showAndLogErrorMessage('Quick evaluation compilation failed: ' + formattedMessages.join('\n')); - } else { - void showAndLogErrorMessage((initialInfo.isQuickEval ? 'Quick evaluation' : 'Query') + compilationFailedErrorTail); - } - - return createSyntheticResult(query, 'Query had compilation errors', messages.QueryResultType.OTHER_ERROR); - } - } finally { - try { - await upgradeDir?.cleanup(); - } catch (e) { - void qs.logger.log( - `Could not clean up the upgrades dir. Reason: ${getErrorMessage(e)}`, - { additionalLogLocation: query.logPath } - ); - } - } -} - -/** - * Determines the initial information for a query. This is everything of interest - * we know about this query that is available before it is run. - * - * @param selectedQueryUri The Uri of the document containing the query to be run. - * @param databaseInfo The database to run the query against. - * @param isQuickEval true if this is a quick evaluation. - * @param range the selection range of the query to be run. Only used if isQuickEval is true. - * @returns The initial information for the query to be run. - */ -export async function createInitialQueryInfo( - selectedQueryUri: Uri | undefined, - databaseInfo: DatabaseInfo, - isQuickEval: boolean, - range?: Range -): Promise { - // Determine which query to run, based on the selection and the active editor. - const { queryPath, quickEvalPosition, quickEvalText } = await determineSelectedQuery(selectedQueryUri, isQuickEval, range); - - return { - queryPath, - isQuickEval, - isQuickQuery: isQuickQueryPath(queryPath), - databaseInfo, - id: `${path.basename(queryPath)}-${nanoid()}`, - start: new Date(), - ... (isQuickEval ? { - queryText: quickEvalText!, // if this query is quick eval, it must have quick eval text - quickEvalPosition: quickEvalPosition - } : { - queryText: await fs.readFile(queryPath, 'utf8') - }) - }; -} - - -const compilationFailedErrorTail = ' compilation failed. Please make sure there are no errors in the query, the database is up to date,' + - ' and the query and database use the same target language. For more details on the error, go to View > Output,' + - ' and choose CodeQL Query Server from the dropdown.'; - -/** - * Create a synthetic result for a query that failed to compile. - */ -function createSyntheticResult( - query: QueryEvaluationInfo, - message: string, - resultType: number -): QueryWithResults { - return { - query, - result: { - evaluationTime: 0, - resultType: resultType, - queryId: -1, - runId: -1, - message - }, - dispose: () => { /**/ }, - }; -} diff --git a/extensions/ql-vscode/src/sarif-parser.ts b/extensions/ql-vscode/src/sarif-parser.ts deleted file mode 100644 index c08d93c5ef2..00000000000 --- a/extensions/ql-vscode/src/sarif-parser.ts +++ /dev/null @@ -1,49 +0,0 @@ -import * as Sarif from 'sarif'; -import * as fs from 'fs-extra'; -import { parser } from 'stream-json'; -import { pick } from 'stream-json/filters/Pick'; -import Assembler = require('stream-json/Assembler'); -import { chain } from 'stream-chain'; -import { getErrorMessage } from './pure/helpers-pure'; - -const DUMMY_TOOL: Sarif.Tool = { driver: { name: '' } }; - -export async function sarifParser(interpretedResultsPath: string): Promise { - try { - // Parse the SARIF file into token streams, filtering out only the results array. - const p = parser(); - const pipeline = chain([ - fs.createReadStream(interpretedResultsPath), - p, - pick({ filter: 'runs.0.results' }) - ]); - - // Creates JavaScript objects from the token stream - const asm = Assembler.connectTo(pipeline); - - // Returns a constructed Log object with the results or an empty array if no results were found. - // If the parser fails for any reason, it will reject the promise. - return await new Promise((resolve, reject) => { - pipeline.on('error', (error) => { - reject(error); - }); - - asm.on('done', (asm) => { - - const log: Sarif.Log = { - version: '2.1.0', - runs: [ - { - tool: DUMMY_TOOL, - results: asm.current ?? [] - } - ] - }; - - resolve(log); - }); - }); - } catch (e) { - throw new Error(`Parsing output of interpretation failed: ${(e as any).stderr || getErrorMessage(e)}`); - } -} diff --git a/extensions/ql-vscode/src/status-bar.ts b/extensions/ql-vscode/src/status-bar.ts index 6441b96ebfb..66b7d2270c3 100644 --- a/extensions/ql-vscode/src/status-bar.ts +++ b/extensions/ql-vscode/src/status-bar.ts @@ -1,7 +1,9 @@ -import { ConfigurationChangeEvent, StatusBarAlignment, StatusBarItem, window, workspace } from 'vscode'; -import { CodeQLCliServer } from './cli'; -import { CANARY_FEATURES, CUSTOM_CODEQL_PATH_SETTING, DistributionConfigListener } from './config'; -import { DisposableObject } from './pure/disposable-object'; +import type { ConfigurationChangeEvent, StatusBarItem } from "vscode"; +import { StatusBarAlignment, window, workspace } from "vscode"; +import type { CodeQLCliServer } from "./codeql-cli/cli"; +import type { DistributionConfigListener } from "./config"; +import { CANARY_FEATURES, CUSTOM_CODEQL_PATH_SETTING } from "./config"; +import { DisposableObject } from "./common/disposable-object"; /** * Creates and manages a status bar item for codeql. THis item contains @@ -10,16 +12,27 @@ import { DisposableObject } from './pure/disposable-object'; * */ export class CodeQlStatusBarHandler extends DisposableObject { - private readonly item: StatusBarItem; - constructor(private cli: CodeQLCliServer, distributionConfigListener: DistributionConfigListener) { + constructor( + private cli: CodeQLCliServer, + distributionConfigListener: DistributionConfigListener, + ) { super(); this.item = window.createStatusBarItem(StatusBarAlignment.Right); this.push(this.item); - this.push(workspace.onDidChangeConfiguration(this.handleDidChangeConfiguration, this)); - this.push(distributionConfigListener.onDidChangeConfiguration(() => this.updateStatusItem())); - this.item.command = 'codeQL.copyVersion'; + this.push( + workspace.onDidChangeConfiguration( + this.handleDidChangeConfiguration, + this, + ), + ); + this.push( + distributionConfigListener.onDidChangeConfiguration(() => + this.updateStatusItem(), + ), + ); + this.item.command = "codeQL.copyVersion"; void this.updateStatusItem(); } @@ -36,13 +49,13 @@ export class CodeQlStatusBarHandler extends DisposableObject { } private async updateStatusItem() { - const canary = CANARY_FEATURES.getValue() ? ' (Canary)' : ''; + const canary = CANARY_FEATURES.getValue() ? " (Canary)" : ""; // since getting the version may take a few seconds, initialize with some // meaningful text. this.item.text = `CodeQL${canary}`; const version = await this.cli.getVersion(); - this.item.text = `CodeQL CLI v${version}${canary}`; + this.item.text = `CodeQL CLI v${version.toString()}${canary}`; this.item.show(); } } diff --git a/extensions/ql-vscode/src/stories/Overview.mdx b/extensions/ql-vscode/src/stories/Overview.mdx new file mode 100644 index 00000000000..21e77556879 --- /dev/null +++ b/extensions/ql-vscode/src/stories/Overview.mdx @@ -0,0 +1,66 @@ +import { Meta } from '@storybook/addon-docs/blocks'; + +import iframeImage from './images/update-css-variables-iframe.png'; +import stylesImage from './images/update-css-variables-styles.png'; +import bodyImage from './images/update-css-variables-body.png'; + + + +Welcome to the Storybook for **CodeQL for Visual Studio Code**! This Storybook contains stories for components and pages in the extension. + +### Switching themes + +To switch between VSCode Dark+ and Light+ themes, use the button in the toolbar. This will not work on this document, so you'll only see +the changes applied to a different story. + +### Writing stories + +To create new stories, copy an existing story in the `src/stories` directory and modify it to use your component or page. Please note that +you are not able to access any VSCode specific APIs or receive messages from VSCode so an ideal component would use generic props. The +`vscode.postMessage` API is mocked but no message will be sent. + +You are able to use all VSCode CSS variables; these are injected into the Storybook preview. However, only the Dark+ theme is supported. It +is currently not possible to preview your component in another theme. + +For more information about how to write stories and how to add controls, please see the +[Storybook documentation](https://storybook.js.org/docs/react/writing-stories/introduction). + +### WebView UI Toolkit + +As much as possible, we try to make use of the [WebView UI Toolkit](https://github.com/microsoft/vscode-webview-ui-toolkit): See the +[WebView UI Toolkit Storybook here](https://microsoft.github.io/vscode-webview-ui-toolkit/). + +### Updating VSCode CSS variables + +The VSCode CSS variables that are injected into the Storybook preview are defined in the `src/stories/vscode-theme-dark.css` file. They need to be +updated manually if new variables are added to VSCode. It can also be updated if you would like to manually preview a different theme. To update +these variables, follow these steps: + +1. Make sure you have selected the correct theme. If you want to use a variable which is currently not available and will be committed, please + select the **Dark+** theme. You can use **Preferences: Color Theme** in the *Command Palette* to select the theme. + +2. Open a WebView in VSCode (for example the results of a query) + +3. Open the *Command Palette* (Ctrl/Cmd+Shift+P) + +4. Select **Developer: Open WebView Developer Tools** + +5. Now, you will need to find the `` element in the lowest-level `